From fda714cfc71b654b66db8375521abb5afdbf85ed Mon Sep 17 00:00:00 2001 From: Shiva Prasad Date: Mon, 11 Nov 2024 16:39:43 +1300 Subject: [PATCH 01/41] merge https://github.com/simPRO-Software/stripe/commit/e49f34b2de709bb6f3ed426ffa3ad1b12267a5e3 --- demo/angular/android/app/build.gradle | 13 + demo/angular/android/build.gradle | 2 + demo/angular/android/variables.gradle | 1 + demo/angular/angular.json | 6 +- .../src/app/terminal/happyPathItems.ts | 4 + .../angular/src/app/terminal/terminal.page.ts | 518 +++++++++--------- packages/terminal/README.md | 3 +- packages/terminal/android/build.gradle | 6 +- .../stripe/terminal/StripeTerminal.java | 113 ++-- .../stripe/terminal/StripeTerminalPlugin.java | 2 +- .../stripe/terminal/TerminalEvent.kt | 1 + .../terminal/helper/TerminalMappers.java | 6 +- .../terminal/ios/Plugin/TerminalEvents.swift | 1 + .../simPRO-Software-stripe-terminal-6.2.2.tgz | Bin 0 -> 81954 bytes packages/terminal/src/events.enum.ts | 1 + packages/terminal/src/stripe.enum.ts | 4 +- 16 files changed, 382 insertions(+), 299 deletions(-) create mode 100644 packages/terminal/simPRO-Software-stripe-terminal-6.2.2.tgz diff --git a/demo/angular/android/app/build.gradle b/demo/angular/android/app/build.gradle index 9b9521627..158afc43f 100644 --- a/demo/angular/android/app/build.gradle +++ b/demo/angular/android/app/build.gradle @@ -1,4 +1,6 @@ apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-kapt' android { namespace "io.ionic.starter" @@ -32,6 +34,7 @@ repositories { flatDir{ dirs '../capacitor-cordova-android-plugins/src/main/libs', 'libs' } + maven { url 'https://jitpack.io' } } dependencies { @@ -44,6 +47,16 @@ dependencies { androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion" androidTestImplementation "androidx.test.espresso:espresso-core:$androidxEspressoCoreVersion" implementation project(':capacitor-cordova-android-plugins') + constraints { + implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0") { + because("kotlin-stdlib-jdk7 is now a part of kotlin-stdlib") + } + implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0") { + because("kotlin-stdlib-jdk8 is now a part of kotlin-stdlib") + } + } + implementation "androidx.core:core-ktx:1.6.0" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" } apply from: 'capacitor.build.gradle' diff --git a/demo/angular/android/build.gradle b/demo/angular/android/build.gradle index 9e2661719..7eee4c63c 100644 --- a/demo/angular/android/build.gradle +++ b/demo/angular/android/build.gradle @@ -1,6 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { + ext.kotlin_version = '1.8.10' repositories { google() @@ -9,6 +10,7 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:8.2.1' classpath 'com.google.gms:google-services:4.4.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/demo/angular/android/variables.gradle b/demo/angular/android/variables.gradle index 9c1bbf52e..75d97a49b 100644 --- a/demo/angular/android/variables.gradle +++ b/demo/angular/android/variables.gradle @@ -13,6 +13,7 @@ ext { androidxJunitVersion = '1.1.5' androidxEspressoCoreVersion = '3.5.1' cordovaAndroidVersion = '10.1.1' + kotlin_version= '1.8.10' // If you use @capacitor-community/stripe: // stripeAndroidVersion = '20.39.+' diff --git a/demo/angular/angular.json b/demo/angular/angular.json index b69fdd02c..7fa7abe5b 100644 --- a/demo/angular/angular.json +++ b/demo/angular/angular.json @@ -52,7 +52,11 @@ "with": "src/environments/environment.prod.ts" } ], - "outputHashing": "all" + "outputHashing": "all", + "optimization": false, + "extractLicenses": false, + "sourceMap": true, + "namedChunks": true }, "development": { "optimization": false, diff --git a/demo/angular/src/app/terminal/happyPathItems.ts b/demo/angular/src/app/terminal/happyPathItems.ts index 88d69f7f5..598e7d7ac 100644 --- a/demo/angular/src/app/terminal/happyPathItems.ts +++ b/demo/angular/src/app/terminal/happyPathItems.ts @@ -71,6 +71,10 @@ export const happyPathBluetoothItems: ITestItems[] = [ type: 'method', name: 'discoverReaders', }, + { + type: 'event', + name: TerminalEventsEnum.DiscoveringReaders, + }, { type: 'event', name: TerminalEventsEnum.DiscoveredReaders, diff --git a/demo/angular/src/app/terminal/terminal.page.ts b/demo/angular/src/app/terminal/terminal.page.ts index 3f902fc95..3dfac97fa 100644 --- a/demo/angular/src/app/terminal/terminal.page.ts +++ b/demo/angular/src/app/terminal/terminal.page.ts @@ -105,117 +105,121 @@ export class TerminalPage { throw e; }); - await this.helper.updateItem( - this.eventItems, - 'discoverReaders', - result.readers.length > 0, - ); - - const selectedReader = - result.readers.length === 1 - ? result.readers[0] - : await this.alertFilterReaders(result.readers); - console.log(selectedReader); - if (!selectedReader) { - alert('No reader selected'); - return; - } - - await StripeTerminal.connectReader({ - reader: selectedReader, - }).catch((e) => { - alert(e); - this.helper.updateItem(this.eventItems, 'connectReader', false); - throw e; - }); - await this.helper.updateItem(this.eventItems, 'connectReader', true); - - const { paymentIntent } = await firstValueFrom( - this.http.post<{ - paymentIntent: string; - }>(environment.api + 'connection/intent', {}), - ).catch(async (e) => { - await this.helper.updateItem( - this.eventItems, - 'HttpClientPaymentIntent', - false, - ); - throw e; - }); - await this.helper.updateItem( - this.eventItems, - 'HttpClientPaymentIntent', - true, - ); - - if (readerType === TerminalConnectTypes.Internet) { - await StripeTerminal.setReaderDisplay({ - currency: 'usd', - tax: 0, - total: 1000, - lineItems: [{ - displayName: 'winecode', - quantity: 2, - amount: 500 - }] as CartLineItem[], - }) - - await new Promise((resolve) => setTimeout(resolve, 2000)); - - await StripeTerminal.clearReaderDisplay(); - } - - + const listnerHandler = await StripeTerminal.addListener(TerminalEventsEnum.DiscoveredReaders, async ({ readers }) => { + if (readers?.length > 0) { + const result = { readers }; + await this.helper.updateItem(this.eventItems, 'discoverReaders', true); + + this.listenerHandlers.push(listnerHandler); + + const selectedReader = + result.readers?.length === 1 + ? result.readers[0] + : await this.alertFilterReaders(result.readers); + console.log(selectedReader); + if (!selectedReader) { + alert('No reader selected'); + return; + } + + await StripeTerminal.connectReader({ + reader: selectedReader, + }).catch((e) => { + alert(e); + this.helper.updateItem(this.eventItems, 'connectReader', false); + throw e; + }); + await this.helper.updateItem(this.eventItems, 'connectReader', true); - if (type === 'cancelPath') { - // During Collect, cancel the payment - StripeTerminal.collectPaymentMethod({ paymentIntent }) - .catch(async (e) => { + const { paymentIntent } = await firstValueFrom( + this.http.post<{ + paymentIntent: string; + }>(environment.api + 'connection/intent', {}), + ).catch(async (e) => { await this.helper.updateItem( this.eventItems, - 'collectPaymentMethod', + 'HttpClientPaymentIntent', false, ); throw e; }); - await this.helper.updateItem(this.eventItems, 'collectPaymentMethod', true); - await new Promise((resolve) => setTimeout(resolve, 2000)); - await StripeTerminal.cancelCollectPaymentMethod().catch(async (e) => { await this.helper.updateItem( this.eventItems, - 'cancelCollectPaymentMethod', - false, + 'HttpClientPaymentIntent', + true, ); - throw e; - }); - await this.helper.updateItem( - this.eventItems, - 'cancelCollectPaymentMethod', - true, - ); - } else { - await StripeTerminal.collectPaymentMethod({ paymentIntent }) - .then(() => - this.helper.updateItem(this.eventItems, 'collectPaymentMethod', true), - ) - .catch(async (e) => { + + if (readerType === TerminalConnectTypes.Internet) { + await StripeTerminal.setReaderDisplay({ + currency: 'usd', + tax: 0, + total: 1000, + lineItems: [{ + displayName: 'winecode', + quantity: 2, + amount: 500 + }] as CartLineItem[], + }) + + await new Promise((resolve) => setTimeout(resolve, 2000)); + + await StripeTerminal.clearReaderDisplay(); + } + + + + if (type === 'cancelPath') { + // During Collect, cancel the payment + StripeTerminal.collectPaymentMethod({ paymentIntent }) + .catch(async (e) => { + await this.helper.updateItem( + this.eventItems, + 'collectPaymentMethod', + false, + ); + throw e; + }); + await this.helper.updateItem(this.eventItems, 'collectPaymentMethod', true); + await new Promise((resolve) => setTimeout(resolve, 2000)); + await StripeTerminal.cancelCollectPaymentMethod().catch(async (e) => { + await this.helper.updateItem( + this.eventItems, + 'cancelCollectPaymentMethod', + false, + ); + throw e; + }); await this.helper.updateItem( this.eventItems, - 'collectPaymentMethod', - false, + 'cancelCollectPaymentMethod', + true, ); - throw e; - }); - await StripeTerminal.confirmPaymentIntent(); - await this.helper.updateItem( - this.eventItems, - 'confirmPaymentIntent', - true, - ); - } + } else { + await StripeTerminal.collectPaymentMethod({ paymentIntent }) + .then(() => + this.helper.updateItem(this.eventItems, 'collectPaymentMethod', true), + ) + .catch(async (e) => { + await this.helper.updateItem( + this.eventItems, + 'collectPaymentMethod', + false, + ); + throw e; + }); + await StripeTerminal.confirmPaymentIntent(); + await this.helper.updateItem( + this.eventItems, + 'confirmPaymentIntent', + true, + ); + } + + await StripeTerminal.disconnectReader(); + this.listenerHandlers.forEach((handler) => handler.remove()); + } + }); - await StripeTerminal.disconnectReader(); - this.listenerHandlers.forEach((handler) => handler.remove()); } async checkUpdateDeviceUpdate(readerType: TerminalConnectTypes = TerminalConnectTypes.Bluetooth) { @@ -234,79 +238,82 @@ export class TerminalPage { throw e; }); - await this.helper.updateItem( - this.eventItems, - 'discoverReaders', - result.readers.length > 0, - ); - - const selectedReader = - result.readers.length === 1 - ? result.readers[0] - : await this.alertFilterReaders(result.readers); - console.log(selectedReader); - if (!selectedReader) { - alert('No reader selected'); - return; - } - - await StripeTerminal.connectReader({ - reader: selectedReader, - }).catch((e) => { - alert(e); - this.helper.updateItem(this.eventItems, 'connectReader', false); - throw e; - }); - await this.helper.updateItem(this.eventItems, 'connectReader', true); + const listnerHandler = await StripeTerminal.addListener(TerminalEventsEnum.DiscoveredReaders, async ({ readers }) => { + if (readers?.length > 0) { + const result = { readers }; + await this.helper.updateItem(this.eventItems, 'discoverReaders', true); + + this.listenerHandlers.push(listnerHandler); + + const selectedReader = + result.readers?.length === 1 + ? result.readers[0] + : await this.alertFilterReaders(result.readers); + console.log(selectedReader); + if (!selectedReader) { + alert('No reader selected'); + return; + } + + await StripeTerminal.connectReader({ + reader: selectedReader, + }).catch((e) => { + alert(e); + this.helper.updateItem(this.eventItems, 'connectReader', false); + throw e; + }); + await this.helper.updateItem(this.eventItems, 'connectReader', true); - await StripeTerminal.installAvailableUpdate() - .then(() => this.helper.updateItem(this.eventItems, 'installAvailableUpdate', true)); + await StripeTerminal.installAvailableUpdate() + .then(() => this.helper.updateItem(this.eventItems, 'installAvailableUpdate', true)); - await new Promise((resolve) => setTimeout(resolve, 2000)); + await new Promise((resolve) => setTimeout(resolve, 2000)); - await StripeTerminal.cancelInstallUpdate() - .then(() => this.helper.updateItem(this.eventItems, 'cancelInstallUpdate', true)); + await StripeTerminal.cancelInstallUpdate() + .then(() => this.helper.updateItem(this.eventItems, 'cancelInstallUpdate', true)); - // await new Promise((resolve) => setTimeout(resolve, 5000)); + // await new Promise((resolve) => setTimeout(resolve, 5000)); - const { paymentIntent } = await firstValueFrom( - this.http.post<{ - paymentIntent: string; - }>(environment.api + 'connection/intent', {}), - ).catch(async (e) => { - await this.helper.updateItem( - this.eventItems, - 'HttpClientPaymentIntent', - false, - ); - throw e; - }); - await this.helper.updateItem( - this.eventItems, - 'HttpClientPaymentIntent', - true, - ); - - await StripeTerminal.collectPaymentMethod({ paymentIntent }) - .then(() => - this.helper.updateItem(this.eventItems, 'collectPaymentMethod', true), - ) - .catch(async (e) => { + const { paymentIntent } = await firstValueFrom( + this.http.post<{ + paymentIntent: string; + }>(environment.api + 'connection/intent', {}), + ).catch(async (e) => { + await this.helper.updateItem( + this.eventItems, + 'HttpClientPaymentIntent', + false, + ); + throw e; + }); await this.helper.updateItem( this.eventItems, - 'collectPaymentMethod', - false, + 'HttpClientPaymentIntent', + true, ); - throw e; - }); - await StripeTerminal.disconnectReader().catch((e) => { - this.helper.updateItem(this.eventItems, 'disconnectReader', false); - throw e; - }); - await this.helper.updateItem(this.eventItems, 'disconnectReader', true); + await StripeTerminal.collectPaymentMethod({ paymentIntent }) + .then(() => + this.helper.updateItem(this.eventItems, 'collectPaymentMethod', true), + ) + .catch(async (e) => { + await this.helper.updateItem( + this.eventItems, + 'collectPaymentMethod', + false, + ); + throw e; + }); + + await StripeTerminal.disconnectReader().catch((e) => { + this.helper.updateItem(this.eventItems, 'disconnectReader', false); + throw e; + }); + await this.helper.updateItem(this.eventItems, 'disconnectReader', true); - this.listenerHandlers.forEach((handler) => handler.remove()); + this.listenerHandlers.forEach((handler) => handler.remove()); + } + }); } async checkUpdateDeviceRequired(readerType: TerminalConnectTypes = TerminalConnectTypes.Bluetooth) { @@ -325,71 +332,74 @@ export class TerminalPage { throw e; }); - await this.helper.updateItem( - this.eventItems, - 'discoverReaders', - result.readers.length > 0, - ); - - const selectedReader = - result.readers.length === 1 - ? result.readers[0] - : await this.alertFilterReaders(result.readers); - console.log(selectedReader); - if (!selectedReader) { - alert('No reader selected'); - return; - } + const listnerHandler = await StripeTerminal.addListener(TerminalEventsEnum.DiscoveredReaders, async ({ readers }) => { + if (readers?.length > 0) { + const result = { readers }; + await this.helper.updateItem(this.eventItems, 'discoverReaders', true); + + this.listenerHandlers.push(listnerHandler); + + const selectedReader = + result.readers?.length === 1 + ? result.readers[0] + : await this.alertFilterReaders(result.readers); + console.log(selectedReader); + if (!selectedReader) { + alert('No reader selected'); + return; + } + + await StripeTerminal.connectReader({ + reader: selectedReader, + }).catch((e) => { + alert(e); + this.helper.updateItem(this.eventItems, 'connectReader', false); + throw e; + }); + await this.helper.updateItem(this.eventItems, 'connectReader', true); - await StripeTerminal.connectReader({ - reader: selectedReader, - }).catch((e) => { - alert(e); - this.helper.updateItem(this.eventItems, 'connectReader', false); - throw e; - }); - await this.helper.updateItem(this.eventItems, 'connectReader', true); - - // await new Promise((resolve) => setTimeout(resolve, 5000)); - - const { paymentIntent } = await firstValueFrom( - this.http.post<{ - paymentIntent: string; - }>(environment.api + 'connection/intent', {}), - ).catch(async (e) => { - await this.helper.updateItem( - this.eventItems, - 'HttpClientPaymentIntent', - false, - ); - throw e; - }); - await this.helper.updateItem( - this.eventItems, - 'HttpClientPaymentIntent', - true, - ); + // await new Promise((resolve) => setTimeout(resolve, 5000)); - await StripeTerminal.collectPaymentMethod({ paymentIntent }) - .then(() => - this.helper.updateItem(this.eventItems, 'collectPaymentMethod', true), - ) - .catch(async (e) => { + const { paymentIntent } = await firstValueFrom( + this.http.post<{ + paymentIntent: string; + }>(environment.api + 'connection/intent', {}), + ).catch(async (e) => { + await this.helper.updateItem( + this.eventItems, + 'HttpClientPaymentIntent', + false, + ); + throw e; + }); await this.helper.updateItem( this.eventItems, - 'collectPaymentMethod', - false, + 'HttpClientPaymentIntent', + true, ); - throw e; - }); - await StripeTerminal.disconnectReader().catch((e) => { - this.helper.updateItem(this.eventItems, 'disconnectReader', false); - throw e; - }); - await this.helper.updateItem(this.eventItems, 'disconnectReader', true); + await StripeTerminal.collectPaymentMethod({ paymentIntent }) + .then(() => + this.helper.updateItem(this.eventItems, 'collectPaymentMethod', true), + ) + .catch(async (e) => { + await this.helper.updateItem( + this.eventItems, + 'collectPaymentMethod', + false, + ); + throw e; + }); + + await StripeTerminal.disconnectReader().catch((e) => { + this.helper.updateItem(this.eventItems, 'disconnectReader', false); + throw e; + }); + await this.helper.updateItem(this.eventItems, 'disconnectReader', true); - this.listenerHandlers.forEach((handler) => handler.remove()); + this.listenerHandlers.forEach((handler) => handler.remove()); + } + }) } async checkDiscoverMethod() { @@ -406,44 +416,52 @@ export class TerminalPage { await this.helper.updateItem( this.eventItems, 'discoverReaders', - result.readers.length > 0, + result.readers?.length > 0, ); - const selectedReader = - result.readers.length === 1 - ? result.readers[0] - : await this.alertFilterReaders(result.readers); - if (!selectedReader) { - alert('No reader selected'); - return; - } + const listenerHandler = await StripeTerminal.addListener(TerminalEventsEnum.DiscoveredReaders, async ({ readers }) => { + console.log('discoveredReaders Lisener', readers); + if (readers?.length > 0) { + this.listenerHandlers.push(listenerHandler); + + const selectedReader = + result.readers?.length === 1 + ? result.readers[0] + : await this.alertFilterReaders(result.readers); + if (!selectedReader) { + alert('No reader selected'); + return; + } + + await StripeTerminal.connectReader({ + reader: selectedReader, + }).catch((e) => { + alert(e); + this.helper.updateItem(this.eventItems, 'connectReader', false); + throw e; + }); + await this.helper.updateItem(this.eventItems, 'connectReader', true); - await StripeTerminal.connectReader({ - reader: selectedReader, - }).catch((e) => { - alert(e); - this.helper.updateItem(this.eventItems, 'connectReader', false); - throw e; - }); - await this.helper.updateItem(this.eventItems, 'connectReader', true); + const { reader } = await StripeTerminal.getConnectedReader().catch((e) => { + this.helper.updateItem(this.eventItems, 'getConnectedReader', false); + throw e; + }); + await this.helper.updateItem( + this.eventItems, + 'getConnectedReader', + reader !== null, + ); - const { reader } = await StripeTerminal.getConnectedReader().catch((e) => { - this.helper.updateItem(this.eventItems, 'getConnectedReader', false); - throw e; - }); - await this.helper.updateItem( - this.eventItems, - 'getConnectedReader', - reader !== null, - ); + await StripeTerminal.disconnectReader().catch((e) => { + this.helper.updateItem(this.eventItems, 'disconnectReader', false); + throw e; + }); + await this.helper.updateItem(this.eventItems, 'disconnectReader', true); - await StripeTerminal.disconnectReader().catch((e) => { - this.helper.updateItem(this.eventItems, 'disconnectReader', false); - throw e; - }); - await this.helper.updateItem(this.eventItems, 'disconnectReader', true); + this.listenerHandlers.forEach((handler) => handler.remove()); - this.listenerHandlers.forEach((handler) => handler.remove()); + } + }); } private alertFilterReaders( diff --git a/packages/terminal/README.md b/packages/terminal/README.md index 1221def82..d62865316 100644 --- a/packages/terminal/README.md +++ b/packages/terminal/README.md @@ -995,7 +995,7 @@ addListener(eventName: TerminalEventsEnum.ReaderReconnectFailed, listenerFunc: ( | Members | Value | | ---------------------- | ------------------------------- | -| **`cotsDevice`** | 'cotsDevice' | +| **`tapToPayDevice`** | 'tapToPayDevice' | | **`wisePad3s`** | 'wisePad3s' | | **`appleBuiltIn`** | 'appleBuiltIn' | | **`chipper1X`** | 'chipper1X' | @@ -1075,6 +1075,7 @@ addListener(eventName: TerminalEventsEnum.ReaderReconnectFailed, listenerFunc: ( | ---------------------------------- | --------------------------------------------------- | | **`Loaded`** | 'terminalLoaded' | | **`DiscoveredReaders`** | 'terminalDiscoveredReaders' | +| **`DiscoveringReaders`** | 'terminalDiscoveringReaders' | | **`CancelDiscoveredReaders`** | 'terminalCancelDiscoveredReaders' | | **`ConnectedReader`** | 'terminalConnectedReader' | | **`DisconnectedReader`** | 'terminalDisconnectedReader' | diff --git a/packages/terminal/android/build.gradle b/packages/terminal/android/build.gradle index 8d5c3da91..76bf6a864 100644 --- a/packages/terminal/android/build.gradle +++ b/packages/terminal/android/build.gradle @@ -6,8 +6,8 @@ ext { playServicesWalletVersion = project.hasProperty('playServicesWalletVersion') ? rootProject.ext.playServicesWalletVersion : '19.2.+' volleyVersion = project.hasProperty('volleyVersion') ? rootProject.ext.volleyVersion : '1.2.1' - stripeterminalLocalmobileVersion = project.hasProperty('stripeterminalLocalmobileVersion') ? rootProject.ext.stripeterminalLocalmobileVersion : '3.10.+' - stripeterminalCoreVersion = project.hasProperty('stripeterminalCoreVersion') ? rootProject.ext.stripeterminalCoreVersion : '3.10.+' + stripeterminalTapToPayVersion = project.hasProperty('stripeterminalTapToPayVersion') ? rootProject.ext.stripeterminalTapToPayVersion : '4.0.0' + stripeterminalCoreVersion = project.hasProperty('stripeterminalCoreVersion') ? rootProject.ext.stripeterminalCoreVersion : '4.0.0' } buildscript { @@ -70,7 +70,7 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation "com.stripe:stripeterminal-core:$stripeterminalCoreVersion" - implementation "com.stripe:stripeterminal-localmobile:$stripeterminalLocalmobileVersion" + implementation "com.stripe:stripeterminal-taptopay:$stripeterminalTapToPayVersion" implementation "com.android.volley:volley:$volleyVersion" implementation "com.google.android.gms:play-services-wallet:$playServicesWalletVersion" } diff --git a/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminal.java b/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminal.java index 8c7a79f4a..b794bf057 100644 --- a/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminal.java +++ b/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminal.java @@ -23,19 +23,21 @@ import com.stripe.stripeterminal.external.callable.Callback; import com.stripe.stripeterminal.external.callable.Cancelable; import com.stripe.stripeterminal.external.callable.DiscoveryListener; +import com.stripe.stripeterminal.external.callable.InternetReaderListener; +import com.stripe.stripeterminal.external.callable.MobileReaderListener; import com.stripe.stripeterminal.external.callable.PaymentIntentCallback; import com.stripe.stripeterminal.external.callable.ReaderCallback; -import com.stripe.stripeterminal.external.callable.ReaderListener; -import com.stripe.stripeterminal.external.callable.ReaderReconnectionListener; +//import com.stripe.stripeterminal.external.callable.ReaderReconnectionListener; +import com.stripe.stripeterminal.external.callable.TapToPayReaderListener; import com.stripe.stripeterminal.external.callable.TerminalListener; import com.stripe.stripeterminal.external.models.BatteryStatus; import com.stripe.stripeterminal.external.models.CardPresentDetails; import com.stripe.stripeterminal.external.models.Cart; import com.stripe.stripeterminal.external.models.CartLineItem; import com.stripe.stripeterminal.external.models.CollectConfiguration; +import com.stripe.stripeterminal.external.models.ConnectionConfiguration; import com.stripe.stripeterminal.external.models.ConnectionConfiguration.BluetoothConnectionConfiguration; import com.stripe.stripeterminal.external.models.ConnectionConfiguration.InternetConnectionConfiguration; -import com.stripe.stripeterminal.external.models.ConnectionConfiguration.LocalMobileConnectionConfiguration; import com.stripe.stripeterminal.external.models.ConnectionConfiguration.UsbConnectionConfiguration; import com.stripe.stripeterminal.external.models.ConnectionStatus; import com.stripe.stripeterminal.external.models.DisconnectReason; @@ -112,14 +114,6 @@ public void initialize(final PluginCall call) throws TerminalException { } ); TerminalListener listener = new TerminalListener() { - @Override - public void onUnexpectedReaderDisconnect(@NonNull Reader reader) { - notifyListeners( - TerminalEnumEvent.UnexpectedReaderDisconnect.getWebEventName(), - new JSObject().put("reader", convertReaderInterface(reader)) - ); - } - @Override public void onConnectionStatusChange(@NonNull ConnectionStatus status) { notifyListeners( @@ -177,10 +171,10 @@ public void onDiscoverReaders(final PluginCall call) { this.locationId = call.getString("locationId"); final DiscoveryConfiguration config; if (Objects.equals(call.getString("type"), TerminalConnectTypes.TapToPay.getWebEventName())) { - config = new DiscoveryConfiguration.LocalMobileDiscoveryConfiguration(this.isTest); + config = new DiscoveryConfiguration.TapToPayDiscoveryConfiguration(this.isTest); this.terminalConnectType = TerminalConnectTypes.TapToPay; } else if (Objects.equals(call.getString("type"), TerminalConnectTypes.Internet.getWebEventName())) { - config = new DiscoveryConfiguration.InternetDiscoveryConfiguration(this.locationId, this.isTest); + config = new DiscoveryConfiguration.InternetDiscoveryConfiguration(0, this.locationId, this.isTest); this.terminalConnectType = TerminalConnectTypes.Internet; } else if (Objects.equals(call.getString("type"), TerminalConnectTypes.Usb.getWebEventName())) { config = new DiscoveryConfiguration.UsbDiscoveryConfiguration(0, this.isTest); @@ -231,7 +225,7 @@ public void onFailure(@NonNull TerminalException ex) { public void connectReader(final PluginCall call) { if (this.terminalConnectType == TerminalConnectTypes.TapToPay) { - this.connectLocalMobileReader(call); + this.connectTapToPayReader(call); } else if (this.terminalConnectType == TerminalConnectTypes.Internet) { this.connectInternetReader(call); } else if (this.terminalConnectType == TerminalConnectTypes.Usb) { @@ -276,9 +270,10 @@ public void onFailure(@NonNull TerminalException ex) { ); } - private void connectLocalMobileReader(final PluginCall call) { + private void connectTapToPayReader(final PluginCall call) { JSObject reader = call.getObject("reader"); String serialNumber = reader.getString("serialNumber"); + this.locationId = call.getString("locationId", this.locationId); Reader foundReader = this.findReader(this.discoveredReadersList, serialNumber); @@ -289,44 +284,84 @@ private void connectLocalMobileReader(final PluginCall call) { Boolean autoReconnectOnUnexpectedDisconnect = Objects.requireNonNullElse(call.getBoolean("autoReconnectOnUnexpectedDisconnect", false), false); - LocalMobileConnectionConfiguration config = new LocalMobileConnectionConfiguration( + ConnectionConfiguration.TapToPayConnectionConfiguration config = new ConnectionConfiguration.TapToPayConnectionConfiguration( this.locationId, autoReconnectOnUnexpectedDisconnect, - this.readerReconnectionListener + this.tapToPayReaderListener ); - Terminal.getInstance().connectLocalMobileReader(foundReader, config, this.readerCallback(call)); + Terminal.getInstance().connectReader(foundReader, config, this.readerCallback(call)); } - ReaderReconnectionListener readerReconnectionListener = new ReaderReconnectionListener() { + TapToPayReaderListener tapToPayReaderListener = new TapToPayReaderListener() { @Override - public void onReaderReconnectStarted(@NonNull Reader reader, @NonNull Cancelable cancelable, @NonNull DisconnectReason reason) { - cancelReaderConnectionCancellable = cancelable; + public void onReaderReconnectFailed(@NonNull Reader reader) { notifyListeners( - TerminalEnumEvent.ReaderReconnectStarted.getWebEventName(), - new JSObject().put("reason", reason.toString()).put("reader", convertReaderInterface(reader)) + TerminalEnumEvent.ReaderReconnectFailed.getWebEventName(), + new JSObject().put("reader", convertReaderInterface(reader)) ); } @Override - public void onReaderReconnectSucceeded(@NonNull Reader reader) { + public void onReaderReconnectStarted(@NonNull Reader reader, @NonNull Cancelable cancelReconnect, @NonNull DisconnectReason reason) { + cancelReaderConnectionCancellable = cancelReconnect; notifyListeners( - TerminalEnumEvent.ReaderReconnectSucceeded.getWebEventName(), - new JSObject().put("reader", convertReaderInterface(reader)) + TerminalEnumEvent.ReaderReconnectStarted.getWebEventName(), + new JSObject().put("reason", reason.toString()).put("reader", convertReaderInterface(reader)) ); } @Override - public void onReaderReconnectFailed(@NonNull Reader reader) { + public void onReaderReconnectSucceeded(@NonNull Reader reader) { notifyListeners( - TerminalEnumEvent.ReaderReconnectFailed.getWebEventName(), - new JSObject().put("reader", convertReaderInterface(reader)) + TerminalEnumEvent.ReaderReconnectSucceeded.getWebEventName(), + new JSObject().put("reader", convertReaderInterface(reader)) ); } + + @Override + public void onDisconnect(@NonNull DisconnectReason reason) { + notifyListeners(TerminalEnumEvent.DisconnectedReader.getWebEventName(), new JSObject().put("reason", reason.toString())); + } }; + InternetReaderListener internetReaderListener = new InternetReaderListener() { + @Override + public void onDisconnect(@NonNull DisconnectReason reason) { + notifyListeners(TerminalEnumEvent.DisconnectedReader.getWebEventName(), new JSObject().put("reason", reason.toString())); + } + }; + +// ReaderReconnectionListener readerReconnectionListener = new ReaderReconnectionListener() { +// @Override +// public void onReaderReconnectStarted(@NonNull Reader reader, @NonNull Cancelable cancelable, @NonNull DisconnectReason reason) { +// cancelReaderConnectionCancellable = cancelable; +// notifyListeners( +// TerminalEnumEvent.ReaderReconnectStarted.getWebEventName(), +// new JSObject().put("reason", reason.toString()).put("reader", convertReaderInterface(reader)) +// ); +// } +// +// @Override +// public void onReaderReconnectSucceeded(@NonNull Reader reader) { +// notifyListeners( +// TerminalEnumEvent.ReaderReconnectSucceeded.getWebEventName(), +// new JSObject().put("reader", convertReaderInterface(reader)) +// ); +// } +// +// @Override +// public void onReaderReconnectFailed(@NonNull Reader reader) { +// notifyListeners( +// TerminalEnumEvent.ReaderReconnectFailed.getWebEventName(), +// new JSObject().put("reader", convertReaderInterface(reader)) +// ); +// } +// }; + private void connectInternetReader(final PluginCall call) { JSObject reader = call.getObject("reader"); String serialNumber = reader.getString("serialNumber"); + this.locationId = call.getString("locationId", this.locationId); Reader foundReader = this.findReader(this.discoveredReadersList, serialNumber); @@ -335,13 +370,14 @@ private void connectInternetReader(final PluginCall call) { return; } - InternetConnectionConfiguration config = new InternetConnectionConfiguration(); - Terminal.getInstance().connectInternetReader(foundReader, config, this.readerCallback(call)); + InternetConnectionConfiguration config = new InternetConnectionConfiguration(true, this.internetReaderListener); + Terminal.getInstance().connectReader(foundReader, config, this.readerCallback(call)); } private void connectUsbReader(final PluginCall call) { JSObject reader = call.getObject("reader"); String serialNumber = reader.getString("serialNumber"); + this.locationId = call.getString("locationId", this.locationId); Reader foundReader = this.findReader(this.discoveredReadersList, serialNumber); @@ -350,13 +386,14 @@ private void connectUsbReader(final PluginCall call) { return; } - UsbConnectionConfiguration config = new UsbConnectionConfiguration(this.locationId); - Terminal.getInstance().connectUsbReader(foundReader, config, this.readerListener(), this.readerCallback(call)); + UsbConnectionConfiguration config = new UsbConnectionConfiguration(this.locationId, true, this.readerListener()); + Terminal.getInstance().connectReader(foundReader, config, this.readerCallback(call)); } private void connectBluetoothReader(final PluginCall call) { JSObject reader = call.getObject("reader"); String serialNumber = reader.getString("serialNumber"); + this.locationId = call.getString("locationId", this.locationId); Reader foundReader = this.findReader(this.discoveredReadersList, serialNumber); @@ -369,9 +406,9 @@ private void connectBluetoothReader(final PluginCall call) { BluetoothConnectionConfiguration config = new BluetoothConnectionConfiguration( this.locationId, autoReconnectOnUnexpectedDisconnect, - this.readerReconnectionListener + this.readerListener() ); - Terminal.getInstance().connectBluetoothReader(foundReader, config, this.readerListener(), this.readerCallback(call)); + Terminal.getInstance().connectReader(foundReader, config, this.readerCallback(call)); } public void cancelDiscoverReaders(final PluginCall call) { @@ -688,8 +725,8 @@ public void onFailure(@NonNull TerminalException ex) { }; } - private ReaderListener readerListener() { - return new ReaderListener() { + private MobileReaderListener readerListener() { + return new MobileReaderListener() { @Override public void onStartInstallingUpdate(@NotNull ReaderSoftwareUpdate update, @NotNull Cancelable cancelable) { // Show UI communicating that a required update has started installing @@ -781,7 +818,7 @@ private JSObject convertReaderInterface(Reader reader) { .put("serialNumber", reader.getSerialNumber()) .put("id", reader.getId()) .put("locationId", reader.getLocation() != null ? reader.getLocation().getId() : null) - .put("deviceSoftwareVersion", reader.getDeviceSwVersion$external_publish()) + .put("deviceSoftwareVersion", reader.getDeviceSwVersion$public_release()) .put("simulated", reader.isSimulated()) .put("serialNumber", reader.getSerialNumber()) .put("ipAddress", reader.getIpAddress()) diff --git a/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminalPlugin.java b/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminalPlugin.java index ba11ce81b..f3000496f 100644 --- a/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminalPlugin.java +++ b/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminalPlugin.java @@ -94,7 +94,7 @@ private void _initialize(PluginCall call) throws TerminalException { } } - @PluginMethod + @PluginMethod(returnType = PluginMethod.RETURN_CALLBACK) public void discoverReaders(PluginCall call) { if ( Objects.equals(call.getString("type"), TerminalConnectTypes.Bluetooth.getWebEventName()) || diff --git a/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/TerminalEvent.kt b/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/TerminalEvent.kt index ed3839a1f..f2f329163 100644 --- a/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/TerminalEvent.kt +++ b/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/TerminalEvent.kt @@ -2,6 +2,7 @@ package com.getcapacitor.community.stripe.terminal; enum class TerminalEnumEvent(val webEventName: String) { Loaded("terminalLoaded"), + DiscoveringReaders("terminalDiscoveringReaders"), DiscoveredReaders("terminalDiscoveredReaders"), CancelDiscoveredReaders("terminalCancelDiscoveredReaders"), ConnectedReader("terminalConnectedReader"), diff --git a/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/helper/TerminalMappers.java b/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/helper/TerminalMappers.java index 38623649c..4c5a20e71 100644 --- a/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/helper/TerminalMappers.java +++ b/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/helper/TerminalMappers.java @@ -40,8 +40,8 @@ public JSObject mapFromReaderSoftwareUpdate(ReaderSoftwareUpdate update) { return new JSObject() .put("deviceSoftwareVersion", update.getVersion()) - .put("estimatedUpdateTime", update.getTimeEstimate().toString()) - .put("requiredAt", update.getRequiredAt().getTime()); + .put("estimatedUpdateTime", update.getDurationEstimate().toString()) + .put("requiredAt", update.getRequiredAtMs()); } public String mapFromLocationStatus(LocationStatus status) { @@ -73,7 +73,7 @@ public String mapFromDeviceType(DeviceType type) { return switch (type) { case CHIPPER_1X -> "chipper1X"; case CHIPPER_2X -> "chipper2X"; - case COTS_DEVICE -> "cotsDevice"; + case TAP_TO_PAY_DEVICE -> "tapToPayDevice"; case ETNA -> "etna"; case STRIPE_M2 -> "stripeM2"; case STRIPE_S700 -> "stripeS700"; diff --git a/packages/terminal/ios/Plugin/TerminalEvents.swift b/packages/terminal/ios/Plugin/TerminalEvents.swift index a97f76359..ab2115f11 100644 --- a/packages/terminal/ios/Plugin/TerminalEvents.swift +++ b/packages/terminal/ios/Plugin/TerminalEvents.swift @@ -1,5 +1,6 @@ public enum TerminalEvents: String { case Loaded = "terminalLoaded" + case DiscoveringReaders = "terminalDiscoveringReaders" case DiscoveredReaders = "terminalDiscoveredReaders" case ConnectedReader = "terminalConnectedReader" case DisconnectedReader = "terminalDisconnectedReader" diff --git a/packages/terminal/simPRO-Software-stripe-terminal-6.2.2.tgz b/packages/terminal/simPRO-Software-stripe-terminal-6.2.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..2482fd2e0e9be0a49330137e3e821539172f4810 GIT binary patch literal 81954 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 Date: Fri, 8 Nov 2024 13:10:43 +1300 Subject: [PATCH 02/41] merge: https://github.com/simPRO-Software/stripe/commit/a000f7ef3549fe797aad7565ed07255df85e48ba --- demo/angular/ios/App/Podfile | 2 +- demo/angular/ios/App/Podfile.lock | 10 +++--- .../CapacitorCommunityStripeTerminal.podspec | 4 +-- .../ios/Plugin.xcodeproj/project.pbxproj | 4 +-- .../terminal/ios/Plugin/StripeTerminal.swift | 34 +++++++++---------- .../terminal/ios/Plugin/TerminalMappers.swift | 4 +-- packages/terminal/ios/Podfile | 4 +-- 7 files changed, 30 insertions(+), 32 deletions(-) diff --git a/demo/angular/ios/App/Podfile b/demo/angular/ios/App/Podfile index 95e8cd95e..ca92f48bc 100644 --- a/demo/angular/ios/App/Podfile +++ b/demo/angular/ios/App/Podfile @@ -1,6 +1,6 @@ require_relative '../../node_modules/@capacitor/ios/scripts/pods_helpers' -platform :ios, '13.0' +platform :ios, '14.0' use_frameworks! # workaround to avoid Xcode caching of Pods that requires diff --git a/demo/angular/ios/App/Podfile.lock b/demo/angular/ios/App/Podfile.lock index a040a5c7b..422a58c7a 100644 --- a/demo/angular/ios/App/Podfile.lock +++ b/demo/angular/ios/App/Podfile.lock @@ -10,7 +10,7 @@ PODS: - StripeIdentity (~> 23.32.0) - CapacitorCommunityStripeTerminal (6.2.1): - Capacitor - - StripeTerminal (~> 3.9.0) + - StripeTerminal (~> 4.0.0) - CapacitorCordova (6.1.2) - StripeApplePay (23.32.0): - StripeCore (= 23.32.0) @@ -35,7 +35,7 @@ PODS: - StripeCore (= 23.32.0) - StripePayments (= 23.32.0) - StripeUICore (= 23.32.0) - - StripeTerminal (3.9.1) + - StripeTerminal (4.0.0) - StripeUICore (23.32.0): - StripeCore (= 23.32.0) @@ -74,7 +74,7 @@ SPEC CHECKSUMS: Capacitor: 679f9673fdf30597493a6362a5d5bf233d46abc2 CapacitorCommunityStripe: 029a530c26bbc805b855da11375d347fb5398835 CapacitorCommunityStripeIdentity: 31f01cd07e07f9ff0b99dc4a80188b9518e8e12a - CapacitorCommunityStripeTerminal: c5b6bc8a932956f96b74ce0997c98de3a4f4e16c + CapacitorCommunityStripeTerminal: 32c65d0b1ef96bec258074d5172215820f075dd1 CapacitorCordova: f48c89f96c319101cd2f0ce8a2b7449b5fb8b3dd StripeApplePay: fd4aeaa8af1ebbfe5e38390ef7b4607f66494f80 StripeCameraCore: 2f226573bc1a84deba61ded08e2d3f49b0bd5a7d @@ -83,9 +83,9 @@ SPEC CHECKSUMS: StripePayments: a1260c9fecdb8640462c1fe70c4e2e17df2ab3a8 StripePaymentSheet: 155d402ee01447002d23c982e905ce06e6d7ef66 StripePaymentsUI: 2084d4398cb4869b13dd9eac43a00481476b152f - StripeTerminal: f7f5e176979224ed76edb3724f41138fbb28053c + StripeTerminal: b8a0f7bc10534eb060f676c9b3b813b2613a137b StripeUICore: 2c115cc8498f3badc19b4a41b3b1fdac0ae21d41 -PODFILE CHECKSUM: 2430ef1d0136ea2c0f7e2696daff19ed8cd27595 +PODFILE CHECKSUM: c75ca255b97ee461832b20e6cdf6d1da533d4019 COCOAPODS: 1.15.2 diff --git a/packages/terminal/CapacitorCommunityStripeTerminal.podspec b/packages/terminal/CapacitorCommunityStripeTerminal.podspec index 3778ad5a1..782a15c05 100644 --- a/packages/terminal/CapacitorCommunityStripeTerminal.podspec +++ b/packages/terminal/CapacitorCommunityStripeTerminal.podspec @@ -11,8 +11,8 @@ Pod::Spec.new do |s| s.author = package['author'] s.source = { :git => package['repository']['url'], :tag => s.version.to_s } s.source_files = 'ios/Plugin/**/*.{swift,h,m,c,cc,mm,cpp}' - s.ios.deployment_target = '13.0' + s.ios.deployment_target = '14.0' s.dependency 'Capacitor' - s.dependency 'StripeTerminal', '~> 3.9.0' + s.dependency 'StripeTerminal', '~> 4.0.0' s.swift_version = '5.1' end diff --git a/packages/terminal/ios/Plugin.xcodeproj/project.pbxproj b/packages/terminal/ios/Plugin.xcodeproj/project.pbxproj index d99f75bf2..bad6f7e9a 100644 --- a/packages/terminal/ios/Plugin.xcodeproj/project.pbxproj +++ b/packages/terminal/ios/Plugin.xcodeproj/project.pbxproj @@ -483,7 +483,7 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = Plugin/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks $(FRAMEWORK_SEARCH_PATHS)\n$(FRAMEWORK_SEARCH_PATHS)\n$(FRAMEWORK_SEARCH_PATHS)"; ONLY_ACTIVE_ARCH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.getcapacitor.Plugin; @@ -509,7 +509,7 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = Plugin/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks $(FRAMEWORK_SEARCH_PATHS)"; ONLY_ACTIVE_ARCH = NO; PRODUCT_BUNDLE_IDENTIFIER = com.getcapacitor.Plugin; diff --git a/packages/terminal/ios/Plugin/StripeTerminal.swift b/packages/terminal/ios/Plugin/StripeTerminal.swift index bf2c48c9e..c38e00f35 100644 --- a/packages/terminal/ios/Plugin/StripeTerminal.swift +++ b/packages/terminal/ios/Plugin/StripeTerminal.swift @@ -2,8 +2,8 @@ import Foundation import Capacitor import StripeTerminal -public class StripeTerminal: NSObject, DiscoveryDelegate, LocalMobileReaderDelegate, BluetoothReaderDelegate, TerminalDelegate, ReconnectionDelegate { - +public class StripeTerminal: NSObject, DiscoveryDelegate, TerminalDelegate, ReaderDelegate, MobileReaderDelegate, TapToPayReaderDelegate, InternetReaderDelegate { + weak var plugin: StripeTerminalPlugin? private let apiClient = APIClient() @@ -42,8 +42,8 @@ public class StripeTerminal: NSObject, DiscoveryDelegate, LocalMobileReaderDeleg self.locationId = call.getString("locationId") if TerminalConnectTypes.TapToPay.rawValue == connectType { - self.type = .localMobile - config = try LocalMobileDiscoveryConfigurationBuilder().setSimulated(self.isTest!).build() + self.type = .tapToPay + config = try TapToPayDiscoveryConfigurationBuilder().setSimulated(self.isTest!).build() } else if TerminalConnectTypes.Internet.rawValue == connectType { self.type = .internet config = try InternetDiscoveryConfigurationBuilder() @@ -88,7 +88,7 @@ public class StripeTerminal: NSObject, DiscoveryDelegate, LocalMobileReaderDeleg } public func connectReader(_ call: CAPPluginCall) { - if self.type == .localMobile { + if self.type == .tapToPay { self.connectLocalMobileReader(call) } else if self.type == .internet { self.connectInternetReader(call) @@ -131,11 +131,10 @@ public class StripeTerminal: NSObject, DiscoveryDelegate, LocalMobileReaderDeleg let reader: JSObject = call.getObject("reader")! let serialNumber: String = reader["serialNumber"] as! String - let connectionConfig = try! LocalMobileConnectionConfigurationBuilder.init(locationId: self.locationId!) + let connectionConfig = try! TapToPayConnectionConfigurationBuilder.init(delegate: self, locationId: self.locationId!) .setMerchantDisplayName(merchantDisplayName ?? nil) .setOnBehalfOf(onBehalfOf ?? nil) .setAutoReconnectOnUnexpectedDisconnect(autoReconnectOnUnexpectedDisconnect) - .setAutoReconnectionDelegate(autoReconnectOnUnexpectedDisconnect ? self : nil) .build() guard let foundReader = self.discoveredReadersList?.first(where: { $0.serialNumber == serialNumber }) else { @@ -143,7 +142,7 @@ public class StripeTerminal: NSObject, DiscoveryDelegate, LocalMobileReaderDeleg return } - Terminal.shared.connectLocalMobileReader(foundReader, delegate: self, connectionConfig: connectionConfig) { reader, error in + Terminal.shared.connectReader(foundReader, connectionConfig: connectionConfig) { reader, error in if let reader = reader { self.plugin?.notifyListeners(TerminalEvents.ConnectedReader.rawValue, data: [:]) call.resolve() @@ -162,11 +161,11 @@ public class StripeTerminal: NSObject, DiscoveryDelegate, LocalMobileReaderDeleg return } - let config = try! InternetConnectionConfigurationBuilder() + let config = try! InternetConnectionConfigurationBuilder(delegate: self) .setFailIfInUse(true) .build() - Terminal.shared.connectInternetReader(foundReader, connectionConfig: config) { reader, error in + Terminal.shared.connectReader(foundReader, connectionConfig: config) { reader, error in if let reader = reader { self.plugin?.notifyListeners(TerminalEvents.ConnectedReader.rawValue, data: [:]) call.resolve() @@ -189,12 +188,11 @@ public class StripeTerminal: NSObject, DiscoveryDelegate, LocalMobileReaderDeleg let merchantDisplayName: String? = call.getString("merchantDisplayName") let onBehalfOf: String? = call.getString("onBehalfOf") - let config = try! BluetoothConnectionConfigurationBuilder(locationId: self.locationId!) + let config = try! BluetoothConnectionConfigurationBuilder(delegate: self, locationId: self.locationId!) .setAutoReconnectOnUnexpectedDisconnect(autoReconnectOnUnexpectedDisconnect) - .setAutoReconnectionDelegate(autoReconnectOnUnexpectedDisconnect ? self : nil) .build() - Terminal.shared.connectBluetoothReader(foundReader, delegate: self, connectionConfig: config) { reader, error in + Terminal.shared.connectReader(foundReader, connectionConfig: config) { reader, error in if let reader = reader { self.plugin?.notifyListeners(TerminalEvents.ConnectedReader.rawValue, data: [:]) call.resolve() @@ -430,18 +428,18 @@ public class StripeTerminal: NSObject, DiscoveryDelegate, LocalMobileReaderDeleg * localMobile */ - public func localMobileReader(_ reader: Reader, didStartInstallingUpdate update: ReaderSoftwareUpdate, cancelable: Cancelable?) { + public func tapToPayReader(_ reader: Reader, didStartInstallingUpdate update: ReaderSoftwareUpdate, cancelable: Cancelable?) { self.installUpdateCancelable = cancelable self.plugin?.notifyListeners(TerminalEvents.StartInstallingUpdate.rawValue, data: [ "update": self.convertReaderSoftwareUpdate(update: update) ]) } - public func localMobileReader(_ reader: Reader, didReportReaderSoftwareUpdateProgress progress: Float) { + public func tapToPayReader(_ reader: Reader, didReportReaderSoftwareUpdateProgress progress: Float) { self.plugin?.notifyListeners(TerminalEvents.ReaderSoftwareUpdateProgress.rawValue, data: ["progress": progress]) } - public func localMobileReader(_ reader: Reader, didFinishInstallingUpdate update: ReaderSoftwareUpdate?, error: Error?) { + public func tapToPayReader(_ reader: Reader, didFinishInstallingUpdate update: ReaderSoftwareUpdate?, error: Error?) { if (error) != nil { self.plugin?.notifyListeners(TerminalEvents.FinishInstallingUpdate.rawValue, data: [ "error": error!.localizedDescription @@ -453,11 +451,11 @@ public class StripeTerminal: NSObject, DiscoveryDelegate, LocalMobileReaderDeleg ]) } - public func localMobileReader(_ reader: Reader, didRequestReaderInput inputOptions: ReaderInputOptions = []) { + public func tapToPayReader(_ reader: Reader, didRequestReaderInput inputOptions: ReaderInputOptions = []) { self.plugin?.notifyListeners(TerminalEvents.RequestReaderInput.rawValue, data: ["options": TerminalMappers.mapFromReaderInputOptions(inputOptions), "message": inputOptions.rawValue]) } - public func localMobileReader(_ reader: Reader, didRequestReaderDisplayMessage displayMessage: ReaderDisplayMessage) { + public func tapToPayReader(_ reader: Reader, didRequestReaderDisplayMessage displayMessage: ReaderDisplayMessage) { let result = TerminalMappers.mapFromReaderDisplayMessage(displayMessage) self.plugin?.notifyListeners(TerminalEvents.RequestDisplayMessage.rawValue, data: [ diff --git a/packages/terminal/ios/Plugin/TerminalMappers.swift b/packages/terminal/ios/Plugin/TerminalMappers.swift index af942fd32..a967db29a 100644 --- a/packages/terminal/ios/Plugin/TerminalMappers.swift +++ b/packages/terminal/ios/Plugin/TerminalMappers.swift @@ -4,7 +4,7 @@ import Capacitor class TerminalMappers { class func mapFromDeviceType(_ type: DeviceType) -> String { switch type { - case DeviceType.appleBuiltIn: return "appleBuiltIn" + case DeviceType.tapToPay: return "tapToPay" case DeviceType.chipper1X: return "chipper1X" case DeviceType.chipper2X: return "chipper2X" case DeviceType.etna: return "etna" @@ -93,7 +93,7 @@ class TerminalMappers { } let result: JSObject = [ "deviceSoftwareVersion": unwrappedUpdate.deviceSoftwareVersion, - "estimatedUpdateTime": mapFromUpdateTimeEstimate(unwrappedUpdate.estimatedUpdateTime), + "estimatedUpdateTime": mapFromUpdateTimeEstimate(unwrappedUpdate.durationEstimate), "requiredAt": convertDateToUnixTimestamp(date: unwrappedUpdate.requiredAt) ] return result diff --git a/packages/terminal/ios/Podfile b/packages/terminal/ios/Podfile index da7fd4b03..6e75059d8 100644 --- a/packages/terminal/ios/Podfile +++ b/packages/terminal/ios/Podfile @@ -1,11 +1,11 @@ -platform :ios, '13.0' +platform :ios, '14.0' def capacitor_pods # Comment the next line if you're not using Swift and don't want to use dynamic frameworks use_frameworks! pod 'Capacitor', :path => '../node_modules/@capacitor/ios' pod 'CapacitorCordova', :path => '../node_modules/@capacitor/ios' - pod 'StripeTerminal', '~> 3.9.0' + pod 'StripeTerminal', '~> 4.0.0' end target 'Plugin' do From a4992d7c8c00c1ac3727b3ea617bc0a51fbcf63f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Tue, 3 Dec 2024 21:00:12 +0900 Subject: [PATCH 03/41] chore --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 93b2a9448..cba1697fa 100644 --- a/README.md +++ b/README.md @@ -73,8 +73,8 @@ To use the latest Stripe Android, you need to version these up. To use the lates + identityVersion = '20.39.+' // If you use @capacitor-community/stripe-terminal: -+ stripeterminalCoreVersion = '3.5.0' -+ stripeterminalLocalmobileVersion = '3.5.0' ++ stripeterminalCoreVersion = '4.0.0' ++ stripeterminalTapToPayVersion = '4.0.0' } ``` From c2c92aff5985e68acc8213ffd33c0cd4e431bbf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Tue, 3 Dec 2024 21:08:42 +0900 Subject: [PATCH 04/41] chore(): camel to kebab-case --- .../terminal/src/{terminalMappers.ts => terminal-mappers.ts} | 0 packages/terminal/src/web.ts | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename packages/terminal/src/{terminalMappers.ts => terminal-mappers.ts} (100%) diff --git a/packages/terminal/src/terminalMappers.ts b/packages/terminal/src/terminal-mappers.ts similarity index 100% rename from packages/terminal/src/terminalMappers.ts rename to packages/terminal/src/terminal-mappers.ts diff --git a/packages/terminal/src/web.ts b/packages/terminal/src/web.ts index 21f296ed7..600bf91fa 100644 --- a/packages/terminal/src/web.ts +++ b/packages/terminal/src/web.ts @@ -22,7 +22,7 @@ import { mapFromCartToICart, mapFromConnectionStatus, mapFromPaymentStatus, -} from './terminalMappers'; +} from './terminal-mappers'; export class StripeTerminalWeb extends WebPlugin From d159666f1177007a4e6296c946364a73f749370f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Tue, 3 Dec 2024 22:10:00 +0900 Subject: [PATCH 05/41] feat(): setConnectionToken can use multi count https://github.com/capacitor-community/stripe/issues/407 --- .../community/stripe/terminal/TokenProvider.java | 13 ++++++++----- packages/terminal/ios/Plugin/StripeTerminal.swift | 7 +++---- packages/terminal/src/web.ts | 13 ++++++++----- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/TokenProvider.java b/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/TokenProvider.java index a44baf066..fc1c93e3c 100644 --- a/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/TokenProvider.java +++ b/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/TokenProvider.java @@ -15,6 +15,8 @@ import com.stripe.stripeterminal.external.callable.ConnectionTokenCallback; import com.stripe.stripeterminal.external.callable.ConnectionTokenProvider; import com.stripe.stripeterminal.external.models.ConnectionTokenException; + +import java.util.ArrayList; import java.util.Objects; import org.json.JSONException; import org.json.JSONObject; @@ -24,7 +26,7 @@ public class TokenProvider implements ConnectionTokenProvider { protected Supplier contextSupplier; protected final String tokenProviderEndpoint; protected BiConsumer notifyListenersFunction; - ConnectionTokenCallback pendingCallback = null; + ArrayList pendingCallback = new ArrayList<>(); public TokenProvider( Supplier contextSupplier, @@ -38,12 +40,13 @@ public TokenProvider( public void setConnectionToken(PluginCall call) { String token = call.getString("token", ""); - if (pendingCallback != null) { + if (!pendingCallback.isEmpty()) { + ConnectionTokenCallback pending = pendingCallback.remove(0); if (Objects.equals(token, "")) { - pendingCallback.onFailure(new ConnectionTokenException("Missing `token` is empty")); + pending.onFailure(new ConnectionTokenException("Missing `token` is empty")); call.reject("Missing `token` is empty"); } else { - pendingCallback.onSuccess(token); + pending.onSuccess(token); call.resolve(); } pendingCallback = null; @@ -55,7 +58,7 @@ public void setConnectionToken(PluginCall call) { @Override public void fetchConnectionToken(ConnectionTokenCallback callback) { if (Objects.equals(this.tokenProviderEndpoint, "")) { - pendingCallback = callback; + pendingCallback.add(callback); this.notifyListeners(TerminalEnumEvent.RequestedConnectionToken.getWebEventName(), new JSObject()); } else { try { diff --git a/packages/terminal/ios/Plugin/StripeTerminal.swift b/packages/terminal/ios/Plugin/StripeTerminal.swift index c38e00f35..63086ad34 100644 --- a/packages/terminal/ios/Plugin/StripeTerminal.swift +++ b/packages/terminal/ios/Plugin/StripeTerminal.swift @@ -578,7 +578,7 @@ public class StripeTerminal: NSObject, DiscoveryDelegate, TerminalDelegate, Read class APIClient: ConnectionTokenProvider { weak var plugin: StripeTerminalPlugin? var tokenProviderEndpoint: String = "" - private var pendingCompletion: ConnectionTokenCompletionBlock? + private var pendingCompletion: [ConnectionTokenCompletionBlock] = [] func initialize(plugin: StripeTerminalPlugin?, tokenProviderEndpoint: String) { self.plugin = plugin @@ -587,7 +587,7 @@ class APIClient: ConnectionTokenProvider { func setConnectionToken(_ call: CAPPluginCall) { let token = call.getString("token", "") - if let completion = pendingCompletion { + if let completion = pendingCompletion.isEmpty ? nil : pendingCompletion.removeFirst() { if token == "" { let error = NSError(domain: "com.getcapacitor.community.stripe.terminal", code: 3000, @@ -598,7 +598,6 @@ class APIClient: ConnectionTokenProvider { completion(token, nil) call.resolve() } - pendingCompletion = nil } else { call.reject("Stripe Terminal do not pending fetchConnectionToken") } @@ -607,7 +606,7 @@ class APIClient: ConnectionTokenProvider { // Fetches a ConnectionToken from your backend func fetchConnectionToken(_ completion: @escaping ConnectionTokenCompletionBlock) { if tokenProviderEndpoint == "" { - pendingCompletion = completion + pendingCompletion.append(completion) self.plugin?.notifyListeners(TerminalEvents.RequestedConnectionToken.rawValue, data: [:]) } else { let config = URLSessionConfiguration.default diff --git a/packages/terminal/src/web.ts b/packages/terminal/src/web.ts index 600bf91fa..3c66025c9 100644 --- a/packages/terminal/src/web.ts +++ b/packages/terminal/src/web.ts @@ -31,8 +31,7 @@ export class StripeTerminalWeb // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore private stripeTerminal: Terminal | undefined = undefined; - private tokenProviderPromiseResolve: ((value: string) => void) | undefined = - undefined; + private tokenProviderPromiseResolve: ((value: string) => void)[] = []; private discoveredReaders: ReaderInterface[] = []; private cachedFindReaders: Reader[] = []; private cachedPaymentIntent: ISdkManagedPaymentIntent | undefined = undefined; @@ -62,7 +61,7 @@ export class StripeTerminalWeb return data.secret; } else { return new Promise( - resolve => (this.tokenProviderPromiseResolve = resolve), + resolve => (this.tokenProviderPromiseResolve.push(resolve)), ); } }, @@ -132,11 +131,15 @@ export class StripeTerminalWeb } async setConnectionToken(options: { token: string }): Promise { - if (this.tokenProviderPromiseResolve === undefined) { + if (this.tokenProviderPromiseResolve.length === 0) { return; } console.log('setConnectionToken', options); - this.tokenProviderPromiseResolve(options.token); + const resolve = this.tokenProviderPromiseResolve.shift(); + if (resolve === undefined) { + throw new Error('tokenProviderPromiseResolve is empty.'); + } + resolve(options.token); } async setSimulatorConfiguration(options: { From 382289ee30d1d5e8c23ad2415bf89797ff8d990d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 09:26:11 +0900 Subject: [PATCH 06/41] feat(ios): change scheme and add Package.swift --- packages/identity/Package.swift | 30 ++++++++++++++++++ .../ios/Plugin/StripeIdentityPlugin.h | 10 ------ .../ios/Plugin/StripeIdentityPlugin.m | 10 ------ .../ios/Plugin/StripeIdentityPlugin.swift | 9 +++++- packages/payment/Package.swift | 31 +++++++++++++++++++ packages/payment/ios/Plugin/StripePlugin.h | 10 ------ packages/payment/ios/Plugin/StripePlugin.m | 20 ------------ .../payment/ios/Plugin/StripePlugin.swift | 19 +++++++++++- packages/terminal/Package.swift | 30 ++++++++++++++++++ .../ios/Plugin/StripeTerminalPlugin.h | 10 ------ .../ios/Plugin/StripeTerminalPlugin.m | 24 -------------- .../ios/Plugin/StripeTerminalPlugin.swift | 23 +++++++++++++- 12 files changed, 139 insertions(+), 87 deletions(-) create mode 100644 packages/identity/Package.swift delete mode 100644 packages/identity/ios/Plugin/StripeIdentityPlugin.h delete mode 100644 packages/identity/ios/Plugin/StripeIdentityPlugin.m create mode 100644 packages/payment/Package.swift delete mode 100644 packages/payment/ios/Plugin/StripePlugin.h delete mode 100644 packages/payment/ios/Plugin/StripePlugin.m create mode 100644 packages/terminal/Package.swift delete mode 100644 packages/terminal/ios/Plugin/StripeTerminalPlugin.h delete mode 100644 packages/terminal/ios/Plugin/StripeTerminalPlugin.m diff --git a/packages/identity/Package.swift b/packages/identity/Package.swift new file mode 100644 index 000000000..a00025aeb --- /dev/null +++ b/packages/identity/Package.swift @@ -0,0 +1,30 @@ +// swift-tools-version: 5.9 +import PackageDescription + +let package = Package( + name: "CapacitorCommunityStripeIdentity", + platforms: [.iOS(.v13)], + products: [ + .library( + name: "StripeIdentityPlugin", + targets: ["StripeIdentityPlugin"]) + ], + dependencies: [ + .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "6.0.0") + .package(url: "https://github.com/stripe/stripe-ios-spm.git", exact: "23.32.0") + ], + targets: [ + .target( + name: "StripeIdentityPlugin", + dependencies: [ + .product(name: "Capacitor", package: "capacitor-swift-pm"), + .product(name: "Cordova", package: "capacitor-swift-pm") + .product(name: "StripeIdentity", package: "stripe-ios-spm") + ], + path: "ios/Sources/StripeIdentityPlugin"), + .testTarget( + name: "StripeIdentityPluginTests", + dependencies: ["StripeIdentityPlugin"], + path: "ios/Tests/StripeIdentityPluginTests") + ] +) diff --git a/packages/identity/ios/Plugin/StripeIdentityPlugin.h b/packages/identity/ios/Plugin/StripeIdentityPlugin.h deleted file mode 100644 index f2bd9e0bb..000000000 --- a/packages/identity/ios/Plugin/StripeIdentityPlugin.h +++ /dev/null @@ -1,10 +0,0 @@ -#import - -//! Project version number for Plugin. -FOUNDATION_EXPORT double PluginVersionNumber; - -//! Project version string for Plugin. -FOUNDATION_EXPORT const unsigned char PluginVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - diff --git a/packages/identity/ios/Plugin/StripeIdentityPlugin.m b/packages/identity/ios/Plugin/StripeIdentityPlugin.m deleted file mode 100644 index d7081055a..000000000 --- a/packages/identity/ios/Plugin/StripeIdentityPlugin.m +++ /dev/null @@ -1,10 +0,0 @@ -#import -#import - -// Define the plugin using the CAP_PLUGIN Macro, and -// each method the plugin supports using the CAP_PLUGIN_METHOD macro. -CAP_PLUGIN(StripeIdentityPlugin, "StripeIdentity", - CAP_PLUGIN_METHOD(initialize, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(create, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(present, CAPPluginReturnPromise); -) diff --git a/packages/identity/ios/Plugin/StripeIdentityPlugin.swift b/packages/identity/ios/Plugin/StripeIdentityPlugin.swift index 5e9a8554e..205c85cf9 100644 --- a/packages/identity/ios/Plugin/StripeIdentityPlugin.swift +++ b/packages/identity/ios/Plugin/StripeIdentityPlugin.swift @@ -8,7 +8,14 @@ import PassKit * here: https://capacitorjs.com/docs/plugins/ios */ @objc(StripeIdentityPlugin) -public class StripeIdentityPlugin: CAPPlugin { +public class StripeIdentityPlugin: CAPPlugin, CAPBridgedPlugin { + public let identifier = "StripeIdentityPlugin" + public let jsName = "StripeIdentity" + public let pluginMethods: [CAPPluginMethod] = [ + CAPPluginMethod(name: "initialize", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "create", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "present", returnType: CAPPluginReturnPromise), + ] private let implementation = StripeIdentity() override public func load() { diff --git a/packages/payment/Package.swift b/packages/payment/Package.swift new file mode 100644 index 000000000..45d6974e8 --- /dev/null +++ b/packages/payment/Package.swift @@ -0,0 +1,31 @@ +// swift-tools-version: 5.9 +import PackageDescription + +let package = Package( + name: "CapacitorCommunityStripe", + platforms: [.iOS(.v13)], + products: [ + .library( + name: "StripePlugin", + targets: ["StripePlugin"]) + ], + dependencies: [ + .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "6.0.0") + .package(url: "https://github.com/stripe/stripe-ios-spm.git", exact: "23.32.0") + ], + targets: [ + .target( + name: "StripePlugin", + dependencies: [ + .product(name: "Capacitor", package: "capacitor-swift-pm"), + .product(name: "Cordova", package: "capacitor-swift-pm") + .product(name: "StripePaymentSheet", package: "stripe-ios-spm") + .product(name: "StripeApplePay", package: "stripe-ios-spm") + ], + path: "ios/Sources/StripePlugin"), + .testTarget( + name: "StripePluginTests", + dependencies: ["StripePlugin"], + path: "ios/Tests/StripePluginTests") + ] +) diff --git a/packages/payment/ios/Plugin/StripePlugin.h b/packages/payment/ios/Plugin/StripePlugin.h deleted file mode 100644 index f2bd9e0bb..000000000 --- a/packages/payment/ios/Plugin/StripePlugin.h +++ /dev/null @@ -1,10 +0,0 @@ -#import - -//! Project version number for Plugin. -FOUNDATION_EXPORT double PluginVersionNumber; - -//! Project version string for Plugin. -FOUNDATION_EXPORT const unsigned char PluginVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - diff --git a/packages/payment/ios/Plugin/StripePlugin.m b/packages/payment/ios/Plugin/StripePlugin.m deleted file mode 100644 index b878bb909..000000000 --- a/packages/payment/ios/Plugin/StripePlugin.m +++ /dev/null @@ -1,20 +0,0 @@ -#import -#import - -// Define the plugin using the CAP_PLUGIN Macro, and -// each method the plugin supports using the CAP_PLUGIN_METHOD macro. -CAP_PLUGIN(StripePlugin, "Stripe", - CAP_PLUGIN_METHOD(initialize, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(handleURLCallback, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(createPaymentSheet, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(presentPaymentSheet, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(createPaymentFlow, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(presentPaymentFlow, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(confirmPaymentFlow, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(isApplePayAvailable, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(createApplePay, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(presentApplePay, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(isGooglePayAvailable, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(createGooglePay, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(presentGooglePay, CAPPluginReturnPromise); -) diff --git a/packages/payment/ios/Plugin/StripePlugin.swift b/packages/payment/ios/Plugin/StripePlugin.swift index 406376891..01cc0e74a 100644 --- a/packages/payment/ios/Plugin/StripePlugin.swift +++ b/packages/payment/ios/Plugin/StripePlugin.swift @@ -4,7 +4,24 @@ import StripePaymentSheet import StripeApplePay @objc(StripePlugin) -public class StripePlugin: CAPPlugin { +public class StripePlugin: CAPPlugin, CAPBridgedPlugin { + public let identifier = "StripePlugin" + public let jsName = "Stripe" + public let pluginMethods: [CAPPluginMethod] = [ + CAPPluginMethod(name: "initialize", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "handleURLCallback", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "createPaymentSheet", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "presentPaymentSheet", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "createPaymentFlow", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "presentPaymentFlow", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "confirmPaymentFlow", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "isApplePayAvailable", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "createApplePay", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "presentApplePay", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "isGooglePayAvailable", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "createGooglePay", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "presentGooglePay", returnType: CAPPluginReturnPromise), + ] private let paymentSheetExecutor = PaymentSheetExecutor() private let paymentFlowExecutor = PaymentFlowExecutor() private let applePayExecutor = ApplePayExecutor() diff --git a/packages/terminal/Package.swift b/packages/terminal/Package.swift new file mode 100644 index 000000000..14fd112a9 --- /dev/null +++ b/packages/terminal/Package.swift @@ -0,0 +1,30 @@ +// swift-tools-version: 5.9 +import PackageDescription + +let package = Package( + name: "CapacitorCommunityStripeTerminal", + platforms: [.iOS(.v13)], + products: [ + .library( + name: "StripeTerminalPlugin", + targets: ["StripeTerminalPlugin"]) + ], + dependencies: [ + .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "6.0.0") + .package(url: "https://github.com/stripe/stripe-terminal-ios.git", exact: "4.1.0") + ], + targets: [ + .target( + name: "StripeTerminalPlugin", + dependencies: [ + .product(name: "Capacitor", package: "capacitor-swift-pm"), + .product(name: "Cordova", package: "capacitor-swift-pm") + .product(name: "StripeTerminal", package: "stripe-terminal-ios") + ], + path: "ios/Sources/StripeTerminalPlugin"), + .testTarget( + name: "StripeTerminalPluginTests", + dependencies: ["StripeTerminalPlugin"], + path: "ios/Tests/StripeTerminalPluginTests") + ] +) diff --git a/packages/terminal/ios/Plugin/StripeTerminalPlugin.h b/packages/terminal/ios/Plugin/StripeTerminalPlugin.h deleted file mode 100644 index f2bd9e0bb..000000000 --- a/packages/terminal/ios/Plugin/StripeTerminalPlugin.h +++ /dev/null @@ -1,10 +0,0 @@ -#import - -//! Project version number for Plugin. -FOUNDATION_EXPORT double PluginVersionNumber; - -//! Project version string for Plugin. -FOUNDATION_EXPORT const unsigned char PluginVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - diff --git a/packages/terminal/ios/Plugin/StripeTerminalPlugin.m b/packages/terminal/ios/Plugin/StripeTerminalPlugin.m deleted file mode 100644 index e456baed0..000000000 --- a/packages/terminal/ios/Plugin/StripeTerminalPlugin.m +++ /dev/null @@ -1,24 +0,0 @@ -#import -#import - -// Define the plugin using the CAP_PLUGIN Macro, and -// each method the plugin supports using the CAP_PLUGIN_METHOD macro. -CAP_PLUGIN(StripeTerminalPlugin, "StripeTerminal", - CAP_PLUGIN_METHOD(initialize, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(setConnectionToken, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(discoverReaders, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(cancelDiscoverReaders, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(connectReader, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(getConnectedReader, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(disconnectReader, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(collectPaymentMethod, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(cancelCollectPaymentMethod, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(confirmPaymentIntent, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(setSimulatorConfiguration, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(installAvailableUpdate, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(cancelInstallUpdate, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(setReaderDisplay, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(clearReaderDisplay, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(rebootReader, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(cancelReaderReconnection, CAPPluginReturnPromise); -) diff --git a/packages/terminal/ios/Plugin/StripeTerminalPlugin.swift b/packages/terminal/ios/Plugin/StripeTerminalPlugin.swift index b5637a38d..b64a8d50d 100644 --- a/packages/terminal/ios/Plugin/StripeTerminalPlugin.swift +++ b/packages/terminal/ios/Plugin/StripeTerminalPlugin.swift @@ -4,7 +4,28 @@ import Capacitor import PassKit @objc(StripeTerminalPlugin) -public class StripeTerminalPlugin: CAPPlugin { +public class StripeTerminalPlugin: CAPPlugin, CAPBridgedPlugin { + public let identifier = "StripeTerminalPlugin" + public let jsName = "StripeTerminal" + public let pluginMethods: [CAPPluginMethod] = [ + CAPPluginMethod(name: "initialize", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "setConnectionToken", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "discoverReaders", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "cancelDiscoverReaders", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "connectReader", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "getConnectedReader", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "disconnectReader", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "collectPaymentMethod", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "cancelCollectPaymentMethod", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "confirmPaymentIntent", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "setSimulatorConfiguration", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "installAvailableUpdate", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "cancelInstallUpdate", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "setReaderDisplay", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "clearReaderDisplay", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "rebootReader", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "cancelReaderReconnection", returnType: CAPPluginReturnPromise), + ] private let implementation = StripeTerminal() override public func load() { From e164da41362a18e8955a456b08801eff31bcbfb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 09:31:28 +0900 Subject: [PATCH 07/41] feat(terminal): change structure to spm --- .../CapacitorCommunityStripeTerminal.podspec | 2 +- packages/terminal/ios/.gitignore | 8 + .../ios/Plugin.xcodeproj/project.pbxproj | 585 ------------------ .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/xcschemes/Plugin.xcscheme | 77 --- .../xcschemes/PluginTests.xcscheme | 68 -- .../contents.xcworkspacedata | 10 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - packages/terminal/ios/PluginTests/Info.plist | 22 - packages/terminal/ios/Podfile | 17 - .../StripeTerminalPlugin}/Info.plist | 0 .../StripeTerminal.swift | 0 .../StripeTerminalPlugin.swift | 0 .../TerminalConnectTypes.swift | 0 .../TerminalEvents.swift | 0 .../TerminalMappers.swift | 0 .../StripeTerminalPluginTests.swift} | 3 +- 18 files changed, 10 insertions(+), 805 deletions(-) create mode 100644 packages/terminal/ios/.gitignore delete mode 100644 packages/terminal/ios/Plugin.xcodeproj/project.pbxproj delete mode 100644 packages/terminal/ios/Plugin.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 packages/terminal/ios/Plugin.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 packages/terminal/ios/Plugin.xcodeproj/xcshareddata/xcschemes/Plugin.xcscheme delete mode 100644 packages/terminal/ios/Plugin.xcodeproj/xcshareddata/xcschemes/PluginTests.xcscheme delete mode 100644 packages/terminal/ios/Plugin.xcworkspace/contents.xcworkspacedata delete mode 100644 packages/terminal/ios/Plugin.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 packages/terminal/ios/PluginTests/Info.plist delete mode 100644 packages/terminal/ios/Podfile rename packages/terminal/ios/{Plugin => Sources/StripeTerminalPlugin}/Info.plist (100%) rename packages/terminal/ios/{Plugin => Sources/StripeTerminalPlugin}/StripeTerminal.swift (100%) rename packages/terminal/ios/{Plugin => Sources/StripeTerminalPlugin}/StripeTerminalPlugin.swift (100%) rename packages/terminal/ios/{Plugin => Sources/StripeTerminalPlugin}/TerminalConnectTypes.swift (100%) rename packages/terminal/ios/{Plugin => Sources/StripeTerminalPlugin}/TerminalEvents.swift (100%) rename packages/terminal/ios/{Plugin => Sources/StripeTerminalPlugin}/TerminalMappers.swift (100%) rename packages/terminal/ios/{PluginTests/StripeTerminalTests.swift => Tests/StripeTerminalPluginTests/StripeTerminalPluginTests.swift} (91%) diff --git a/packages/terminal/CapacitorCommunityStripeTerminal.podspec b/packages/terminal/CapacitorCommunityStripeTerminal.podspec index 782a15c05..65c74ae44 100644 --- a/packages/terminal/CapacitorCommunityStripeTerminal.podspec +++ b/packages/terminal/CapacitorCommunityStripeTerminal.podspec @@ -10,7 +10,7 @@ Pod::Spec.new do |s| s.homepage = package['repository']['url'] s.author = package['author'] s.source = { :git => package['repository']['url'], :tag => s.version.to_s } - s.source_files = 'ios/Plugin/**/*.{swift,h,m,c,cc,mm,cpp}' + s.source_files = 'ios/Sources/**/*.{swift,h,m,c,cc,mm,cpp}' s.ios.deployment_target = '14.0' s.dependency 'Capacitor' s.dependency 'StripeTerminal', '~> 4.0.0' diff --git a/packages/terminal/ios/.gitignore b/packages/terminal/ios/.gitignore new file mode 100644 index 000000000..afb34f837 --- /dev/null +++ b/packages/terminal/ios/.gitignore @@ -0,0 +1,8 @@ +.DS_Store +.build +/Packages +xcuserdata/ +DerivedData/ +.swiftpm/configuration/registries.json +.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +.netrc \ No newline at end of file diff --git a/packages/terminal/ios/Plugin.xcodeproj/project.pbxproj b/packages/terminal/ios/Plugin.xcodeproj/project.pbxproj deleted file mode 100644 index bad6f7e9a..000000000 --- a/packages/terminal/ios/Plugin.xcodeproj/project.pbxproj +++ /dev/null @@ -1,585 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 48; - objects = { - -/* Begin PBXBuildFile section */ - 03FC29A292ACC40490383A1F /* Pods_Plugin.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B2A61DA5A1F2DD4F959604D /* Pods_Plugin.framework */; }; - 20C0B05DCFC8E3958A738AF2 /* Pods_PluginTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F6753A823D3815DB436415E3 /* Pods_PluginTests.framework */; }; - 2F98D68224C9AAE500613A4C /* StripeTerminal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F98D68124C9AAE400613A4C /* StripeTerminal.swift */; }; - 50ADFF92201F53D600D50D53 /* Plugin.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50ADFF88201F53D600D50D53 /* Plugin.framework */; }; - 50ADFF97201F53D600D50D53 /* StripeTerminalTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50ADFF96201F53D600D50D53 /* StripeTerminalTests.swift */; }; - 50ADFF99201F53D600D50D53 /* StripeTerminalPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 50ADFF8B201F53D600D50D53 /* StripeTerminalPlugin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 50ADFFA42020D75100D50D53 /* Capacitor.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50ADFFA52020D75100D50D53 /* Capacitor.framework */; }; - 50ADFFA82020EE4F00D50D53 /* StripeTerminalPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 50ADFFA72020EE4F00D50D53 /* StripeTerminalPlugin.m */; }; - 50E1A94820377CB70090CE1A /* StripeTerminalPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50E1A94720377CB70090CE1A /* StripeTerminalPlugin.swift */; }; - A98C923F2BA2484200A09466 /* TerminalConnectTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = A98C923D2BA2484200A09466 /* TerminalConnectTypes.swift */; }; - A98C92402BA2484200A09466 /* TerminalEvents.swift in Sources */ = {isa = PBXBuildFile; fileRef = A98C923E2BA2484200A09466 /* TerminalEvents.swift */; }; - DB9E874E2C699598004AB52F /* TerminalMappers.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9E874D2C699598004AB52F /* TerminalMappers.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 50ADFF93201F53D600D50D53 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 50ADFF7F201F53D600D50D53 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 50ADFF87201F53D600D50D53; - remoteInfo = Plugin; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 2F98D68124C9AAE400613A4C /* StripeTerminal.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StripeTerminal.swift; sourceTree = ""; }; - 3B2A61DA5A1F2DD4F959604D /* Pods_Plugin.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Plugin.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 50ADFF88201F53D600D50D53 /* Plugin.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Plugin.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 50ADFF8B201F53D600D50D53 /* StripeTerminalPlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StripeTerminalPlugin.h; sourceTree = ""; }; - 50ADFF8C201F53D600D50D53 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 50ADFF91201F53D600D50D53 /* PluginTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PluginTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 50ADFF96201F53D600D50D53 /* StripeTerminalTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StripeTerminalTests.swift; sourceTree = ""; }; - 50ADFF98201F53D600D50D53 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 50ADFFA52020D75100D50D53 /* Capacitor.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Capacitor.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 50ADFFA72020EE4F00D50D53 /* StripeTerminalPlugin.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StripeTerminalPlugin.m; sourceTree = ""; }; - 50E1A94720377CB70090CE1A /* StripeTerminalPlugin.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StripeTerminalPlugin.swift; sourceTree = ""; }; - 5E23F77F099397094342571A /* Pods-Plugin.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Plugin.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Plugin/Pods-Plugin.debug.xcconfig"; sourceTree = ""; }; - 91781294A431A2A7CC6EB714 /* Pods-Plugin.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Plugin.release.xcconfig"; path = "Pods/Target Support Files/Pods-Plugin/Pods-Plugin.release.xcconfig"; sourceTree = ""; }; - 96ED1B6440D6672E406C8D19 /* Pods-PluginTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PluginTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-PluginTests/Pods-PluginTests.debug.xcconfig"; sourceTree = ""; }; - A98C923D2BA2484200A09466 /* TerminalConnectTypes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TerminalConnectTypes.swift; sourceTree = ""; }; - A98C923E2BA2484200A09466 /* TerminalEvents.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TerminalEvents.swift; sourceTree = ""; }; - DB9E874D2C699598004AB52F /* TerminalMappers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TerminalMappers.swift; sourceTree = ""; }; - F65BB2953ECE002E1EF3E424 /* Pods-PluginTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PluginTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-PluginTests/Pods-PluginTests.release.xcconfig"; sourceTree = ""; }; - F6753A823D3815DB436415E3 /* Pods_PluginTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_PluginTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 50ADFF84201F53D600D50D53 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 50ADFFA42020D75100D50D53 /* Capacitor.framework in Frameworks */, - 03FC29A292ACC40490383A1F /* Pods_Plugin.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 50ADFF8E201F53D600D50D53 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 50ADFF92201F53D600D50D53 /* Plugin.framework in Frameworks */, - 20C0B05DCFC8E3958A738AF2 /* Pods_PluginTests.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 50ADFF7E201F53D600D50D53 = { - isa = PBXGroup; - children = ( - 50ADFF8A201F53D600D50D53 /* Plugin */, - 50ADFF95201F53D600D50D53 /* PluginTests */, - 50ADFF89201F53D600D50D53 /* Products */, - 8C8E7744173064A9F6D438E3 /* Pods */, - A797B9EFA3DCEFEA1FBB66A9 /* Frameworks */, - ); - sourceTree = ""; - }; - 50ADFF89201F53D600D50D53 /* Products */ = { - isa = PBXGroup; - children = ( - 50ADFF88201F53D600D50D53 /* Plugin.framework */, - 50ADFF91201F53D600D50D53 /* PluginTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 50ADFF8A201F53D600D50D53 /* Plugin */ = { - isa = PBXGroup; - children = ( - 50E1A94720377CB70090CE1A /* StripeTerminalPlugin.swift */, - A98C923D2BA2484200A09466 /* TerminalConnectTypes.swift */, - A98C923E2BA2484200A09466 /* TerminalEvents.swift */, - 2F98D68124C9AAE400613A4C /* StripeTerminal.swift */, - DB9E874D2C699598004AB52F /* TerminalMappers.swift */, - 50ADFF8B201F53D600D50D53 /* StripeTerminalPlugin.h */, - 50ADFFA72020EE4F00D50D53 /* StripeTerminalPlugin.m */, - 50ADFF8C201F53D600D50D53 /* Info.plist */, - ); - path = Plugin; - sourceTree = ""; - }; - 50ADFF95201F53D600D50D53 /* PluginTests */ = { - isa = PBXGroup; - children = ( - 50ADFF96201F53D600D50D53 /* StripeTerminalTests.swift */, - 50ADFF98201F53D600D50D53 /* Info.plist */, - ); - path = PluginTests; - sourceTree = ""; - }; - 8C8E7744173064A9F6D438E3 /* Pods */ = { - isa = PBXGroup; - children = ( - 5E23F77F099397094342571A /* Pods-Plugin.debug.xcconfig */, - 91781294A431A2A7CC6EB714 /* Pods-Plugin.release.xcconfig */, - 96ED1B6440D6672E406C8D19 /* Pods-PluginTests.debug.xcconfig */, - F65BB2953ECE002E1EF3E424 /* Pods-PluginTests.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; - A797B9EFA3DCEFEA1FBB66A9 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 50ADFFA52020D75100D50D53 /* Capacitor.framework */, - 3B2A61DA5A1F2DD4F959604D /* Pods_Plugin.framework */, - F6753A823D3815DB436415E3 /* Pods_PluginTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 50ADFF85201F53D600D50D53 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 50ADFF99201F53D600D50D53 /* StripeTerminalPlugin.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 50ADFF87201F53D600D50D53 /* Plugin */ = { - isa = PBXNativeTarget; - buildConfigurationList = 50ADFF9C201F53D600D50D53 /* Build configuration list for PBXNativeTarget "Plugin" */; - buildPhases = ( - AB5B3E54B4E897F32C2279DA /* [CP] Check Pods Manifest.lock */, - 50ADFF83201F53D600D50D53 /* Sources */, - 50ADFF84201F53D600D50D53 /* Frameworks */, - 50ADFF85201F53D600D50D53 /* Headers */, - 50ADFF86201F53D600D50D53 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Plugin; - productName = Plugin; - productReference = 50ADFF88201F53D600D50D53 /* Plugin.framework */; - productType = "com.apple.product-type.framework"; - }; - 50ADFF90201F53D600D50D53 /* PluginTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 50ADFF9F201F53D600D50D53 /* Build configuration list for PBXNativeTarget "PluginTests" */; - buildPhases = ( - 0596884F929ED6F1DE134961 /* [CP] Check Pods Manifest.lock */, - 50ADFF8D201F53D600D50D53 /* Sources */, - 50ADFF8E201F53D600D50D53 /* Frameworks */, - 50ADFF8F201F53D600D50D53 /* Resources */, - 8E97F58B69A94C6503FC9C85 /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 50ADFF94201F53D600D50D53 /* PBXTargetDependency */, - ); - name = PluginTests; - productName = PluginTests; - productReference = 50ADFF91201F53D600D50D53 /* PluginTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 50ADFF7F201F53D600D50D53 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1160; - ORGANIZATIONNAME = "Max Lynch"; - TargetAttributes = { - 50ADFF87201F53D600D50D53 = { - CreatedOnToolsVersion = 9.2; - LastSwiftMigration = 1100; - ProvisioningStyle = Automatic; - }; - 50ADFF90201F53D600D50D53 = { - CreatedOnToolsVersion = 9.2; - LastSwiftMigration = 1100; - ProvisioningStyle = Automatic; - }; - }; - }; - buildConfigurationList = 50ADFF82201F53D600D50D53 /* Build configuration list for PBXProject "Plugin" */; - compatibilityVersion = "Xcode 8.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 50ADFF7E201F53D600D50D53; - productRefGroup = 50ADFF89201F53D600D50D53 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 50ADFF87201F53D600D50D53 /* Plugin */, - 50ADFF90201F53D600D50D53 /* PluginTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 50ADFF86201F53D600D50D53 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 50ADFF8F201F53D600D50D53 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 0596884F929ED6F1DE134961 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-PluginTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 8E97F58B69A94C6503FC9C85 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-PluginTests/Pods-PluginTests-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/Capacitor/Capacitor.framework", - "${BUILT_PRODUCTS_DIR}/CapacitorCordova/Cordova.framework", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/StripeTerminal/StripeTerminal.framework/StripeTerminal", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Capacitor.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Cordova.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/StripeTerminal.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-PluginTests/Pods-PluginTests-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - AB5B3E54B4E897F32C2279DA /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Plugin-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 50ADFF83201F53D600D50D53 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - A98C923F2BA2484200A09466 /* TerminalConnectTypes.swift in Sources */, - 50E1A94820377CB70090CE1A /* StripeTerminalPlugin.swift in Sources */, - DB9E874E2C699598004AB52F /* TerminalMappers.swift in Sources */, - 2F98D68224C9AAE500613A4C /* StripeTerminal.swift in Sources */, - A98C92402BA2484200A09466 /* TerminalEvents.swift in Sources */, - 50ADFFA82020EE4F00D50D53 /* StripeTerminalPlugin.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 50ADFF8D201F53D600D50D53 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 50ADFF97201F53D600D50D53 /* StripeTerminalTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 50ADFF94201F53D600D50D53 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 50ADFF87201F53D600D50D53 /* Plugin */; - targetProxy = 50ADFF93201F53D600D50D53 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 50ADFF9A201F53D600D50D53 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - FRAMEWORK_SEARCH_PATHS = ( - "\"${BUILT_PRODUCTS_DIR}/Capacitor\"", - "\"${BUILT_PRODUCTS_DIR}/CapacitorCordova\"", - ); - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 50ADFF9B201F53D600D50D53 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - FRAMEWORK_SEARCH_PATHS = ( - "\"${BUILT_PRODUCTS_DIR}/Capacitor\"", - "\"${BUILT_PRODUCTS_DIR}/CapacitorCordova\"", - ); - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 50ADFF9D201F53D600D50D53 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5E23F77F099397094342571A /* Pods-Plugin.debug.xcconfig */; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Automatic; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = Plugin/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks $(FRAMEWORK_SEARCH_PATHS)\n$(FRAMEWORK_SEARCH_PATHS)\n$(FRAMEWORK_SEARCH_PATHS)"; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.getcapacitor.Plugin; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - SUPPORTS_MACCATALYST = NO; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 50ADFF9E201F53D600D50D53 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 91781294A431A2A7CC6EB714 /* Pods-Plugin.release.xcconfig */; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Automatic; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = Plugin/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks $(FRAMEWORK_SEARCH_PATHS)"; - ONLY_ACTIVE_ARCH = NO; - PRODUCT_BUNDLE_IDENTIFIER = com.getcapacitor.Plugin; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - SUPPORTS_MACCATALYST = NO; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; - 50ADFFA0201F53D600D50D53 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 96ED1B6440D6672E406C8D19 /* Pods-PluginTests.debug.xcconfig */; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - INFOPLIST_FILE = PluginTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.getcapacitor.PluginTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 50ADFFA1201F53D600D50D53 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F65BB2953ECE002E1EF3E424 /* Pods-PluginTests.release.xcconfig */; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - INFOPLIST_FILE = PluginTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.getcapacitor.PluginTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 50ADFF82201F53D600D50D53 /* Build configuration list for PBXProject "Plugin" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 50ADFF9A201F53D600D50D53 /* Debug */, - 50ADFF9B201F53D600D50D53 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 50ADFF9C201F53D600D50D53 /* Build configuration list for PBXNativeTarget "Plugin" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 50ADFF9D201F53D600D50D53 /* Debug */, - 50ADFF9E201F53D600D50D53 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 50ADFF9F201F53D600D50D53 /* Build configuration list for PBXNativeTarget "PluginTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 50ADFFA0201F53D600D50D53 /* Debug */, - 50ADFFA1201F53D600D50D53 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 50ADFF7F201F53D600D50D53 /* Project object */; -} diff --git a/packages/terminal/ios/Plugin.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/packages/terminal/ios/Plugin.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a62..000000000 --- a/packages/terminal/ios/Plugin.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/packages/terminal/ios/Plugin.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/terminal/ios/Plugin.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/packages/terminal/ios/Plugin.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/packages/terminal/ios/Plugin.xcodeproj/xcshareddata/xcschemes/Plugin.xcscheme b/packages/terminal/ios/Plugin.xcodeproj/xcshareddata/xcschemes/Plugin.xcscheme deleted file mode 100644 index 303f2621b..000000000 --- a/packages/terminal/ios/Plugin.xcodeproj/xcshareddata/xcschemes/Plugin.xcscheme +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/terminal/ios/Plugin.xcodeproj/xcshareddata/xcschemes/PluginTests.xcscheme b/packages/terminal/ios/Plugin.xcodeproj/xcshareddata/xcschemes/PluginTests.xcscheme deleted file mode 100644 index 3d8c88d25..000000000 --- a/packages/terminal/ios/Plugin.xcodeproj/xcshareddata/xcschemes/PluginTests.xcscheme +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/terminal/ios/Plugin.xcworkspace/contents.xcworkspacedata b/packages/terminal/ios/Plugin.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index afad624ec..000000000 --- a/packages/terminal/ios/Plugin.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/packages/terminal/ios/Plugin.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/terminal/ios/Plugin.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/packages/terminal/ios/Plugin.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/packages/terminal/ios/PluginTests/Info.plist b/packages/terminal/ios/PluginTests/Info.plist deleted file mode 100644 index 6c40a6cd0..000000000 --- a/packages/terminal/ios/PluginTests/Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - - diff --git a/packages/terminal/ios/Podfile b/packages/terminal/ios/Podfile deleted file mode 100644 index 6e75059d8..000000000 --- a/packages/terminal/ios/Podfile +++ /dev/null @@ -1,17 +0,0 @@ -platform :ios, '14.0' - -def capacitor_pods - # Comment the next line if you're not using Swift and don't want to use dynamic frameworks - use_frameworks! - pod 'Capacitor', :path => '../node_modules/@capacitor/ios' - pod 'CapacitorCordova', :path => '../node_modules/@capacitor/ios' - pod 'StripeTerminal', '~> 4.0.0' -end - -target 'Plugin' do - capacitor_pods -end - -target 'PluginTests' do - capacitor_pods -end diff --git a/packages/terminal/ios/Plugin/Info.plist b/packages/terminal/ios/Sources/StripeTerminalPlugin/Info.plist similarity index 100% rename from packages/terminal/ios/Plugin/Info.plist rename to packages/terminal/ios/Sources/StripeTerminalPlugin/Info.plist diff --git a/packages/terminal/ios/Plugin/StripeTerminal.swift b/packages/terminal/ios/Sources/StripeTerminalPlugin/StripeTerminal.swift similarity index 100% rename from packages/terminal/ios/Plugin/StripeTerminal.swift rename to packages/terminal/ios/Sources/StripeTerminalPlugin/StripeTerminal.swift diff --git a/packages/terminal/ios/Plugin/StripeTerminalPlugin.swift b/packages/terminal/ios/Sources/StripeTerminalPlugin/StripeTerminalPlugin.swift similarity index 100% rename from packages/terminal/ios/Plugin/StripeTerminalPlugin.swift rename to packages/terminal/ios/Sources/StripeTerminalPlugin/StripeTerminalPlugin.swift diff --git a/packages/terminal/ios/Plugin/TerminalConnectTypes.swift b/packages/terminal/ios/Sources/StripeTerminalPlugin/TerminalConnectTypes.swift similarity index 100% rename from packages/terminal/ios/Plugin/TerminalConnectTypes.swift rename to packages/terminal/ios/Sources/StripeTerminalPlugin/TerminalConnectTypes.swift diff --git a/packages/terminal/ios/Plugin/TerminalEvents.swift b/packages/terminal/ios/Sources/StripeTerminalPlugin/TerminalEvents.swift similarity index 100% rename from packages/terminal/ios/Plugin/TerminalEvents.swift rename to packages/terminal/ios/Sources/StripeTerminalPlugin/TerminalEvents.swift diff --git a/packages/terminal/ios/Plugin/TerminalMappers.swift b/packages/terminal/ios/Sources/StripeTerminalPlugin/TerminalMappers.swift similarity index 100% rename from packages/terminal/ios/Plugin/TerminalMappers.swift rename to packages/terminal/ios/Sources/StripeTerminalPlugin/TerminalMappers.swift diff --git a/packages/terminal/ios/PluginTests/StripeTerminalTests.swift b/packages/terminal/ios/Tests/StripeTerminalPluginTests/StripeTerminalPluginTests.swift similarity index 91% rename from packages/terminal/ios/PluginTests/StripeTerminalTests.swift rename to packages/terminal/ios/Tests/StripeTerminalPluginTests/StripeTerminalPluginTests.swift index ef15db7e9..53a36943c 100644 --- a/packages/terminal/ios/PluginTests/StripeTerminalTests.swift +++ b/packages/terminal/ios/Tests/StripeTerminalPluginTests/StripeTerminalPluginTests.swift @@ -1,8 +1,7 @@ import XCTest -@testable import Plugin +@testable import StripeTerminalPlugin class StripeTerminalTests: XCTestCase { - func testEcho() { // This is an example of a functional test case for a plugin. // Use XCTAssert and related functions to verify your tests produce the correct results. From f3b427cce3a141bb942f3d899ff308a260c4086f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 09:34:54 +0900 Subject: [PATCH 08/41] feat(payment): change structure to spm --- .../payment/CapacitorCommunityStripe.podspec | 2 +- packages/payment/ios/.gitignore | 8 + .../ios/Plugin.xcodeproj/project.pbxproj | 623 ------------------ .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/xcschemes/Plugin.xcscheme | 77 --- .../xcschemes/PluginTests.xcscheme | 68 -- .../contents.xcworkspacedata | 10 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - packages/payment/ios/PluginTests/Info.plist | 22 - packages/payment/ios/Podfile | 18 - .../ApplePay/ApplePayEvents.swift | 0 .../ApplePay/ApplePayExecutor.swift | 0 .../StripePlugin}/Info.plist | 0 .../PaymentFlow/PaymentFlowEvents.swift | 0 .../PaymentFlow/PaymentFlowExecutor.swift | 0 .../PaymentSheet/PaymentSheetEvents.swift | 0 .../PaymentSheet/PaymentSheetExecutor.swift | 0 .../StripePlugin}/StripePlugin.swift | 0 .../StripePluginTests.swift | 3 +- 20 files changed, 10 insertions(+), 844 deletions(-) create mode 100644 packages/payment/ios/.gitignore delete mode 100644 packages/payment/ios/Plugin.xcodeproj/project.pbxproj delete mode 100644 packages/payment/ios/Plugin.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 packages/payment/ios/Plugin.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 packages/payment/ios/Plugin.xcodeproj/xcshareddata/xcschemes/Plugin.xcscheme delete mode 100644 packages/payment/ios/Plugin.xcodeproj/xcshareddata/xcschemes/PluginTests.xcscheme delete mode 100644 packages/payment/ios/Plugin.xcworkspace/contents.xcworkspacedata delete mode 100644 packages/payment/ios/Plugin.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 packages/payment/ios/PluginTests/Info.plist delete mode 100644 packages/payment/ios/Podfile rename packages/payment/ios/{Plugin => Sources/StripePlugin}/ApplePay/ApplePayEvents.swift (100%) rename packages/payment/ios/{Plugin => Sources/StripePlugin}/ApplePay/ApplePayExecutor.swift (100%) rename packages/payment/ios/{Plugin => Sources/StripePlugin}/Info.plist (100%) rename packages/payment/ios/{Plugin => Sources/StripePlugin}/PaymentFlow/PaymentFlowEvents.swift (100%) rename packages/payment/ios/{Plugin => Sources/StripePlugin}/PaymentFlow/PaymentFlowExecutor.swift (100%) rename packages/payment/ios/{Plugin => Sources/StripePlugin}/PaymentSheet/PaymentSheetEvents.swift (100%) rename packages/payment/ios/{Plugin => Sources/StripePlugin}/PaymentSheet/PaymentSheetExecutor.swift (100%) rename packages/payment/ios/{Plugin => Sources/StripePlugin}/StripePlugin.swift (100%) rename packages/payment/ios/{PluginTests => Tests/StripePluginTests}/StripePluginTests.swift (93%) diff --git a/packages/payment/CapacitorCommunityStripe.podspec b/packages/payment/CapacitorCommunityStripe.podspec index 623eafc58..96d29741f 100644 --- a/packages/payment/CapacitorCommunityStripe.podspec +++ b/packages/payment/CapacitorCommunityStripe.podspec @@ -10,7 +10,7 @@ Pod::Spec.new do |s| s.homepage = package['repository']['url'] s.author = package['author'] s.source = { :git => package['repository']['url'], :tag => s.version.to_s } - s.source_files = 'ios/Plugin/**/*.{swift,h,m,c,cc,mm,cpp}' + s.source_files = 'ios/Sources/**/*.{swift,h,m,c,cc,mm,cpp}' s.ios.deployment_target = '13.0' s.dependency 'Capacitor' s.dependency 'StripePaymentSheet', '~> 23.32.0' diff --git a/packages/payment/ios/.gitignore b/packages/payment/ios/.gitignore new file mode 100644 index 000000000..afb34f837 --- /dev/null +++ b/packages/payment/ios/.gitignore @@ -0,0 +1,8 @@ +.DS_Store +.build +/Packages +xcuserdata/ +DerivedData/ +.swiftpm/configuration/registries.json +.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +.netrc \ No newline at end of file diff --git a/packages/payment/ios/Plugin.xcodeproj/project.pbxproj b/packages/payment/ios/Plugin.xcodeproj/project.pbxproj deleted file mode 100644 index 1826867d5..000000000 --- a/packages/payment/ios/Plugin.xcodeproj/project.pbxproj +++ /dev/null @@ -1,623 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 48; - objects = { - -/* Begin PBXBuildFile section */ - 03FC29A292ACC40490383A1F /* Pods_Plugin.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B2A61DA5A1F2DD4F959604D /* Pods_Plugin.framework */; }; - 20C0B05DCFC8E3958A738AF2 /* Pods_PluginTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F6753A823D3815DB436415E3 /* Pods_PluginTests.framework */; }; - 4FB4AFE429ADDA53003EBECD /* IdentityVerificationSheet in Resources */ = {isa = PBXBuildFile; fileRef = 4FB4AFE329ADDA53003EBECD /* IdentityVerificationSheet */; }; - 50ADFF92201F53D600D50D53 /* Plugin.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50ADFF88201F53D600D50D53 /* Plugin.framework */; }; - 50ADFF97201F53D600D50D53 /* StripePluginTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50ADFF96201F53D600D50D53 /* StripePluginTests.swift */; }; - 50ADFF99201F53D600D50D53 /* StripePlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 50ADFF8B201F53D600D50D53 /* StripePlugin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 50ADFFA42020D75100D50D53 /* Capacitor.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50ADFFA52020D75100D50D53 /* Capacitor.framework */; }; - 50ADFFA82020EE4F00D50D53 /* StripePlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 50ADFFA72020EE4F00D50D53 /* StripePlugin.m */; }; - 50E1A94820377CB70090CE1A /* StripePlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50E1A94720377CB70090CE1A /* StripePlugin.swift */; }; - DB15233A2663D401003F8BF2 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = DB1523352663D401003F8BF2 /* Info.plist */; }; - DB16470C269C457900E31818 /* PaymentSheetExecutor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB16470B269C457900E31818 /* PaymentSheetExecutor.swift */; }; - DB16470E269C468900E31818 /* PaymentSheetEvents.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB16470D269C468900E31818 /* PaymentSheetEvents.swift */; }; - DB280E4226AD433900AAEA30 /* PaymentFlowExecutor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB280E4126AD433900AAEA30 /* PaymentFlowExecutor.swift */; }; - DB280E4426AD476100AAEA30 /* PaymentFlowEvents.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB280E4326AD476100AAEA30 /* PaymentFlowEvents.swift */; }; - DB9491A626D9FC9600E48032 /* ApplePay in Resources */ = {isa = PBXBuildFile; fileRef = DB9491A526D9FC9600E48032 /* ApplePay */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 50ADFF93201F53D600D50D53 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 50ADFF7F201F53D600D50D53 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 50ADFF87201F53D600D50D53; - remoteInfo = Plugin; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 3B2A61DA5A1F2DD4F959604D /* Pods_Plugin.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Plugin.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 4FB4AFE329ADDA53003EBECD /* IdentityVerificationSheet */ = {isa = PBXFileReference; lastKnownFileType = folder; path = IdentityVerificationSheet; sourceTree = ""; }; - 50ADFF88201F53D600D50D53 /* Plugin.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Plugin.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 50ADFF8B201F53D600D50D53 /* StripePlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StripePlugin.h; sourceTree = ""; }; - 50ADFF8C201F53D600D50D53 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 50ADFF91201F53D600D50D53 /* PluginTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PluginTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 50ADFF96201F53D600D50D53 /* StripePluginTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StripePluginTests.swift; sourceTree = ""; }; - 50ADFF98201F53D600D50D53 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 50ADFFA52020D75100D50D53 /* Capacitor.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Capacitor.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 50ADFFA72020EE4F00D50D53 /* StripePlugin.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StripePlugin.m; sourceTree = ""; }; - 50E1A94720377CB70090CE1A /* StripePlugin.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StripePlugin.swift; sourceTree = ""; }; - 5E23F77F099397094342571A /* Pods-Plugin.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Plugin.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Plugin/Pods-Plugin.debug.xcconfig"; sourceTree = ""; }; - 91781294A431A2A7CC6EB714 /* Pods-Plugin.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Plugin.release.xcconfig"; path = "Pods/Target Support Files/Pods-Plugin/Pods-Plugin.release.xcconfig"; sourceTree = ""; }; - 96ED1B6440D6672E406C8D19 /* Pods-PluginTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PluginTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-PluginTests/Pods-PluginTests.debug.xcconfig"; sourceTree = ""; }; - DB1523352663D401003F8BF2 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - DB16470B269C457900E31818 /* PaymentSheetExecutor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaymentSheetExecutor.swift; sourceTree = ""; }; - DB16470D269C468900E31818 /* PaymentSheetEvents.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaymentSheetEvents.swift; sourceTree = ""; }; - DB280E4126AD433900AAEA30 /* PaymentFlowExecutor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaymentFlowExecutor.swift; sourceTree = ""; }; - DB280E4326AD476100AAEA30 /* PaymentFlowEvents.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaymentFlowEvents.swift; sourceTree = ""; }; - DB9491A526D9FC9600E48032 /* ApplePay */ = {isa = PBXFileReference; lastKnownFileType = folder; path = ApplePay; sourceTree = ""; }; - F65BB2953ECE002E1EF3E424 /* Pods-PluginTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PluginTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-PluginTests/Pods-PluginTests.release.xcconfig"; sourceTree = ""; }; - F6753A823D3815DB436415E3 /* Pods_PluginTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_PluginTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 50ADFF84201F53D600D50D53 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 50ADFFA42020D75100D50D53 /* Capacitor.framework in Frameworks */, - 03FC29A292ACC40490383A1F /* Pods_Plugin.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 50ADFF8E201F53D600D50D53 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 50ADFF92201F53D600D50D53 /* Plugin.framework in Frameworks */, - 20C0B05DCFC8E3958A738AF2 /* Pods_PluginTests.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 50ADFF7E201F53D600D50D53 = { - isa = PBXGroup; - children = ( - 50ADFF8A201F53D600D50D53 /* Plugin */, - 50ADFF95201F53D600D50D53 /* PluginTests */, - 50ADFF89201F53D600D50D53 /* Products */, - 8C8E7744173064A9F6D438E3 /* Pods */, - A797B9EFA3DCEFEA1FBB66A9 /* Frameworks */, - ); - sourceTree = ""; - }; - 50ADFF89201F53D600D50D53 /* Products */ = { - isa = PBXGroup; - children = ( - 50ADFF88201F53D600D50D53 /* Plugin.framework */, - 50ADFF91201F53D600D50D53 /* PluginTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 50ADFF8A201F53D600D50D53 /* Plugin */ = { - isa = PBXGroup; - children = ( - 4FB4AFE329ADDA53003EBECD /* IdentityVerificationSheet */, - DB9491A526D9FC9600E48032 /* ApplePay */, - DB280E4026AD432500AAEA30 /* PaymentFlow */, - DB16470A269C455D00E31818 /* PaymentSheet */, - DB1523352663D401003F8BF2 /* Info.plist */, - 50E1A94720377CB70090CE1A /* StripePlugin.swift */, - 50ADFF8B201F53D600D50D53 /* StripePlugin.h */, - 50ADFFA72020EE4F00D50D53 /* StripePlugin.m */, - 50ADFF8C201F53D600D50D53 /* Info.plist */, - ); - path = Plugin; - sourceTree = ""; - }; - 50ADFF95201F53D600D50D53 /* PluginTests */ = { - isa = PBXGroup; - children = ( - 50ADFF96201F53D600D50D53 /* StripePluginTests.swift */, - 50ADFF98201F53D600D50D53 /* Info.plist */, - ); - path = PluginTests; - sourceTree = ""; - }; - 8C8E7744173064A9F6D438E3 /* Pods */ = { - isa = PBXGroup; - children = ( - 5E23F77F099397094342571A /* Pods-Plugin.debug.xcconfig */, - 91781294A431A2A7CC6EB714 /* Pods-Plugin.release.xcconfig */, - 96ED1B6440D6672E406C8D19 /* Pods-PluginTests.debug.xcconfig */, - F65BB2953ECE002E1EF3E424 /* Pods-PluginTests.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; - A797B9EFA3DCEFEA1FBB66A9 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 50ADFFA52020D75100D50D53 /* Capacitor.framework */, - 3B2A61DA5A1F2DD4F959604D /* Pods_Plugin.framework */, - F6753A823D3815DB436415E3 /* Pods_PluginTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - DB16470A269C455D00E31818 /* PaymentSheet */ = { - isa = PBXGroup; - children = ( - DB16470B269C457900E31818 /* PaymentSheetExecutor.swift */, - DB16470D269C468900E31818 /* PaymentSheetEvents.swift */, - ); - path = PaymentSheet; - sourceTree = ""; - }; - DB280E4026AD432500AAEA30 /* PaymentFlow */ = { - isa = PBXGroup; - children = ( - DB280E4126AD433900AAEA30 /* PaymentFlowExecutor.swift */, - DB280E4326AD476100AAEA30 /* PaymentFlowEvents.swift */, - ); - path = PaymentFlow; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 50ADFF85201F53D600D50D53 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 50ADFF99201F53D600D50D53 /* StripePlugin.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 50ADFF87201F53D600D50D53 /* Plugin */ = { - isa = PBXNativeTarget; - buildConfigurationList = 50ADFF9C201F53D600D50D53 /* Build configuration list for PBXNativeTarget "Plugin" */; - buildPhases = ( - AB5B3E54B4E897F32C2279DA /* [CP] Check Pods Manifest.lock */, - 50ADFF83201F53D600D50D53 /* Sources */, - 50ADFF84201F53D600D50D53 /* Frameworks */, - 50ADFF85201F53D600D50D53 /* Headers */, - 50ADFF86201F53D600D50D53 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Plugin; - productName = Plugin; - productReference = 50ADFF88201F53D600D50D53 /* Plugin.framework */; - productType = "com.apple.product-type.framework"; - }; - 50ADFF90201F53D600D50D53 /* PluginTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 50ADFF9F201F53D600D50D53 /* Build configuration list for PBXNativeTarget "PluginTests" */; - buildPhases = ( - 0596884F929ED6F1DE134961 /* [CP] Check Pods Manifest.lock */, - 50ADFF8D201F53D600D50D53 /* Sources */, - 50ADFF8E201F53D600D50D53 /* Frameworks */, - 50ADFF8F201F53D600D50D53 /* Resources */, - 8E97F58B69A94C6503FC9C85 /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 50ADFF94201F53D600D50D53 /* PBXTargetDependency */, - ); - name = PluginTests; - productName = PluginTests; - productReference = 50ADFF91201F53D600D50D53 /* PluginTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 50ADFF7F201F53D600D50D53 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1160; - ORGANIZATIONNAME = "Max Lynch"; - TargetAttributes = { - 50ADFF87201F53D600D50D53 = { - CreatedOnToolsVersion = 9.2; - LastSwiftMigration = 1100; - ProvisioningStyle = Automatic; - }; - 50ADFF90201F53D600D50D53 = { - CreatedOnToolsVersion = 9.2; - LastSwiftMigration = 1100; - ProvisioningStyle = Automatic; - }; - }; - }; - buildConfigurationList = 50ADFF82201F53D600D50D53 /* Build configuration list for PBXProject "Plugin" */; - compatibilityVersion = "Xcode 8.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 50ADFF7E201F53D600D50D53; - productRefGroup = 50ADFF89201F53D600D50D53 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 50ADFF87201F53D600D50D53 /* Plugin */, - 50ADFF90201F53D600D50D53 /* PluginTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 50ADFF86201F53D600D50D53 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - DB9491A626D9FC9600E48032 /* ApplePay in Resources */, - 4FB4AFE429ADDA53003EBECD /* IdentityVerificationSheet in Resources */, - DB15233A2663D401003F8BF2 /* Info.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 50ADFF8F201F53D600D50D53 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 0596884F929ED6F1DE134961 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-PluginTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 8E97F58B69A94C6503FC9C85 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-PluginTests/Pods-PluginTests-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/Capacitor/Capacitor.framework", - "${BUILT_PRODUCTS_DIR}/CapacitorCordova/Cordova.framework", - "${BUILT_PRODUCTS_DIR}/StripeApplePay/StripeApplePay.framework", - "${BUILT_PRODUCTS_DIR}/StripeCore/StripeCore.framework", - "${BUILT_PRODUCTS_DIR}/StripePaymentSheet/StripePaymentSheet.framework", - "${BUILT_PRODUCTS_DIR}/StripePayments/StripePayments.framework", - "${BUILT_PRODUCTS_DIR}/StripePaymentsUI/StripePaymentsUI.framework", - "${BUILT_PRODUCTS_DIR}/StripeUICore/StripeUICore.framework", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Capacitor.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Cordova.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/StripeApplePay.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/StripeCore.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/StripePaymentSheet.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/StripePayments.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/StripePaymentsUI.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/StripeUICore.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-PluginTests/Pods-PluginTests-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - AB5B3E54B4E897F32C2279DA /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Plugin-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 50ADFF83201F53D600D50D53 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - DB280E4226AD433900AAEA30 /* PaymentFlowExecutor.swift in Sources */, - DB280E4426AD476100AAEA30 /* PaymentFlowEvents.swift in Sources */, - DB16470E269C468900E31818 /* PaymentSheetEvents.swift in Sources */, - 50E1A94820377CB70090CE1A /* StripePlugin.swift in Sources */, - 50ADFFA82020EE4F00D50D53 /* StripePlugin.m in Sources */, - DB16470C269C457900E31818 /* PaymentSheetExecutor.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 50ADFF8D201F53D600D50D53 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 50ADFF97201F53D600D50D53 /* StripePluginTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 50ADFF94201F53D600D50D53 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 50ADFF87201F53D600D50D53 /* Plugin */; - targetProxy = 50ADFF93201F53D600D50D53 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 50ADFF9A201F53D600D50D53 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - FRAMEWORK_SEARCH_PATHS = ( - "\"${BUILT_PRODUCTS_DIR}/Capacitor\"", - "\"${BUILT_PRODUCTS_DIR}/CapacitorCordova\"", - ); - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 50ADFF9B201F53D600D50D53 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - FRAMEWORK_SEARCH_PATHS = ( - "\"${BUILT_PRODUCTS_DIR}/Capacitor\"", - "\"${BUILT_PRODUCTS_DIR}/CapacitorCordova\"", - ); - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 50ADFF9D201F53D600D50D53 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5E23F77F099397094342571A /* Pods-Plugin.debug.xcconfig */; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Automatic; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = Plugin/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks $(FRAMEWORK_SEARCH_PATHS)\n$(FRAMEWORK_SEARCH_PATHS)\n$(FRAMEWORK_SEARCH_PATHS)"; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.getcapacitor.Plugin; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - SUPPORTS_MACCATALYST = NO; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 50ADFF9E201F53D600D50D53 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 91781294A431A2A7CC6EB714 /* Pods-Plugin.release.xcconfig */; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Automatic; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = Plugin/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks $(FRAMEWORK_SEARCH_PATHS)"; - ONLY_ACTIVE_ARCH = NO; - PRODUCT_BUNDLE_IDENTIFIER = com.getcapacitor.Plugin; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - SUPPORTS_MACCATALYST = NO; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; - 50ADFFA0201F53D600D50D53 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 96ED1B6440D6672E406C8D19 /* Pods-PluginTests.debug.xcconfig */; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - INFOPLIST_FILE = PluginTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.getcapacitor.PluginTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 50ADFFA1201F53D600D50D53 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F65BB2953ECE002E1EF3E424 /* Pods-PluginTests.release.xcconfig */; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - INFOPLIST_FILE = PluginTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.getcapacitor.PluginTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 50ADFF82201F53D600D50D53 /* Build configuration list for PBXProject "Plugin" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 50ADFF9A201F53D600D50D53 /* Debug */, - 50ADFF9B201F53D600D50D53 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 50ADFF9C201F53D600D50D53 /* Build configuration list for PBXNativeTarget "Plugin" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 50ADFF9D201F53D600D50D53 /* Debug */, - 50ADFF9E201F53D600D50D53 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 50ADFF9F201F53D600D50D53 /* Build configuration list for PBXNativeTarget "PluginTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 50ADFFA0201F53D600D50D53 /* Debug */, - 50ADFFA1201F53D600D50D53 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 50ADFF7F201F53D600D50D53 /* Project object */; -} diff --git a/packages/payment/ios/Plugin.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/packages/payment/ios/Plugin.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a62..000000000 --- a/packages/payment/ios/Plugin.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/packages/payment/ios/Plugin.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/payment/ios/Plugin.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/packages/payment/ios/Plugin.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/packages/payment/ios/Plugin.xcodeproj/xcshareddata/xcschemes/Plugin.xcscheme b/packages/payment/ios/Plugin.xcodeproj/xcshareddata/xcschemes/Plugin.xcscheme deleted file mode 100644 index 303f2621b..000000000 --- a/packages/payment/ios/Plugin.xcodeproj/xcshareddata/xcschemes/Plugin.xcscheme +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/payment/ios/Plugin.xcodeproj/xcshareddata/xcschemes/PluginTests.xcscheme b/packages/payment/ios/Plugin.xcodeproj/xcshareddata/xcschemes/PluginTests.xcscheme deleted file mode 100644 index 3d8c88d25..000000000 --- a/packages/payment/ios/Plugin.xcodeproj/xcshareddata/xcschemes/PluginTests.xcscheme +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/payment/ios/Plugin.xcworkspace/contents.xcworkspacedata b/packages/payment/ios/Plugin.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index afad624ec..000000000 --- a/packages/payment/ios/Plugin.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/packages/payment/ios/Plugin.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/payment/ios/Plugin.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/packages/payment/ios/Plugin.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/packages/payment/ios/PluginTests/Info.plist b/packages/payment/ios/PluginTests/Info.plist deleted file mode 100644 index 6c40a6cd0..000000000 --- a/packages/payment/ios/PluginTests/Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - - diff --git a/packages/payment/ios/Podfile b/packages/payment/ios/Podfile deleted file mode 100644 index 2e1e07464..000000000 --- a/packages/payment/ios/Podfile +++ /dev/null @@ -1,18 +0,0 @@ -platform :ios, '13.0' - -def capacitor_pods - # Comment the next line if you're not using Swift and don't want to use dynamic frameworks - use_frameworks! - pod 'Capacitor', :path => '../node_modules/@capacitor/ios' - pod 'CapacitorCordova', :path => '../node_modules/@capacitor/ios' - pod 'StripePaymentSheet', '~> 23.32.0' - pod 'StripeApplePay', '~> 23.32.0' -end - -target 'Plugin' do - capacitor_pods -end - -target 'PluginTests' do - capacitor_pods -end diff --git a/packages/payment/ios/Plugin/ApplePay/ApplePayEvents.swift b/packages/payment/ios/Sources/StripePlugin/ApplePay/ApplePayEvents.swift similarity index 100% rename from packages/payment/ios/Plugin/ApplePay/ApplePayEvents.swift rename to packages/payment/ios/Sources/StripePlugin/ApplePay/ApplePayEvents.swift diff --git a/packages/payment/ios/Plugin/ApplePay/ApplePayExecutor.swift b/packages/payment/ios/Sources/StripePlugin/ApplePay/ApplePayExecutor.swift similarity index 100% rename from packages/payment/ios/Plugin/ApplePay/ApplePayExecutor.swift rename to packages/payment/ios/Sources/StripePlugin/ApplePay/ApplePayExecutor.swift diff --git a/packages/payment/ios/Plugin/Info.plist b/packages/payment/ios/Sources/StripePlugin/Info.plist similarity index 100% rename from packages/payment/ios/Plugin/Info.plist rename to packages/payment/ios/Sources/StripePlugin/Info.plist diff --git a/packages/payment/ios/Plugin/PaymentFlow/PaymentFlowEvents.swift b/packages/payment/ios/Sources/StripePlugin/PaymentFlow/PaymentFlowEvents.swift similarity index 100% rename from packages/payment/ios/Plugin/PaymentFlow/PaymentFlowEvents.swift rename to packages/payment/ios/Sources/StripePlugin/PaymentFlow/PaymentFlowEvents.swift diff --git a/packages/payment/ios/Plugin/PaymentFlow/PaymentFlowExecutor.swift b/packages/payment/ios/Sources/StripePlugin/PaymentFlow/PaymentFlowExecutor.swift similarity index 100% rename from packages/payment/ios/Plugin/PaymentFlow/PaymentFlowExecutor.swift rename to packages/payment/ios/Sources/StripePlugin/PaymentFlow/PaymentFlowExecutor.swift diff --git a/packages/payment/ios/Plugin/PaymentSheet/PaymentSheetEvents.swift b/packages/payment/ios/Sources/StripePlugin/PaymentSheet/PaymentSheetEvents.swift similarity index 100% rename from packages/payment/ios/Plugin/PaymentSheet/PaymentSheetEvents.swift rename to packages/payment/ios/Sources/StripePlugin/PaymentSheet/PaymentSheetEvents.swift diff --git a/packages/payment/ios/Plugin/PaymentSheet/PaymentSheetExecutor.swift b/packages/payment/ios/Sources/StripePlugin/PaymentSheet/PaymentSheetExecutor.swift similarity index 100% rename from packages/payment/ios/Plugin/PaymentSheet/PaymentSheetExecutor.swift rename to packages/payment/ios/Sources/StripePlugin/PaymentSheet/PaymentSheetExecutor.swift diff --git a/packages/payment/ios/Plugin/StripePlugin.swift b/packages/payment/ios/Sources/StripePlugin/StripePlugin.swift similarity index 100% rename from packages/payment/ios/Plugin/StripePlugin.swift rename to packages/payment/ios/Sources/StripePlugin/StripePlugin.swift diff --git a/packages/payment/ios/PluginTests/StripePluginTests.swift b/packages/payment/ios/Tests/StripePluginTests/StripePluginTests.swift similarity index 93% rename from packages/payment/ios/PluginTests/StripePluginTests.swift rename to packages/payment/ios/Tests/StripePluginTests/StripePluginTests.swift index 7f64b1ae0..10d89f98f 100644 --- a/packages/payment/ios/PluginTests/StripePluginTests.swift +++ b/packages/payment/ios/Tests/StripePluginTests/StripePluginTests.swift @@ -1,8 +1,7 @@ import XCTest -@testable import Plugin +@testable import StripePlugin class StripeTests: XCTestCase { - func testEcho() { // This is an example of a functional test case for a plugin. // Use XCTAssert and related functions to verify your tests produce the correct results. From 13c0dc14eb53075c5cbdc2ec6931472d500100c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 09:46:24 +0900 Subject: [PATCH 09/41] feat(identity): change structure to spm --- .../CapacitorCommunityStripeIdentity.podspec | 2 +- .../ios/Plugin.xcodeproj/project.pbxproj | 579 ------------------ .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/xcschemes/Plugin.xcscheme | 77 --- .../xcschemes/PluginTests.xcscheme | 68 -- .../contents.xcworkspacedata | 10 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - packages/identity/ios/PluginTests/Info.plist | 22 - packages/identity/ios/Podfile | 17 - .../IdentityVerificationSheetEvents.swift | 0 .../StripeIdentityPlugin}/Info.plist | 0 .../StripeIdentity.swift | 0 .../StripeIdentityPlugin.swift | 0 .../StripeIdentityPluginTests.swift} | 3 +- 15 files changed, 2 insertions(+), 799 deletions(-) delete mode 100644 packages/identity/ios/Plugin.xcodeproj/project.pbxproj delete mode 100644 packages/identity/ios/Plugin.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 packages/identity/ios/Plugin.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 packages/identity/ios/Plugin.xcodeproj/xcshareddata/xcschemes/Plugin.xcscheme delete mode 100644 packages/identity/ios/Plugin.xcodeproj/xcshareddata/xcschemes/PluginTests.xcscheme delete mode 100644 packages/identity/ios/Plugin.xcworkspace/contents.xcworkspacedata delete mode 100644 packages/identity/ios/Plugin.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 packages/identity/ios/PluginTests/Info.plist delete mode 100644 packages/identity/ios/Podfile rename packages/identity/ios/{Plugin => Sources/StripeIdentityPlugin}/IdentityVerificationSheetEvents.swift (100%) rename packages/identity/ios/{Plugin => Sources/StripeIdentityPlugin}/Info.plist (100%) rename packages/identity/ios/{Plugin => Sources/StripeIdentityPlugin}/StripeIdentity.swift (100%) rename packages/identity/ios/{Plugin => Sources/StripeIdentityPlugin}/StripeIdentityPlugin.swift (100%) rename packages/identity/ios/{PluginTests/StripeIdentityTests.swift => Tests/StripeIdentityPluginTests/StripeIdentityPluginTests.swift} (91%) diff --git a/packages/identity/CapacitorCommunityStripeIdentity.podspec b/packages/identity/CapacitorCommunityStripeIdentity.podspec index 580b70976..e30d8758b 100644 --- a/packages/identity/CapacitorCommunityStripeIdentity.podspec +++ b/packages/identity/CapacitorCommunityStripeIdentity.podspec @@ -10,7 +10,7 @@ Pod::Spec.new do |s| s.homepage = package['repository']['url'] s.author = package['author'] s.source = { :git => package['repository']['url'], :tag => s.version.to_s } - s.source_files = 'ios/Plugin/**/*.{swift,h,m,c,cc,mm,cpp}' + s.source_files = 'ios/Sources/**/*.{swift,h,m,c,cc,mm,cpp}' s.ios.deployment_target = '13.0' s.dependency 'Capacitor' s.dependency 'StripeIdentity', '~> 23.32.0' diff --git a/packages/identity/ios/Plugin.xcodeproj/project.pbxproj b/packages/identity/ios/Plugin.xcodeproj/project.pbxproj deleted file mode 100644 index 93e79066f..000000000 --- a/packages/identity/ios/Plugin.xcodeproj/project.pbxproj +++ /dev/null @@ -1,579 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 48; - objects = { - -/* Begin PBXBuildFile section */ - 03FC29A292ACC40490383A1F /* Pods_Plugin.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B2A61DA5A1F2DD4F959604D /* Pods_Plugin.framework */; }; - 20C0B05DCFC8E3958A738AF2 /* Pods_PluginTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F6753A823D3815DB436415E3 /* Pods_PluginTests.framework */; }; - 2F98D68224C9AAE500613A4C /* StripeIdentity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F98D68124C9AAE400613A4C /* StripeIdentity.swift */; }; - 50ADFF92201F53D600D50D53 /* Plugin.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50ADFF88201F53D600D50D53 /* Plugin.framework */; }; - 50ADFF97201F53D600D50D53 /* StripeIdentityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50ADFF96201F53D600D50D53 /* StripeIdentityTests.swift */; }; - 50ADFF99201F53D600D50D53 /* StripeIdentityPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 50ADFF8B201F53D600D50D53 /* StripeIdentityPlugin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 50ADFFA42020D75100D50D53 /* Capacitor.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50ADFFA52020D75100D50D53 /* Capacitor.framework */; }; - 50ADFFA82020EE4F00D50D53 /* StripeIdentityPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 50ADFFA72020EE4F00D50D53 /* StripeIdentityPlugin.m */; }; - 50E1A94820377CB70090CE1A /* StripeIdentityPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50E1A94720377CB70090CE1A /* StripeIdentityPlugin.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 50ADFF93201F53D600D50D53 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 50ADFF7F201F53D600D50D53 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 50ADFF87201F53D600D50D53; - remoteInfo = Plugin; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 2F98D68124C9AAE400613A4C /* StripeIdentity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StripeIdentity.swift; sourceTree = ""; }; - 3B2A61DA5A1F2DD4F959604D /* Pods_Plugin.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Plugin.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 50ADFF88201F53D600D50D53 /* Plugin.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Plugin.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 50ADFF8B201F53D600D50D53 /* StripeIdentityPlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StripeIdentityPlugin.h; sourceTree = ""; }; - 50ADFF8C201F53D600D50D53 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 50ADFF91201F53D600D50D53 /* PluginTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PluginTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 50ADFF96201F53D600D50D53 /* StripeIdentityTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StripeIdentityTests.swift; sourceTree = ""; }; - 50ADFF98201F53D600D50D53 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 50ADFFA52020D75100D50D53 /* Capacitor.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Capacitor.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 50ADFFA72020EE4F00D50D53 /* StripeIdentityPlugin.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StripeIdentityPlugin.m; sourceTree = ""; }; - 50E1A94720377CB70090CE1A /* StripeIdentityPlugin.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StripeIdentityPlugin.swift; sourceTree = ""; }; - 5E23F77F099397094342571A /* Pods-Plugin.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Plugin.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Plugin/Pods-Plugin.debug.xcconfig"; sourceTree = ""; }; - 91781294A431A2A7CC6EB714 /* Pods-Plugin.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Plugin.release.xcconfig"; path = "Pods/Target Support Files/Pods-Plugin/Pods-Plugin.release.xcconfig"; sourceTree = ""; }; - 96ED1B6440D6672E406C8D19 /* Pods-PluginTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PluginTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-PluginTests/Pods-PluginTests.debug.xcconfig"; sourceTree = ""; }; - F65BB2953ECE002E1EF3E424 /* Pods-PluginTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PluginTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-PluginTests/Pods-PluginTests.release.xcconfig"; sourceTree = ""; }; - F6753A823D3815DB436415E3 /* Pods_PluginTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_PluginTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 50ADFF84201F53D600D50D53 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 50ADFFA42020D75100D50D53 /* Capacitor.framework in Frameworks */, - 03FC29A292ACC40490383A1F /* Pods_Plugin.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 50ADFF8E201F53D600D50D53 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 50ADFF92201F53D600D50D53 /* Plugin.framework in Frameworks */, - 20C0B05DCFC8E3958A738AF2 /* Pods_PluginTests.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 50ADFF7E201F53D600D50D53 = { - isa = PBXGroup; - children = ( - 50ADFF8A201F53D600D50D53 /* Plugin */, - 50ADFF95201F53D600D50D53 /* PluginTests */, - 50ADFF89201F53D600D50D53 /* Products */, - 8C8E7744173064A9F6D438E3 /* Pods */, - A797B9EFA3DCEFEA1FBB66A9 /* Frameworks */, - ); - sourceTree = ""; - }; - 50ADFF89201F53D600D50D53 /* Products */ = { - isa = PBXGroup; - children = ( - 50ADFF88201F53D600D50D53 /* Plugin.framework */, - 50ADFF91201F53D600D50D53 /* PluginTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 50ADFF8A201F53D600D50D53 /* Plugin */ = { - isa = PBXGroup; - children = ( - 50E1A94720377CB70090CE1A /* StripeIdentityPlugin.swift */, - 2F98D68124C9AAE400613A4C /* StripeIdentity.swift */, - 50ADFF8B201F53D600D50D53 /* StripeIdentityPlugin.h */, - 50ADFFA72020EE4F00D50D53 /* StripeIdentityPlugin.m */, - 50ADFF8C201F53D600D50D53 /* Info.plist */, - ); - path = Plugin; - sourceTree = ""; - }; - 50ADFF95201F53D600D50D53 /* PluginTests */ = { - isa = PBXGroup; - children = ( - 50ADFF96201F53D600D50D53 /* StripeIdentityTests.swift */, - 50ADFF98201F53D600D50D53 /* Info.plist */, - ); - path = PluginTests; - sourceTree = ""; - }; - 8C8E7744173064A9F6D438E3 /* Pods */ = { - isa = PBXGroup; - children = ( - 5E23F77F099397094342571A /* Pods-Plugin.debug.xcconfig */, - 91781294A431A2A7CC6EB714 /* Pods-Plugin.release.xcconfig */, - 96ED1B6440D6672E406C8D19 /* Pods-PluginTests.debug.xcconfig */, - F65BB2953ECE002E1EF3E424 /* Pods-PluginTests.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; - A797B9EFA3DCEFEA1FBB66A9 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 50ADFFA52020D75100D50D53 /* Capacitor.framework */, - 3B2A61DA5A1F2DD4F959604D /* Pods_Plugin.framework */, - F6753A823D3815DB436415E3 /* Pods_PluginTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 50ADFF85201F53D600D50D53 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 50ADFF99201F53D600D50D53 /* StripeIdentityPlugin.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 50ADFF87201F53D600D50D53 /* Plugin */ = { - isa = PBXNativeTarget; - buildConfigurationList = 50ADFF9C201F53D600D50D53 /* Build configuration list for PBXNativeTarget "Plugin" */; - buildPhases = ( - AB5B3E54B4E897F32C2279DA /* [CP] Check Pods Manifest.lock */, - 50ADFF83201F53D600D50D53 /* Sources */, - 50ADFF84201F53D600D50D53 /* Frameworks */, - 50ADFF85201F53D600D50D53 /* Headers */, - 50ADFF86201F53D600D50D53 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Plugin; - productName = Plugin; - productReference = 50ADFF88201F53D600D50D53 /* Plugin.framework */; - productType = "com.apple.product-type.framework"; - }; - 50ADFF90201F53D600D50D53 /* PluginTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 50ADFF9F201F53D600D50D53 /* Build configuration list for PBXNativeTarget "PluginTests" */; - buildPhases = ( - 0596884F929ED6F1DE134961 /* [CP] Check Pods Manifest.lock */, - 50ADFF8D201F53D600D50D53 /* Sources */, - 50ADFF8E201F53D600D50D53 /* Frameworks */, - 50ADFF8F201F53D600D50D53 /* Resources */, - 8E97F58B69A94C6503FC9C85 /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 50ADFF94201F53D600D50D53 /* PBXTargetDependency */, - ); - name = PluginTests; - productName = PluginTests; - productReference = 50ADFF91201F53D600D50D53 /* PluginTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 50ADFF7F201F53D600D50D53 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1160; - ORGANIZATIONNAME = "Max Lynch"; - TargetAttributes = { - 50ADFF87201F53D600D50D53 = { - CreatedOnToolsVersion = 9.2; - LastSwiftMigration = 1100; - ProvisioningStyle = Automatic; - }; - 50ADFF90201F53D600D50D53 = { - CreatedOnToolsVersion = 9.2; - LastSwiftMigration = 1100; - ProvisioningStyle = Automatic; - }; - }; - }; - buildConfigurationList = 50ADFF82201F53D600D50D53 /* Build configuration list for PBXProject "Plugin" */; - compatibilityVersion = "Xcode 8.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 50ADFF7E201F53D600D50D53; - productRefGroup = 50ADFF89201F53D600D50D53 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 50ADFF87201F53D600D50D53 /* Plugin */, - 50ADFF90201F53D600D50D53 /* PluginTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 50ADFF86201F53D600D50D53 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 50ADFF8F201F53D600D50D53 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 0596884F929ED6F1DE134961 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-PluginTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 8E97F58B69A94C6503FC9C85 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-PluginTests/Pods-PluginTests-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/Capacitor/Capacitor.framework", - "${BUILT_PRODUCTS_DIR}/CapacitorCordova/Cordova.framework", - "${BUILT_PRODUCTS_DIR}/StripeCameraCore/StripeCameraCore.framework", - "${BUILT_PRODUCTS_DIR}/StripeCore/StripeCore.framework", - "${BUILT_PRODUCTS_DIR}/StripeIdentity/StripeIdentity.framework", - "${BUILT_PRODUCTS_DIR}/StripeUICore/StripeUICore.framework", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Capacitor.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Cordova.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/StripeCameraCore.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/StripeCore.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/StripeIdentity.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/StripeUICore.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-PluginTests/Pods-PluginTests-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - AB5B3E54B4E897F32C2279DA /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Plugin-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 50ADFF83201F53D600D50D53 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 50E1A94820377CB70090CE1A /* StripeIdentityPlugin.swift in Sources */, - 2F98D68224C9AAE500613A4C /* StripeIdentity.swift in Sources */, - 50ADFFA82020EE4F00D50D53 /* StripeIdentityPlugin.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 50ADFF8D201F53D600D50D53 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 50ADFF97201F53D600D50D53 /* StripeIdentityTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 50ADFF94201F53D600D50D53 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 50ADFF87201F53D600D50D53 /* Plugin */; - targetProxy = 50ADFF93201F53D600D50D53 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 50ADFF9A201F53D600D50D53 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - FRAMEWORK_SEARCH_PATHS = ( - "\"${BUILT_PRODUCTS_DIR}/Capacitor\"", - "\"${BUILT_PRODUCTS_DIR}/CapacitorCordova\"", - ); - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 50ADFF9B201F53D600D50D53 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - FRAMEWORK_SEARCH_PATHS = ( - "\"${BUILT_PRODUCTS_DIR}/Capacitor\"", - "\"${BUILT_PRODUCTS_DIR}/CapacitorCordova\"", - ); - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 50ADFF9D201F53D600D50D53 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5E23F77F099397094342571A /* Pods-Plugin.debug.xcconfig */; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Automatic; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = Plugin/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks $(FRAMEWORK_SEARCH_PATHS)\n$(FRAMEWORK_SEARCH_PATHS)\n$(FRAMEWORK_SEARCH_PATHS)"; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.getcapacitor.Plugin; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - SUPPORTS_MACCATALYST = NO; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 50ADFF9E201F53D600D50D53 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 91781294A431A2A7CC6EB714 /* Pods-Plugin.release.xcconfig */; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Automatic; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = Plugin/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks $(FRAMEWORK_SEARCH_PATHS)"; - ONLY_ACTIVE_ARCH = NO; - PRODUCT_BUNDLE_IDENTIFIER = com.getcapacitor.Plugin; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - SUPPORTS_MACCATALYST = NO; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; - 50ADFFA0201F53D600D50D53 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 96ED1B6440D6672E406C8D19 /* Pods-PluginTests.debug.xcconfig */; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - INFOPLIST_FILE = PluginTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.getcapacitor.PluginTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 50ADFFA1201F53D600D50D53 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F65BB2953ECE002E1EF3E424 /* Pods-PluginTests.release.xcconfig */; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - INFOPLIST_FILE = PluginTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.getcapacitor.PluginTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 50ADFF82201F53D600D50D53 /* Build configuration list for PBXProject "Plugin" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 50ADFF9A201F53D600D50D53 /* Debug */, - 50ADFF9B201F53D600D50D53 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 50ADFF9C201F53D600D50D53 /* Build configuration list for PBXNativeTarget "Plugin" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 50ADFF9D201F53D600D50D53 /* Debug */, - 50ADFF9E201F53D600D50D53 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 50ADFF9F201F53D600D50D53 /* Build configuration list for PBXNativeTarget "PluginTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 50ADFFA0201F53D600D50D53 /* Debug */, - 50ADFFA1201F53D600D50D53 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 50ADFF7F201F53D600D50D53 /* Project object */; -} diff --git a/packages/identity/ios/Plugin.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/packages/identity/ios/Plugin.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a62..000000000 --- a/packages/identity/ios/Plugin.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/packages/identity/ios/Plugin.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/identity/ios/Plugin.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/packages/identity/ios/Plugin.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/packages/identity/ios/Plugin.xcodeproj/xcshareddata/xcschemes/Plugin.xcscheme b/packages/identity/ios/Plugin.xcodeproj/xcshareddata/xcschemes/Plugin.xcscheme deleted file mode 100644 index 303f2621b..000000000 --- a/packages/identity/ios/Plugin.xcodeproj/xcshareddata/xcschemes/Plugin.xcscheme +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/identity/ios/Plugin.xcodeproj/xcshareddata/xcschemes/PluginTests.xcscheme b/packages/identity/ios/Plugin.xcodeproj/xcshareddata/xcschemes/PluginTests.xcscheme deleted file mode 100644 index 3d8c88d25..000000000 --- a/packages/identity/ios/Plugin.xcodeproj/xcshareddata/xcschemes/PluginTests.xcscheme +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/identity/ios/Plugin.xcworkspace/contents.xcworkspacedata b/packages/identity/ios/Plugin.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index afad624ec..000000000 --- a/packages/identity/ios/Plugin.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/packages/identity/ios/Plugin.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/identity/ios/Plugin.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/packages/identity/ios/Plugin.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/packages/identity/ios/PluginTests/Info.plist b/packages/identity/ios/PluginTests/Info.plist deleted file mode 100644 index 6c40a6cd0..000000000 --- a/packages/identity/ios/PluginTests/Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - - diff --git a/packages/identity/ios/Podfile b/packages/identity/ios/Podfile deleted file mode 100644 index d3d57872f..000000000 --- a/packages/identity/ios/Podfile +++ /dev/null @@ -1,17 +0,0 @@ -platform :ios, '13.0' - -def capacitor_pods - # Comment the next line if you're not using Swift and don't want to use dynamic frameworks - use_frameworks! - pod 'Capacitor', :path => '../node_modules/@capacitor/ios' - pod 'CapacitorCordova', :path => '../node_modules/@capacitor/ios' - pod 'StripeIdentity', '~> 23.32.0' -end - -target 'Plugin' do - capacitor_pods -end - -target 'PluginTests' do - capacitor_pods -end diff --git a/packages/identity/ios/Plugin/IdentityVerificationSheetEvents.swift b/packages/identity/ios/Sources/StripeIdentityPlugin/IdentityVerificationSheetEvents.swift similarity index 100% rename from packages/identity/ios/Plugin/IdentityVerificationSheetEvents.swift rename to packages/identity/ios/Sources/StripeIdentityPlugin/IdentityVerificationSheetEvents.swift diff --git a/packages/identity/ios/Plugin/Info.plist b/packages/identity/ios/Sources/StripeIdentityPlugin/Info.plist similarity index 100% rename from packages/identity/ios/Plugin/Info.plist rename to packages/identity/ios/Sources/StripeIdentityPlugin/Info.plist diff --git a/packages/identity/ios/Plugin/StripeIdentity.swift b/packages/identity/ios/Sources/StripeIdentityPlugin/StripeIdentity.swift similarity index 100% rename from packages/identity/ios/Plugin/StripeIdentity.swift rename to packages/identity/ios/Sources/StripeIdentityPlugin/StripeIdentity.swift diff --git a/packages/identity/ios/Plugin/StripeIdentityPlugin.swift b/packages/identity/ios/Sources/StripeIdentityPlugin/StripeIdentityPlugin.swift similarity index 100% rename from packages/identity/ios/Plugin/StripeIdentityPlugin.swift rename to packages/identity/ios/Sources/StripeIdentityPlugin/StripeIdentityPlugin.swift diff --git a/packages/identity/ios/PluginTests/StripeIdentityTests.swift b/packages/identity/ios/Tests/StripeIdentityPluginTests/StripeIdentityPluginTests.swift similarity index 91% rename from packages/identity/ios/PluginTests/StripeIdentityTests.swift rename to packages/identity/ios/Tests/StripeIdentityPluginTests/StripeIdentityPluginTests.swift index 043dad2cc..e1db2b100 100644 --- a/packages/identity/ios/PluginTests/StripeIdentityTests.swift +++ b/packages/identity/ios/Tests/StripeIdentityPluginTests/StripeIdentityPluginTests.swift @@ -1,8 +1,7 @@ import XCTest -@testable import Plugin +@testable import StripeIdentityPlugin class StripeIdentityTests: XCTestCase { - func testEcho() { // This is an example of a functional test case for a plugin. // Use XCTAssert and related functions to verify your tests produce the correct results. From c8f7d8a0e5c773c9b0abfce31d268542dd83ffa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 09:47:45 +0900 Subject: [PATCH 10/41] feat(): update package.json and gitignore --- packages/identity/.gitignore | 9 +++++++++ packages/identity/ios/.gitignore | 8 ++++++++ packages/identity/package.json | 4 +++- packages/payment/.gitignore | 9 +++++++++ packages/payment/package.json | 4 +++- packages/terminal/.gitignore | 9 +++++++++ packages/terminal/package.json | 4 +++- 7 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 packages/identity/ios/.gitignore diff --git a/packages/identity/.gitignore b/packages/identity/.gitignore index 70ccbf713..df9f0c202 100644 --- a/packages/identity/.gitignore +++ b/packages/identity/.gitignore @@ -5,8 +5,17 @@ node_modules # iOS files Pods Podfile.lock +Package.resolved Build xcuserdata +/.build +/Packages +xcuserdata/ +DerivedData/ +.swiftpm/configuration/registries.json +.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +.netrc + # macOS files .DS_Store diff --git a/packages/identity/ios/.gitignore b/packages/identity/ios/.gitignore new file mode 100644 index 000000000..afb34f837 --- /dev/null +++ b/packages/identity/ios/.gitignore @@ -0,0 +1,8 @@ +.DS_Store +.build +/Packages +xcuserdata/ +DerivedData/ +.swiftpm/configuration/registries.json +.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +.netrc \ No newline at end of file diff --git a/packages/identity/package.json b/packages/identity/package.json index 2be193266..55fd0585e 100644 --- a/packages/identity/package.json +++ b/packages/identity/package.json @@ -13,7 +13,9 @@ "android/src/main/", "android/build.gradle", "dist/", - "ios/Plugin/", + "ios/Sources", + "ios/Tests", + "Package.swift", "CapacitorCommunityStripeIdentity.podspec" ], "author": "Masahiko Sakakibara", diff --git a/packages/payment/.gitignore b/packages/payment/.gitignore index 70ccbf713..df9f0c202 100644 --- a/packages/payment/.gitignore +++ b/packages/payment/.gitignore @@ -5,8 +5,17 @@ node_modules # iOS files Pods Podfile.lock +Package.resolved Build xcuserdata +/.build +/Packages +xcuserdata/ +DerivedData/ +.swiftpm/configuration/registries.json +.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +.netrc + # macOS files .DS_Store diff --git a/packages/payment/package.json b/packages/payment/package.json index c551100f7..11d20d105 100644 --- a/packages/payment/package.json +++ b/packages/payment/package.json @@ -25,7 +25,9 @@ "android/build.gradle", "dist/", "src/", - "ios/Plugin/", + "ios/Sources", + "ios/Tests", + "Package.swift", "CapacitorCommunityStripe.podspec" ], "author": "Masahiko Sakakibara ", diff --git a/packages/terminal/.gitignore b/packages/terminal/.gitignore index 70ccbf713..df9f0c202 100644 --- a/packages/terminal/.gitignore +++ b/packages/terminal/.gitignore @@ -5,8 +5,17 @@ node_modules # iOS files Pods Podfile.lock +Package.resolved Build xcuserdata +/.build +/Packages +xcuserdata/ +DerivedData/ +.swiftpm/configuration/registries.json +.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +.netrc + # macOS files .DS_Store diff --git a/packages/terminal/package.json b/packages/terminal/package.json index 51d065890..75c718214 100644 --- a/packages/terminal/package.json +++ b/packages/terminal/package.json @@ -13,7 +13,9 @@ "android/src/main/", "android/build.gradle", "dist/", - "ios/Plugin/", + "ios/Sources", + "ios/Tests", + "Package.swift", "CapacitorCommunityStripeTerminal.podspec" ], "author": "Masahiko Sakakibara", From f3857ebd713c5b43fc0941f10d3f1d7be8ce528d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 09:47:54 +0900 Subject: [PATCH 11/41] chore(): remove unused file --- .../simPRO-Software-stripe-terminal-6.2.2.tgz | Bin 81954 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 packages/terminal/simPRO-Software-stripe-terminal-6.2.2.tgz diff --git a/packages/terminal/simPRO-Software-stripe-terminal-6.2.2.tgz b/packages/terminal/simPRO-Software-stripe-terminal-6.2.2.tgz deleted file mode 100644 index 2482fd2e0e9be0a49330137e3e821539172f4810..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81954 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 Date: Wed, 4 Dec 2024 09:59:31 +0900 Subject: [PATCH 12/41] feat(): update every package dependency --- packages/identity/package-lock.json | 1964 +++++++++++++---- packages/identity/package.json | 20 +- .../rollup.config.mjs} | 0 packages/payment/package-lock.json | 1941 ++++++++++------ packages/payment/package.json | 22 +- .../rollup.config.mjs} | 2 +- packages/terminal/package-lock.json | 1964 +++++++++++++---- packages/terminal/package.json | 20 +- .../{rollup.config.js => rollup.config.mjs} | 2 +- 9 files changed, 4266 insertions(+), 1669 deletions(-) rename packages/{payment/rollup.config.js => identity/rollup.config.mjs} (100%) rename packages/{identity/rollup.config.js => payment/rollup.config.mjs} (91%) rename packages/terminal/{rollup.config.js => rollup.config.mjs} (91%) diff --git a/packages/identity/package-lock.json b/packages/identity/package-lock.json index 1a0dfd503..86997e720 100644 --- a/packages/identity/package-lock.json +++ b/packages/identity/package-lock.json @@ -16,15 +16,15 @@ "@capacitor/core": "^6.0.0", "@capacitor/docgen": "^0.0.18", "@capacitor/ios": "^6.0.0", - "@ionic/eslint-config": "^0.3.0", - "@ionic/prettier-config": "^1.0.1", - "@ionic/swiftlint-config": "^1.1.2", - "eslint": "^7.11.0", - "prettier": "~2.3.0", - "prettier-plugin-java": "~1.0.2", - "rimraf": "^3.0.2", - "rollup": "^2.32.0", - "swiftlint": "^1.0.1", + "@ionic/eslint-config": "^0.4.0", + "@ionic/prettier-config": "^4.0.0", + "@ionic/swiftlint-config": "^2.0.0", + "eslint": "^8.57.0", + "prettier": "^3.3.3", + "prettier-plugin-java": "^2.6.4", + "rimraf": "^6.0.1", + "rollup": "^4.24.0", + "swiftlint": "^2.0.0", "typescript": "~4.1.5" }, "engines": { @@ -43,96 +43,28 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.12.11", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.22.20", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, "node_modules/@capacitor/android": { @@ -194,80 +126,188 @@ "@capacitor/core": "^6.0.0" } }, + "node_modules/@chevrotain/cst-dts-gen": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", + "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/gast": "11.0.3", + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/@chevrotain/gast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", + "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/@chevrotain/regexp-to-ast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz", + "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/types": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", + "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/utils": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", + "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "0.4.3", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "license": "MIT", "dependencies": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "4.0.6", + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, "license": "MIT", "engines": { - "node": ">= 4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", "dev": true, "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", "dev": true, "license": "BSD-3-Clause" }, "node_modules/@ionic/eslint-config": { - "version": "0.3.0", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@ionic/eslint-config/-/eslint-config-0.4.0.tgz", + "integrity": "sha512-L8OXY29D3iGqNtteFj0iz3eoZIVgokBiVjCO8WMssNZa4GTHjYsase0rC9ASXGefMnLJu6rbNl3Gbx7NNxJRZQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "^4.1.0", - "@typescript-eslint/parser": "^4.1.0", - "eslint-config-prettier": "^6.11.0", - "eslint-plugin-import": "^2.22.0" + "@typescript-eslint/eslint-plugin": "^5.58.0", + "@typescript-eslint/parser": "^5.58.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-import": "^2.27.0" }, "peerDependencies": { "eslint": ">=7" } }, "node_modules/@ionic/prettier-config": { - "version": "1.0.1", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@ionic/prettier-config/-/prettier-config-4.0.0.tgz", + "integrity": "sha512-0DqL6CggVdgeJAWOLPUT73rF1VD5p0tVlCpC5GXz5vTIUBxNwsJ5085Q7wXjKiE5Odx3aOHGTcuRWCawFsLFag==", "dev": true, "license": "MIT", "peerDependencies": { - "prettier": "^2.0.0" + "prettier": "^2.4.0 || ^3.0.0" } }, "node_modules/@ionic/swiftlint-config": { - "version": "1.1.2", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@ionic/swiftlint-config/-/swiftlint-config-2.0.0.tgz", + "integrity": "sha512-TXy76ALSKhUZzBziHz7aoEtSQwHofBIDRNzM9x4sndtC7fefbZsBw3UgGwXFTOc7hoj72EAGyqZNUhj9LlhaNQ==", "dev": true, "license": "MIT" }, "node_modules/@ionic/utils-array": { - "version": "2.1.5", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@ionic/utils-array/-/utils-array-2.1.6.tgz", + "integrity": "sha512-0JZ1Zkp3wURnv8oq6Qt7fMPo5MpjbLoUoa9Bu2Q4PJuSDWM8H8gwF3dQO7VTeUj3/0o1IB1wGkFWZZYgUXZMUg==", "dev": true, "license": "MIT", "dependencies": { @@ -275,11 +315,13 @@ "tslib": "^2.0.1" }, "engines": { - "node": ">=10.3.0" + "node": ">=16.0.0" } }, "node_modules/@ionic/utils-fs": { - "version": "3.1.6", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@ionic/utils-fs/-/utils-fs-3.1.7.tgz", + "integrity": "sha512-2EknRvMVfhnyhL1VhFkSLa5gOcycK91VnjfrTB0kbqkTFCOXyXgVLI5whzq7SLrgD9t1aqos3lMMQyVzaQ5gVA==", "dev": true, "license": "MIT", "dependencies": { @@ -289,11 +331,13 @@ "tslib": "^2.0.1" }, "engines": { - "node": ">=10.3.0" + "node": ">=16.0.0" } }, "node_modules/@ionic/utils-object": { - "version": "2.1.5", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@ionic/utils-object/-/utils-object-2.1.6.tgz", + "integrity": "sha512-vCl7sl6JjBHFw99CuAqHljYJpcE88YaH2ZW4ELiC/Zwxl5tiwn4kbdP/gxi2OT3MQb1vOtgAmSNRtusvgxI8ww==", "dev": true, "license": "MIT", "dependencies": { @@ -301,27 +345,38 @@ "tslib": "^2.0.1" }, "engines": { - "node": ">=10.3.0" + "node": ">=16.0.0" } }, "node_modules/@ionic/utils-process": { - "version": "2.1.10", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/@ionic/utils-process/-/utils-process-2.1.12.tgz", + "integrity": "sha512-Jqkgyq7zBs/v/J3YvKtQQiIcxfJyplPgECMWgdO0E1fKrrH8EF0QGHNJ9mJCn6PYe2UtHNS8JJf5G21e09DfYg==", "dev": true, "license": "MIT", "dependencies": { - "@ionic/utils-object": "2.1.5", - "@ionic/utils-terminal": "2.3.3", + "@ionic/utils-object": "2.1.6", + "@ionic/utils-terminal": "2.3.5", "debug": "^4.0.0", "signal-exit": "^3.0.3", "tree-kill": "^1.2.2", "tslib": "^2.0.1" }, "engines": { - "node": ">=10.3.0" + "node": ">=16.0.0" } }, + "node_modules/@ionic/utils-process/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, "node_modules/@ionic/utils-stream": { - "version": "3.1.5", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@ionic/utils-stream/-/utils-stream-3.1.7.tgz", + "integrity": "sha512-eSELBE7NWNFIHTbTC2jiMvh1ABKGIpGdUIvARsNPMNQhxJB3wpwdiVnoBoTYp+5a6UUIww4Kpg7v6S7iTctH1w==", "dev": true, "license": "MIT", "dependencies": { @@ -329,29 +384,33 @@ "tslib": "^2.0.1" }, "engines": { - "node": ">=10.3.0" + "node": ">=16.0.0" } }, "node_modules/@ionic/utils-subprocess": { - "version": "2.1.11", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@ionic/utils-subprocess/-/utils-subprocess-3.0.1.tgz", + "integrity": "sha512-cT4te3AQQPeIM9WCwIg8ohroJ8TjsYaMb2G4ZEgv9YzeDqHZ4JpeIKqG2SoaA3GmVQ3sOfhPM6Ox9sxphV/d1A==", "dev": true, "license": "MIT", "dependencies": { - "@ionic/utils-array": "2.1.5", - "@ionic/utils-fs": "3.1.6", - "@ionic/utils-process": "2.1.10", - "@ionic/utils-stream": "3.1.5", - "@ionic/utils-terminal": "2.3.3", + "@ionic/utils-array": "2.1.6", + "@ionic/utils-fs": "3.1.7", + "@ionic/utils-process": "2.1.12", + "@ionic/utils-stream": "3.1.7", + "@ionic/utils-terminal": "2.3.5", "cross-spawn": "^7.0.3", "debug": "^4.0.0", "tslib": "^2.0.1" }, "engines": { - "node": ">=10.3.0" + "node": ">=16.0.0" } }, "node_modules/@ionic/utils-terminal": { - "version": "2.3.3", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@ionic/utils-terminal/-/utils-terminal-2.3.5.tgz", + "integrity": "sha512-3cKScz9Jx2/Pr9ijj1OzGlBDfcmx7OMVBt4+P1uRR0SSW4cm1/y3Mo4OY3lfkuaYifMNBW8Wz6lQHbs1bihr7A==", "dev": true, "license": "MIT", "dependencies": { @@ -366,11 +425,107 @@ "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=10.3.0" + "node": ">=16.0.0" + } + }, + "node_modules/@ionic/utils-terminal/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@ionic/utils-terminal/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@ionic/utils-terminal/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@ionic/utils-terminal/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "license": "MIT", "dependencies": { @@ -383,6 +538,8 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "license": "MIT", "engines": { @@ -391,6 +548,8 @@ }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "license": "MIT", "dependencies": { @@ -401,12 +560,273 @@ "node": ">= 8" } }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.28.0.tgz", + "integrity": "sha512-wLJuPLT6grGZsy34g4N1yRfYeouklTgPhH1gWXCYspenKYD0s3cR99ZevOGw5BexMNywkbV3UkjADisozBmpPQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.28.0.tgz", + "integrity": "sha512-eiNkznlo0dLmVG/6wf+Ifi/v78G4d4QxRhuUl+s8EWZpDewgk7PX3ZyECUXU0Zq/Ca+8nU8cQpNC4Xgn2gFNDA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.28.0.tgz", + "integrity": "sha512-lmKx9yHsppblnLQZOGxdO66gT77bvdBtr/0P+TPOseowE7D9AJoBw8ZDULRasXRWf1Z86/gcOdpBrV6VDUY36Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.28.0.tgz", + "integrity": "sha512-8hxgfReVs7k9Js1uAIhS6zq3I+wKQETInnWQtgzt8JfGx51R1N6DRVy3F4o0lQwumbErRz52YqwjfvuwRxGv1w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.28.0.tgz", + "integrity": "sha512-lA1zZB3bFx5oxu9fYud4+g1mt+lYXCoch0M0V/xhqLoGatbzVse0wlSQ1UYOWKpuSu3gyN4qEc0Dxf/DII1bhQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.28.0.tgz", + "integrity": "sha512-aI2plavbUDjCQB/sRbeUZWX9qp12GfYkYSJOrdYTL/C5D53bsE2/nBPuoiJKoWp5SN78v2Vr8ZPnB+/VbQ2pFA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.28.0.tgz", + "integrity": "sha512-WXveUPKtfqtaNvpf0iOb0M6xC64GzUX/OowbqfiCSXTdi/jLlOmH0Ba94/OkiY2yTGTwteo4/dsHRfh5bDCZ+w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.28.0.tgz", + "integrity": "sha512-yLc3O2NtOQR67lI79zsSc7lk31xjwcaocvdD1twL64PK1yNaIqCeWI9L5B4MFPAVGEVjH5k1oWSGuYX1Wutxpg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.28.0.tgz", + "integrity": "sha512-+P9G9hjEpHucHRXqesY+3X9hD2wh0iNnJXX/QhS/J5vTdG6VhNYMxJ2rJkQOxRUd17u5mbMLHM7yWGZdAASfcg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.28.0.tgz", + "integrity": "sha512-1xsm2rCKSTpKzi5/ypT5wfc+4bOGa/9yI/eaOLW0oMs7qpC542APWhl4A37AENGZ6St6GBMWhCCMM6tXgTIplw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.28.0.tgz", + "integrity": "sha512-zgWxMq8neVQeXL+ouSf6S7DoNeo6EPgi1eeqHXVKQxqPy1B2NvTbaOUWPn/7CfMKL7xvhV0/+fq/Z/J69g1WAQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.28.0.tgz", + "integrity": "sha512-VEdVYacLniRxbRJLNtzwGt5vwS0ycYshofI7cWAfj7Vg5asqj+pt+Q6x4n+AONSZW/kVm+5nklde0qs2EUwU2g==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.28.0.tgz", + "integrity": "sha512-LQlP5t2hcDJh8HV8RELD9/xlYtEzJkm/aWGsauvdO2ulfl3QYRjqrKW+mGAIWP5kdNCBheqqqYIGElSRCaXfpw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.28.0.tgz", + "integrity": "sha512-Nl4KIzteVEKE9BdAvYoTkW19pa7LR/RBrT6F1dJCV/3pbjwDcaOq+edkP0LXuJ9kflW/xOK414X78r+K84+msw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.28.0.tgz", + "integrity": "sha512-eKpJr4vBDOi4goT75MvW+0dXcNUqisK4jvibY9vDdlgLx+yekxSm55StsHbxUsRxSTt3JEQvlr3cGDkzcSP8bw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.28.0.tgz", + "integrity": "sha512-Vi+WR62xWGsE/Oj+mD0FNAPY2MEox3cfyG0zLpotZdehPFXwz6lypkGs5y38Jd/NVSbOD02aVad6q6QYF7i8Bg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.28.0.tgz", + "integrity": "sha512-kN/Vpip8emMLn/eOza+4JwqDZBL6MPNpkdaEsgUtW1NYN3DZvZqSQrbKzJcTL6hd8YNmFTn7XGWMwccOcJBL0A==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.28.0.tgz", + "integrity": "sha512-Bvno2/aZT6usSa7lRDL2+hMjVAGjuqaymF1ApZm31JXzniR/hvr14jpU+/z4X6Gt5BPlzosscyJZGUvguXIqeQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@stripe/stripe-js": { "version": "2.1.11", "license": "MIT" }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/fs-extra": { - "version": "8.1.3", + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.5.tgz", + "integrity": "sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==", "dev": true, "license": "MIT", "dependencies": { @@ -414,7 +834,9 @@ } }, "node_modules/@types/json-schema": { - "version": "7.0.13", + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true, "license": "MIT" }, @@ -428,40 +850,48 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/parse-json": { - "version": "4.0.0", + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", "dev": true, "license": "MIT" }, "node_modules/@types/slice-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-+OpjSaq85gvlZAYINyzKpLeiFkSC4EsC6IIiT6v6TLSU5k5U83fHGj9Lel8oKEXM0HqgrMVCjXPDPVICtxF7EQ==", "dev": true, "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.33.0", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/experimental-utils": "4.33.0", - "@typescript-eslint/scope-manager": "4.33.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.1.0", - "semver": "^7.3.5", + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^4.0.0", - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -469,77 +899,88 @@ } } }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.33.0", + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "*" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@typescript-eslint/parser": { - "version": "4.33.0", + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "debug": "^4.3.1" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "4.33.0", + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@typescript-eslint/types": { - "version": "4.33.0", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, "license": "MIT", "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", @@ -547,49 +988,89 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "4.33.0", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "4.33.0", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true, + "license": "ISC" + }, "node_modules/acorn": { - "version": "7.4.1", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, "license": "MIT", "bin": { @@ -601,6 +1082,8 @@ }, "node_modules/acorn-jsx": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -609,6 +1092,8 @@ }, "node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", "dependencies": { @@ -622,14 +1107,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-regex": { "version": "5.0.1", "dev": true, @@ -653,12 +1130,11 @@ } }, "node_modules/argparse": { - "version": "1.0.10", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } + "license": "Python-2.0" }, "node_modules/array-buffer-byte-length": { "version": "1.0.0", @@ -692,6 +1168,8 @@ }, "node_modules/array-union": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, "license": "MIT", "engines": { @@ -772,6 +1250,8 @@ }, "node_modules/astral-regex": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, "license": "MIT", "engines": { @@ -780,6 +1260,8 @@ }, "node_modules/at-least-node": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, "license": "ISC", "engines": { @@ -812,11 +1294,13 @@ } }, "node_modules/braces": { - "version": "3.0.2", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -836,6 +1320,8 @@ }, "node_modules/callsites": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "license": "MIT", "engines": { @@ -858,11 +1344,31 @@ } }, "node_modules/chevrotain": { - "version": "6.5.0", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", + "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "regexp-to-ast": "0.4.0" + "@chevrotain/cst-dts-gen": "11.0.3", + "@chevrotain/gast": "11.0.3", + "@chevrotain/regexp-to-ast": "11.0.3", + "@chevrotain/types": "11.0.3", + "@chevrotain/utils": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/chevrotain-allstar": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", + "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash-es": "^4.17.21" + }, + "peerDependencies": { + "chevrotain": "^11.0.0" } }, "node_modules/color-convert": { @@ -891,21 +1397,6 @@ "dev": true, "license": "MIT" }, - "node_modules/cosmiconfig": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/cross-spawn": { "version": "7.0.3", "dev": true, @@ -971,6 +1462,8 @@ }, "node_modules/dir-glob": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "license": "MIT", "dependencies": { @@ -991,25 +1484,34 @@ "node": ">=6.0.0" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, "node_modules/emoji-regex": { - "version": "8.0.0", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true, "license": "MIT" }, - "node_modules/enquirer": { - "version": "2.4.1", + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" - }, "engines": { - "node": ">=8.6" + "node": ">=6" } }, "node_modules/error-ex": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "license": "MIT", "dependencies": { @@ -1117,73 +1619,73 @@ } }, "node_modules/eslint": { - "version": "7.32.0", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-config-prettier": { - "version": "6.15.0", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", "dev": true, "license": "MIT", - "dependencies": { - "get-stdin": "^6.0.0" - }, "bin": { - "eslint-config-prettier-check": "bin/cli.js" + "eslint-config-prettier": "bin/cli.js" }, "peerDependencies": { - "eslint": ">=3.14.1" + "eslint": ">=7.0.0" } }, "node_modules/eslint-import-resolver-node": { @@ -1287,6 +1789,8 @@ }, "node_modules/eslint-scope": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -1297,92 +1801,62 @@ "node": ">=8.0.0" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, "node_modules/eslint-visitor-keys": { - "version": "2.1.0", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "license": "Apache-2.0", "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/eslint-utils": { - "version": "2.1.0", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=4" + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "engines": { - "node": ">= 4" + "node": ">=4.0" } }, "node_modules/espree": { - "version": "7.3.1", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=4" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esquery": { @@ -1406,6 +1880,8 @@ }, "node_modules/esrecurse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -1417,6 +1893,8 @@ }, "node_modules/esrecurse/node_modules/estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -1425,6 +1903,8 @@ }, "node_modules/estraverse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -1441,11 +1921,15 @@ }, "node_modules/fast-deep-equal": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true, "license": "MIT" }, "node_modules/fast-glob": { - "version": "3.3.1", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "license": "MIT", "dependencies": { @@ -1459,8 +1943,23 @@ "node": ">=8.6.0" } }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true, "license": "MIT" }, @@ -1470,7 +1969,9 @@ "license": "MIT" }, "node_modules/fastq": { - "version": "1.15.0", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "license": "ISC", "dependencies": { @@ -1489,7 +1990,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "license": "MIT", "dependencies": { @@ -1499,6 +2002,23 @@ "node": ">=8" } }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/flat-cache": { "version": "3.1.1", "dev": true, @@ -1512,6 +2032,45 @@ "node": ">=12.0.0" } }, + "node_modules/flat-cache/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/flatted": { "version": "3.2.9", "dev": true, @@ -1525,8 +2084,27 @@ "is-callable": "^1.1.3" } }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/fs-extra": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1541,6 +2119,8 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true, "license": "ISC" }, @@ -1578,11 +2158,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, "node_modules/functions-have-names": { "version": "1.2.3", "dev": true, @@ -1605,14 +2180,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-stdin": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/get-symbol-description": { "version": "1.0.0", "dev": true, @@ -1634,37 +2201,72 @@ "license": "ISC" }, "node_modules/glob": { - "version": "7.2.3", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", + "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", "dev": true, "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": "*" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/glob-parent": { - "version": "5.1.2", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "license": "ISC", "dependencies": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/globals": { - "version": "13.23.0", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1693,6 +2295,8 @@ }, "node_modules/globby": { "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "license": "MIT", "dependencies": { @@ -1723,9 +2327,18 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true, "license": "ISC" }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, "node_modules/has": { "version": "1.0.4", "dev": true, @@ -1798,7 +2411,9 @@ } }, "node_modules/ignore": { - "version": "5.2.4", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", "engines": { @@ -1807,6 +2422,8 @@ }, "node_modules/import-fresh": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "license": "MIT", "dependencies": { @@ -1830,6 +2447,9 @@ }, "node_modules/inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "license": "ISC", "dependencies": { @@ -1839,6 +2459,8 @@ }, "node_modules/inherits": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true, "license": "ISC" }, @@ -1870,6 +2492,8 @@ }, "node_modules/is-arrayish": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true, "license": "MIT" }, @@ -1945,6 +2569,8 @@ }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", "engines": { @@ -1975,6 +2601,8 @@ }, "node_modules/is-number": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "license": "MIT", "engines": { @@ -1995,6 +2623,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-regex": { "version": "1.1.4", "dev": true, @@ -2084,27 +2722,49 @@ "dev": true, "license": "ISC" }, + "node_modules/jackspeak": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.2.tgz", + "integrity": "sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/java-parser": { - "version": "1.0.2", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/java-parser/-/java-parser-2.3.2.tgz", + "integrity": "sha512-/O42UbEHy3VVJw8W0ruHkQjW75oWvQx4QisoUDRIGir6q3/IZ4JslDMPMYEqp7LU56PYJkH5uXdQiBaCXt/Opw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "chevrotain": "6.5.0", + "chevrotain": "11.0.3", + "chevrotain-allstar": "0.3.1", "lodash": "4.17.21" } }, "node_modules/js-tokens": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT" }, "node_modules/js-yaml": { - "version": "3.14.1", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" @@ -2117,11 +2777,15 @@ }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true, "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "license": "MIT" }, @@ -2143,6 +2807,8 @@ }, "node_modules/jsonfile": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2174,37 +2840,60 @@ }, "node_modules/lines-and-columns": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true, "license": "MIT" }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lodash": { "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true, "license": "MIT" }, - "node_modules/lodash.merge": { - "version": "4.6.2", + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", "dev": true, "license": "MIT" }, - "node_modules/lodash.truncate": { - "version": "4.4.2", + "node_modules/lodash.merge": { + "version": "4.6.2", "dev": true, "license": "MIT" }, "node_modules/lru-cache": { - "version": "6.0.0", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", + "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, + "license": "ISC", "engines": { - "node": ">=10" + "node": "20 || >=22" } }, "node_modules/merge2": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, "license": "MIT", "engines": { @@ -2212,11 +2901,13 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "license": "MIT", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -2242,6 +2933,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/ms": { "version": "2.1.2", "dev": true, @@ -2252,6 +2953,13 @@ "dev": true, "license": "MIT" }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true, + "license": "MIT" + }, "node_modules/object-inspect": { "version": "1.12.3", "dev": true, @@ -2330,6 +3038,8 @@ }, "node_modules/once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "license": "ISC", "dependencies": { @@ -2352,8 +3062,49 @@ "node": ">= 0.8.0" } }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/parent-module": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "license": "MIT", "dependencies": { @@ -2365,6 +3116,8 @@ }, "node_modules/parse-json": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "license": "MIT", "dependencies": { @@ -2380,8 +3133,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "license": "MIT", "engines": { @@ -2401,16 +3166,44 @@ "dev": true, "license": "MIT" }, + "node_modules/path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/path-type": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, "node_modules/picomatch": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", "engines": { @@ -2429,47 +3222,53 @@ } }, "node_modules/prettier": { - "version": "2.3.2", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.1.tgz", + "integrity": "sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==", "dev": true, "license": "MIT", "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/prettier-plugin-java": { - "version": "1.0.2", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/prettier-plugin-java/-/prettier-plugin-java-2.6.5.tgz", + "integrity": "sha512-2RkPNXyYpP5dRhr04pz45n+e5LXwYWTh1JXrztiCkZTGGokIGYrfwUuGa8csnDoGbP6CDPgVm8zZSIm/9I0SRQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "java-parser": "1.0.2", + "java-parser": "2.3.2", "lodash": "4.17.21", - "prettier": "2.2.1" + "prettier": "3.2.5" } }, "node_modules/prettier-plugin-java/node_modules/prettier": { - "version": "2.2.1", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", "dev": true, "license": "MIT", "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/progress": { - "version": "2.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/punycode": { - "version": "2.3.0", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "license": "MIT", "engines": { @@ -2478,6 +3277,8 @@ }, "node_modules/queue-microtask": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, "funding": [ { @@ -2495,11 +3296,6 @@ ], "license": "MIT" }, - "node_modules/regexp-to-ast": { - "version": "0.4.0", - "dev": true, - "license": "MIT" - }, "node_modules/regexp.prototype.flags": { "version": "1.5.1", "dev": true, @@ -2516,25 +3312,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/resolve": { "version": "1.22.6", "dev": true, @@ -2553,6 +3330,8 @@ }, "node_modules/resolve-from": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "license": "MIT", "engines": { @@ -2561,6 +3340,8 @@ }, "node_modules/reusify": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, "license": "MIT", "engines": { @@ -2569,35 +3350,67 @@ } }, "node_modules/rimraf": { - "version": "3.0.2", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", + "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", "dev": true, "license": "ISC", "dependencies": { - "glob": "^7.1.3" + "glob": "^11.0.0", + "package-json-from-dist": "^1.0.0" }, "bin": { - "rimraf": "bin.js" + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/rollup": { - "version": "2.79.1", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.28.0.tgz", + "integrity": "sha512-G9GOrmgWHBma4YfCcX8PjH0qhXSdH8B4HDE2o4/jaxj93S4DPCIDoLcXz99eWMji4hB29UFCEd7B2gwGJDR9cQ==", "dev": true, "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, "bin": { "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=10.0.0" + "node": ">=18.0.0", + "npm": ">=8.0.0" }, "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.28.0", + "@rollup/rollup-android-arm64": "4.28.0", + "@rollup/rollup-darwin-arm64": "4.28.0", + "@rollup/rollup-darwin-x64": "4.28.0", + "@rollup/rollup-freebsd-arm64": "4.28.0", + "@rollup/rollup-freebsd-x64": "4.28.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.28.0", + "@rollup/rollup-linux-arm-musleabihf": "4.28.0", + "@rollup/rollup-linux-arm64-gnu": "4.28.0", + "@rollup/rollup-linux-arm64-musl": "4.28.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.28.0", + "@rollup/rollup-linux-riscv64-gnu": "4.28.0", + "@rollup/rollup-linux-s390x-gnu": "4.28.0", + "@rollup/rollup-linux-x64-gnu": "4.28.0", + "@rollup/rollup-linux-x64-musl": "4.28.0", + "@rollup/rollup-win32-arm64-msvc": "4.28.0", + "@rollup/rollup-win32-ia32-msvc": "4.28.0", + "@rollup/rollup-win32-x64-msvc": "4.28.0", "fsevents": "~2.3.2" } }, "node_modules/run-parallel": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "funding": [ { @@ -2649,12 +3462,11 @@ } }, "node_modules/semver": { - "version": "7.5.4", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -2708,12 +3520,22 @@ } }, "node_modules/signal-exit": { - "version": "3.0.7", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "license": "ISC" + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/slash": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", "engines": { @@ -2722,6 +3544,8 @@ }, "node_modules/slice-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2736,13 +3560,29 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, - "license": "BSD-3-Clause" + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/string-width": { + "node_modules/string-width-cjs": { + "name": "string-width", "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { @@ -2754,6 +3594,42 @@ "node": ">=8" } }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/string.prototype.trim": { "version": "1.2.8", "dev": true, @@ -2807,6 +3683,20 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "3.0.0", "dev": true, @@ -2817,6 +3707,8 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "license": "MIT", "engines": { @@ -2849,53 +3741,63 @@ } }, "node_modules/swiftlint": { - "version": "1.0.2", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/swiftlint/-/swiftlint-2.0.0.tgz", + "integrity": "sha512-MMVuyZ4/6WcIJlk0z6GM0pZjRuwnyUJqRPbJBFW3oACN/qjAvRbolCWEu+zE2MycF/cEgqfUpI+oLECNfjfOJA==", "dev": true, "hasInstallScript": true, "license": "MIT", "dependencies": { - "@ionic/utils-fs": "3.1.6", - "@ionic/utils-subprocess": "2.1.11", - "cosmiconfig": "^6.0.0" + "@ionic/utils-fs": "^3.1.7", + "@ionic/utils-subprocess": "^3.0.1", + "cosmiconfig": "^9.0.0" }, "bin": { "node-swiftlint": "bin.js" } }, - "node_modules/table": { - "version": "6.8.1", + "node_modules/swiftlint/node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" }, "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.12.0", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "node": ">=14" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", + "node_modules/swiftlint/node_modules/typescript": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "optional": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } }, "node_modules/text-table": { "version": "0.2.0", @@ -2904,6 +3806,8 @@ }, "node_modules/to-regex-range": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2915,6 +3819,8 @@ }, "node_modules/tree-kill": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, "license": "MIT", "bin": { @@ -2939,6 +3845,8 @@ }, "node_modules/tsutils": { "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, "license": "MIT", "dependencies": { @@ -2953,6 +3861,8 @@ }, "node_modules/tsutils/node_modules/tslib": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, "license": "0BSD" }, @@ -2969,6 +3879,8 @@ }, "node_modules/type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -3066,7 +3978,9 @@ } }, "node_modules/universalify": { - "version": "2.0.0", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -3075,6 +3989,8 @@ }, "node_modules/untildify": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", "dev": true, "license": "MIT", "engines": { @@ -3083,17 +3999,14 @@ }, "node_modules/uri-js": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, - "node_modules/v8-compile-cache": { - "version": "2.4.0", - "dev": true, - "license": "MIT" - }, "node_modules/which": { "version": "2.0.2", "dev": true, @@ -3142,7 +4055,28 @@ } }, "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", "dependencies": { @@ -3157,22 +4091,88 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrappy": { - "version": "1.0.2", + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/yallist": { - "version": "4.0.0", + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true, "license": "ISC" }, - "node_modules/yaml": { - "version": "1.10.2", + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": ">= 6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } } } diff --git a/packages/identity/package.json b/packages/identity/package.json index 55fd0585e..de32ca901 100644 --- a/packages/identity/package.json +++ b/packages/identity/package.json @@ -43,7 +43,7 @@ "prettier": "prettier \"**/*.{css,html,ts,js,java}\"", "swiftlint": "node-swiftlint", "docgen": "docgen --api StripeIdentityPlugin --output-readme README.md --output-json dist/docs.json", - "build": "npm run clean && npm run docgen && tsc && rollup -c rollup.config.js", + "build": "npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs", "clean": "rimraf ./dist", "watch": "tsc --watch", "prepublishOnly": "npm run build" @@ -53,15 +53,15 @@ "@capacitor/core": "^6.0.0", "@capacitor/docgen": "^0.0.18", "@capacitor/ios": "^6.0.0", - "@ionic/eslint-config": "^0.3.0", - "@ionic/prettier-config": "^1.0.1", - "@ionic/swiftlint-config": "^1.1.2", - "eslint": "^7.11.0", - "prettier": "~2.3.0", - "prettier-plugin-java": "~1.0.2", - "rimraf": "^3.0.2", - "rollup": "^2.32.0", - "swiftlint": "^1.0.1", + "@ionic/eslint-config": "^0.4.0", + "@ionic/prettier-config": "^4.0.0", + "@ionic/swiftlint-config": "^2.0.0", + "eslint": "^8.57.0", + "prettier": "^3.3.3", + "prettier-plugin-java": "^2.6.4", + "rimraf": "^6.0.1", + "rollup": "^4.24.0", + "swiftlint": "^2.0.0", "typescript": "~4.1.5" }, "peerDependencies": { diff --git a/packages/payment/rollup.config.js b/packages/identity/rollup.config.mjs similarity index 100% rename from packages/payment/rollup.config.js rename to packages/identity/rollup.config.mjs diff --git a/packages/payment/package-lock.json b/packages/payment/package-lock.json index f13c3b5cf..472fc05a5 100644 --- a/packages/payment/package-lock.json +++ b/packages/payment/package-lock.json @@ -13,18 +13,17 @@ "@capacitor/core": "^6.0.0", "@capacitor/docgen": "git+https://github.com/rdlabo/capacitor-docgen.git#release", "@capacitor/ios": "^6.0.0", - "@ionic/eslint-config": "^0.3.0", - "@ionic/prettier-config": "^2.0.0", - "@ionic/swiftlint-config": "^1.1.2", - "@rdlabo/capacitor-plugin-to-v4": "^0.0.5", + "@ionic/eslint-config": "^0.4.0", + "@ionic/prettier-config": "^4.0.0", + "@ionic/swiftlint-config": "^2.0.0", "@types/react": "^16.14.3", "@typescript-eslint/eslint-plugin": "^5.27.1", - "eslint": "^7.32.0", - "prettier": "^2.3.0", - "prettier-plugin-java": "^1.0.2", - "rimraf": "^3.0.2", - "rollup": "^2.32.0", - "swiftlint": "^1.0.1", + "eslint": "^8.57.0", + "prettier": "^3.3.3", + "prettier-plugin-java": "^2.6.4", + "rimraf": "^6.0.1", + "rollup": "^4.24.0", + "swiftlint": "^2.0.0", "typescript": "~4.1.5" }, "engines": { @@ -45,96 +44,28 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.12.11", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.22.20", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, "node_modules/@babel/runtime": { @@ -207,6 +138,50 @@ "@capacitor/core": "^6.0.0" } }, + "node_modules/@chevrotain/cst-dts-gen": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", + "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/gast": "11.0.3", + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/@chevrotain/gast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", + "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/@chevrotain/regexp-to-ast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz", + "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/types": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", + "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/utils": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", + "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "dev": true, @@ -230,214 +205,114 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "0.4.3", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "license": "MIT", "dependencies": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "4.0.6", + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, "license": "MIT", "engines": { - "node": ">= 4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", "dev": true, "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@ionic/eslint-config": { - "version": "0.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "^4.1.0", - "@typescript-eslint/parser": "^4.1.0", - "eslint-config-prettier": "^6.11.0", - "eslint-plugin-import": "^2.22.0" - }, - "peerDependencies": { - "eslint": ">=7" - } - }, - "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.33.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/experimental-utils": "4.33.0", - "@typescript-eslint/scope-manager": "4.33.0", + "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^4.0.0", - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/parser": { - "version": "4.33.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "debug": "^4.3.1" + "minimatch": "^3.0.5" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/scope-manager": { - "version": "4.33.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=10.10.0" } }, - "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/types": { - "version": "4.33.0", + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": ">=12.22" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/typescript-estree": { - "version": "4.33.0", + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } + "license": "BSD-3-Clause" }, - "node_modules/@ionic/eslint-config/node_modules/@typescript-eslint/visitor-keys": { - "version": "4.33.0", + "node_modules/@ionic/eslint-config": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@ionic/eslint-config/-/eslint-config-0.4.0.tgz", + "integrity": "sha512-L8OXY29D3iGqNtteFj0iz3eoZIVgokBiVjCO8WMssNZa4GTHjYsase0rC9ASXGefMnLJu6rbNl3Gbx7NNxJRZQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" + "@typescript-eslint/eslint-plugin": "^5.58.0", + "@typescript-eslint/parser": "^5.58.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-import": "^2.27.0" }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ionic/eslint-config/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10" + "peerDependencies": { + "eslint": ">=7" } }, "node_modules/@ionic/prettier-config": { - "version": "2.1.2", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@ionic/prettier-config/-/prettier-config-4.0.0.tgz", + "integrity": "sha512-0DqL6CggVdgeJAWOLPUT73rF1VD5p0tVlCpC5GXz5vTIUBxNwsJ5085Q7wXjKiE5Odx3aOHGTcuRWCawFsLFag==", "dev": true, "license": "MIT", "peerDependencies": { - "prettier": "^2.4.0" + "prettier": "^2.4.0 || ^3.0.0" } }, "node_modules/@ionic/swiftlint-config": { - "version": "1.1.2", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@ionic/swiftlint-config/-/swiftlint-config-2.0.0.tgz", + "integrity": "sha512-TXy76ALSKhUZzBziHz7aoEtSQwHofBIDRNzM9x4sndtC7fefbZsBw3UgGwXFTOc7hoj72EAGyqZNUhj9LlhaNQ==", "dev": true, "license": "MIT" }, "node_modules/@ionic/utils-array": { - "version": "2.1.5", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@ionic/utils-array/-/utils-array-2.1.6.tgz", + "integrity": "sha512-0JZ1Zkp3wURnv8oq6Qt7fMPo5MpjbLoUoa9Bu2Q4PJuSDWM8H8gwF3dQO7VTeUj3/0o1IB1wGkFWZZYgUXZMUg==", "dev": true, "license": "MIT", "dependencies": { @@ -445,11 +320,13 @@ "tslib": "^2.0.1" }, "engines": { - "node": ">=10.3.0" + "node": ">=16.0.0" } }, "node_modules/@ionic/utils-fs": { - "version": "3.1.6", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@ionic/utils-fs/-/utils-fs-3.1.7.tgz", + "integrity": "sha512-2EknRvMVfhnyhL1VhFkSLa5gOcycK91VnjfrTB0kbqkTFCOXyXgVLI5whzq7SLrgD9t1aqos3lMMQyVzaQ5gVA==", "dev": true, "license": "MIT", "dependencies": { @@ -459,11 +336,13 @@ "tslib": "^2.0.1" }, "engines": { - "node": ">=10.3.0" + "node": ">=16.0.0" } }, "node_modules/@ionic/utils-object": { - "version": "2.1.5", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@ionic/utils-object/-/utils-object-2.1.6.tgz", + "integrity": "sha512-vCl7sl6JjBHFw99CuAqHljYJpcE88YaH2ZW4ELiC/Zwxl5tiwn4kbdP/gxi2OT3MQb1vOtgAmSNRtusvgxI8ww==", "dev": true, "license": "MIT", "dependencies": { @@ -471,27 +350,38 @@ "tslib": "^2.0.1" }, "engines": { - "node": ">=10.3.0" + "node": ">=16.0.0" } }, "node_modules/@ionic/utils-process": { - "version": "2.1.10", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/@ionic/utils-process/-/utils-process-2.1.12.tgz", + "integrity": "sha512-Jqkgyq7zBs/v/J3YvKtQQiIcxfJyplPgECMWgdO0E1fKrrH8EF0QGHNJ9mJCn6PYe2UtHNS8JJf5G21e09DfYg==", "dev": true, "license": "MIT", "dependencies": { - "@ionic/utils-object": "2.1.5", - "@ionic/utils-terminal": "2.3.3", + "@ionic/utils-object": "2.1.6", + "@ionic/utils-terminal": "2.3.5", "debug": "^4.0.0", "signal-exit": "^3.0.3", "tree-kill": "^1.2.2", "tslib": "^2.0.1" }, "engines": { - "node": ">=10.3.0" + "node": ">=16.0.0" } }, + "node_modules/@ionic/utils-process/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, "node_modules/@ionic/utils-stream": { - "version": "3.1.5", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@ionic/utils-stream/-/utils-stream-3.1.7.tgz", + "integrity": "sha512-eSELBE7NWNFIHTbTC2jiMvh1ABKGIpGdUIvARsNPMNQhxJB3wpwdiVnoBoTYp+5a6UUIww4Kpg7v6S7iTctH1w==", "dev": true, "license": "MIT", "dependencies": { @@ -499,29 +389,33 @@ "tslib": "^2.0.1" }, "engines": { - "node": ">=10.3.0" + "node": ">=16.0.0" } }, "node_modules/@ionic/utils-subprocess": { - "version": "2.1.11", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@ionic/utils-subprocess/-/utils-subprocess-3.0.1.tgz", + "integrity": "sha512-cT4te3AQQPeIM9WCwIg8ohroJ8TjsYaMb2G4ZEgv9YzeDqHZ4JpeIKqG2SoaA3GmVQ3sOfhPM6Ox9sxphV/d1A==", "dev": true, "license": "MIT", "dependencies": { - "@ionic/utils-array": "2.1.5", - "@ionic/utils-fs": "3.1.6", - "@ionic/utils-process": "2.1.10", - "@ionic/utils-stream": "3.1.5", - "@ionic/utils-terminal": "2.3.3", + "@ionic/utils-array": "2.1.6", + "@ionic/utils-fs": "3.1.7", + "@ionic/utils-process": "2.1.12", + "@ionic/utils-stream": "3.1.7", + "@ionic/utils-terminal": "2.3.5", "cross-spawn": "^7.0.3", "debug": "^4.0.0", "tslib": "^2.0.1" }, "engines": { - "node": ">=10.3.0" + "node": ">=16.0.0" } }, "node_modules/@ionic/utils-terminal": { - "version": "2.3.3", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@ionic/utils-terminal/-/utils-terminal-2.3.5.tgz", + "integrity": "sha512-3cKScz9Jx2/Pr9ijj1OzGlBDfcmx7OMVBt4+P1uRR0SSW4cm1/y3Mo4OY3lfkuaYifMNBW8Wz6lQHbs1bihr7A==", "dev": true, "license": "MIT", "dependencies": { @@ -536,7 +430,101 @@ "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=10.3.0" + "node": ">=16.0.0" + } + }, + "node_modules/@ionic/utils-terminal/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@ionic/utils-terminal/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@ionic/utils-terminal/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@ionic/utils-terminal/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/@nodelib/fs.scandir": { @@ -571,13 +559,257 @@ "node": ">= 8" } }, - "node_modules/@rdlabo/capacitor-plugin-to-v4": { - "version": "0.0.5", + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.28.0.tgz", + "integrity": "sha512-wLJuPLT6grGZsy34g4N1yRfYeouklTgPhH1gWXCYspenKYD0s3cR99ZevOGw5BexMNywkbV3UkjADisozBmpPQ==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "bin": { - "migrate": "src/index.js" - } + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.28.0.tgz", + "integrity": "sha512-eiNkznlo0dLmVG/6wf+Ifi/v78G4d4QxRhuUl+s8EWZpDewgk7PX3ZyECUXU0Zq/Ca+8nU8cQpNC4Xgn2gFNDA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.28.0.tgz", + "integrity": "sha512-lmKx9yHsppblnLQZOGxdO66gT77bvdBtr/0P+TPOseowE7D9AJoBw8ZDULRasXRWf1Z86/gcOdpBrV6VDUY36Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.28.0.tgz", + "integrity": "sha512-8hxgfReVs7k9Js1uAIhS6zq3I+wKQETInnWQtgzt8JfGx51R1N6DRVy3F4o0lQwumbErRz52YqwjfvuwRxGv1w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.28.0.tgz", + "integrity": "sha512-lA1zZB3bFx5oxu9fYud4+g1mt+lYXCoch0M0V/xhqLoGatbzVse0wlSQ1UYOWKpuSu3gyN4qEc0Dxf/DII1bhQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.28.0.tgz", + "integrity": "sha512-aI2plavbUDjCQB/sRbeUZWX9qp12GfYkYSJOrdYTL/C5D53bsE2/nBPuoiJKoWp5SN78v2Vr8ZPnB+/VbQ2pFA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.28.0.tgz", + "integrity": "sha512-WXveUPKtfqtaNvpf0iOb0M6xC64GzUX/OowbqfiCSXTdi/jLlOmH0Ba94/OkiY2yTGTwteo4/dsHRfh5bDCZ+w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.28.0.tgz", + "integrity": "sha512-yLc3O2NtOQR67lI79zsSc7lk31xjwcaocvdD1twL64PK1yNaIqCeWI9L5B4MFPAVGEVjH5k1oWSGuYX1Wutxpg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.28.0.tgz", + "integrity": "sha512-+P9G9hjEpHucHRXqesY+3X9hD2wh0iNnJXX/QhS/J5vTdG6VhNYMxJ2rJkQOxRUd17u5mbMLHM7yWGZdAASfcg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.28.0.tgz", + "integrity": "sha512-1xsm2rCKSTpKzi5/ypT5wfc+4bOGa/9yI/eaOLW0oMs7qpC542APWhl4A37AENGZ6St6GBMWhCCMM6tXgTIplw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.28.0.tgz", + "integrity": "sha512-zgWxMq8neVQeXL+ouSf6S7DoNeo6EPgi1eeqHXVKQxqPy1B2NvTbaOUWPn/7CfMKL7xvhV0/+fq/Z/J69g1WAQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.28.0.tgz", + "integrity": "sha512-VEdVYacLniRxbRJLNtzwGt5vwS0ycYshofI7cWAfj7Vg5asqj+pt+Q6x4n+AONSZW/kVm+5nklde0qs2EUwU2g==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.28.0.tgz", + "integrity": "sha512-LQlP5t2hcDJh8HV8RELD9/xlYtEzJkm/aWGsauvdO2ulfl3QYRjqrKW+mGAIWP5kdNCBheqqqYIGElSRCaXfpw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.28.0.tgz", + "integrity": "sha512-Nl4KIzteVEKE9BdAvYoTkW19pa7LR/RBrT6F1dJCV/3pbjwDcaOq+edkP0LXuJ9kflW/xOK414X78r+K84+msw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.28.0.tgz", + "integrity": "sha512-eKpJr4vBDOi4goT75MvW+0dXcNUqisK4jvibY9vDdlgLx+yekxSm55StsHbxUsRxSTt3JEQvlr3cGDkzcSP8bw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.28.0.tgz", + "integrity": "sha512-Vi+WR62xWGsE/Oj+mD0FNAPY2MEox3cfyG0zLpotZdehPFXwz6lypkGs5y38Jd/NVSbOD02aVad6q6QYF7i8Bg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.28.0.tgz", + "integrity": "sha512-kN/Vpip8emMLn/eOza+4JwqDZBL6MPNpkdaEsgUtW1NYN3DZvZqSQrbKzJcTL6hd8YNmFTn7XGWMwccOcJBL0A==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.28.0.tgz", + "integrity": "sha512-Bvno2/aZT6usSa7lRDL2+hMjVAGjuqaymF1ApZm31JXzniR/hvr14jpU+/z4X6Gt5BPlzosscyJZGUvguXIqeQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, "node_modules/@stencil/core": { "version": "2.22.3", @@ -596,8 +828,17 @@ "license": "MIT", "peer": true }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/fs-extra": { - "version": "8.1.3", + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.5.tgz", + "integrity": "sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==", "dev": true, "license": "MIT", "dependencies": { @@ -619,11 +860,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "dev": true, - "license": "MIT" - }, "node_modules/@types/prop-types": { "version": "15.7.8", "dev": true, @@ -651,165 +887,48 @@ }, "node_modules/@types/slice-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-+OpjSaq85gvlZAYINyzKpLeiFkSC4EsC6IIiT6v6TLSU5k5U83fHGj9Lel8oKEXM0HqgrMVCjXPDPVICtxF7EQ==", "dev": true, "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.33.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "4.33.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/types": { - "version": "4.33.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-utils": { - "version": "3.0.0", + "version": "5.62.0", "dev": true, "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^2.0.0" + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10" + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@typescript-eslint/parser": { "version": "5.62.0", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "5.62.0", "@typescript-eslint/types": "5.62.0", @@ -953,8 +1072,17 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true, + "license": "ISC" + }, "node_modules/acorn": { - "version": "7.4.1", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, "license": "MIT", "bin": { @@ -966,6 +1094,8 @@ }, "node_modules/acorn-jsx": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -974,6 +1104,8 @@ }, "node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", "dependencies": { @@ -987,14 +1119,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-regex": { "version": "5.0.1", "dev": true, @@ -1018,12 +1142,11 @@ } }, "node_modules/argparse": { - "version": "1.0.10", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } + "license": "Python-2.0" }, "node_modules/array-buffer-byte-length": { "version": "1.0.0", @@ -1137,6 +1260,8 @@ }, "node_modules/astral-regex": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, "license": "MIT", "engines": { @@ -1145,6 +1270,8 @@ }, "node_modules/at-least-node": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, "license": "ISC", "engines": { @@ -1201,6 +1328,8 @@ }, "node_modules/callsites": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "license": "MIT", "engines": { @@ -1223,11 +1352,31 @@ } }, "node_modules/chevrotain": { - "version": "6.5.0", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", + "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "regexp-to-ast": "0.4.0" + "@chevrotain/cst-dts-gen": "11.0.3", + "@chevrotain/gast": "11.0.3", + "@chevrotain/regexp-to-ast": "11.0.3", + "@chevrotain/types": "11.0.3", + "@chevrotain/utils": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/chevrotain-allstar": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", + "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash-es": "^4.17.21" + }, + "peerDependencies": { + "chevrotain": "^11.0.0" } }, "node_modules/color-convert": { @@ -1256,21 +1405,6 @@ "dev": true, "license": "MIT" }, - "node_modules/cosmiconfig": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/cross-spawn": { "version": "7.0.3", "dev": true, @@ -1361,25 +1495,34 @@ "node": ">=6.0.0" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, "node_modules/emoji-regex": { - "version": "8.0.0", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true, "license": "MIT" }, - "node_modules/enquirer": { - "version": "2.4.1", + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" - }, "engines": { - "node": ">=8.6" + "node": ">=6" } }, "node_modules/error-ex": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "license": "MIT", "dependencies": { @@ -1487,73 +1630,73 @@ } }, "node_modules/eslint": { - "version": "7.32.0", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-config-prettier": { - "version": "6.15.0", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", "dev": true, "license": "MIT", - "dependencies": { - "get-stdin": "^6.0.0" - }, "bin": { - "eslint-config-prettier-check": "bin/cli.js" + "eslint-config-prettier": "bin/cli.js" }, "peerDependencies": { - "eslint": ">=3.14.1" + "eslint": ">=7.0.0" } }, "node_modules/eslint-import-resolver-node": { @@ -1667,28 +1810,6 @@ "node": ">=8.0.0" } }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=4" - } - }, "node_modules/eslint-visitor-keys": { "version": "3.4.3", "dev": true, @@ -1700,53 +1821,62 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "2.1.0", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, - "license": "Apache-2.0", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "engines": { - "node": ">= 4" + "node": ">=4.0" } }, - "node_modules/espree": { - "version": "7.3.1", + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "license": "BSD-2-Clause", + "license": "ISC", "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "is-glob": "^4.0.3" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=4" + "node": ">=10.13.0" } }, - "node_modules/esprima": { - "version": "4.0.1", + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esquery": { @@ -1805,6 +1935,8 @@ }, "node_modules/fast-deep-equal": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true, "license": "MIT" }, @@ -1825,6 +1957,8 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true, "license": "MIT" }, @@ -1863,6 +1997,23 @@ "node": ">=8" } }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/flat-cache": { "version": "3.1.1", "dev": true, @@ -1876,6 +2027,45 @@ "node": ">=12.0.0" } }, + "node_modules/flat-cache/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/flatted": { "version": "3.2.9", "dev": true, @@ -1889,8 +2079,27 @@ "is-callable": "^1.1.3" } }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/fs-extra": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1905,6 +2114,8 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true, "license": "ISC" }, @@ -1942,11 +2153,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, "node_modules/functions-have-names": { "version": "1.2.3", "dev": true, @@ -1969,14 +2175,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-stdin": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/get-symbol-description": { "version": "1.0.0", "dev": true, @@ -1998,19 +2196,24 @@ "license": "ISC" }, "node_modules/glob": { - "version": "7.2.3", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", + "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", "dev": true, "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": "*" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -2027,8 +2230,36 @@ "node": ">= 6" } }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/globals": { - "version": "13.23.0", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2087,6 +2318,8 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true, "license": "ISC" }, @@ -2192,6 +2425,8 @@ }, "node_modules/import-fresh": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "license": "MIT", "dependencies": { @@ -2215,6 +2450,9 @@ }, "node_modules/inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "license": "ISC", "dependencies": { @@ -2224,6 +2462,8 @@ }, "node_modules/inherits": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true, "license": "ISC" }, @@ -2263,6 +2503,8 @@ }, "node_modules/is-arrayish": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true, "license": "MIT" }, @@ -2338,6 +2580,8 @@ }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", "engines": { @@ -2388,6 +2632,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-regex": { "version": "1.1.4", "dev": true, @@ -2477,12 +2731,31 @@ "dev": true, "license": "ISC" }, + "node_modules/jackspeak": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.2.tgz", + "integrity": "sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/java-parser": { - "version": "2.0.2", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/java-parser/-/java-parser-2.3.2.tgz", + "integrity": "sha512-/O42UbEHy3VVJw8W0ruHkQjW75oWvQx4QisoUDRIGir6q3/IZ4JslDMPMYEqp7LU56PYJkH5uXdQiBaCXt/Opw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "chevrotain": "6.5.0", + "chevrotain": "11.0.3", + "chevrotain-allstar": "0.3.1", "lodash": "4.17.21" } }, @@ -2491,12 +2764,13 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "3.14.1", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" @@ -2509,11 +2783,15 @@ }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true, "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "license": "MIT" }, @@ -2535,6 +2813,8 @@ }, "node_modules/jsonfile": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2564,13 +2844,40 @@ "node": ">= 0.8.0" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true, "license": "MIT" }, - "node_modules/lodash": { + "node_modules/lodash-es": { "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", "dev": true, "license": "MIT" }, @@ -2579,11 +2886,6 @@ "dev": true, "license": "MIT" }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "dev": true, - "license": "MIT" - }, "node_modules/loose-envify": { "version": "1.4.0", "license": "MIT", @@ -2645,6 +2947,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/ms": { "version": "2.1.2", "dev": true, @@ -2738,6 +3050,8 @@ }, "node_modules/once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "license": "ISC", "dependencies": { @@ -2760,8 +3074,49 @@ "node": ">= 0.8.0" } }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/parent-module": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "license": "MIT", "dependencies": { @@ -2773,6 +3128,8 @@ }, "node_modules/parse-json": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "license": "MIT", "dependencies": { @@ -2788,8 +3145,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "license": "MIT", "engines": { @@ -2809,6 +3178,33 @@ "dev": true, "license": "MIT" }, + "node_modules/path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", + "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, "node_modules/path-type": { "version": "4.0.0", "dev": true, @@ -2817,6 +3213,13 @@ "node": ">=8" } }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, "node_modules/picomatch": { "version": "2.3.1", "dev": true, @@ -2837,50 +3240,53 @@ } }, "node_modules/prettier": { - "version": "2.8.8", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.1.tgz", + "integrity": "sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==", "dev": true, "license": "MIT", "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/prettier-plugin-java": { - "version": "1.6.2", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/prettier-plugin-java/-/prettier-plugin-java-2.6.5.tgz", + "integrity": "sha512-2RkPNXyYpP5dRhr04pz45n+e5LXwYWTh1JXrztiCkZTGGokIGYrfwUuGa8csnDoGbP6CDPgVm8zZSIm/9I0SRQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "java-parser": "2.0.2", + "java-parser": "2.3.2", "lodash": "4.17.21", - "prettier": "2.3.1" + "prettier": "3.2.5" } }, "node_modules/prettier-plugin-java/node_modules/prettier": { - "version": "2.3.1", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", "dev": true, "license": "MIT", "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/progress": { - "version": "2.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/punycode": { - "version": "2.3.0", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "license": "MIT", "engines": { @@ -2922,11 +3328,6 @@ "license": "MIT", "peer": true }, - "node_modules/regexp-to-ast": { - "version": "0.4.0", - "dev": true, - "license": "MIT" - }, "node_modules/regexp.prototype.flags": { "version": "1.5.1", "dev": true, @@ -2943,25 +3344,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/resolve": { "version": "1.22.6", "dev": true, @@ -2980,6 +3362,8 @@ }, "node_modules/resolve-from": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "license": "MIT", "engines": { @@ -2996,30 +3380,60 @@ } }, "node_modules/rimraf": { - "version": "3.0.2", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", + "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", "dev": true, "license": "ISC", "dependencies": { - "glob": "^7.1.3" + "glob": "^11.0.0", + "package-json-from-dist": "^1.0.0" }, "bin": { - "rimraf": "bin.js" + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/rollup": { - "version": "2.79.1", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.28.0.tgz", + "integrity": "sha512-G9GOrmgWHBma4YfCcX8PjH0qhXSdH8B4HDE2o4/jaxj93S4DPCIDoLcXz99eWMji4hB29UFCEd7B2gwGJDR9cQ==", "dev": true, "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, "bin": { "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=10.0.0" + "node": ">=18.0.0", + "npm": ">=8.0.0" }, "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.28.0", + "@rollup/rollup-android-arm64": "4.28.0", + "@rollup/rollup-darwin-arm64": "4.28.0", + "@rollup/rollup-darwin-x64": "4.28.0", + "@rollup/rollup-freebsd-arm64": "4.28.0", + "@rollup/rollup-freebsd-x64": "4.28.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.28.0", + "@rollup/rollup-linux-arm-musleabihf": "4.28.0", + "@rollup/rollup-linux-arm64-gnu": "4.28.0", + "@rollup/rollup-linux-arm64-musl": "4.28.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.28.0", + "@rollup/rollup-linux-riscv64-gnu": "4.28.0", + "@rollup/rollup-linux-s390x-gnu": "4.28.0", + "@rollup/rollup-linux-x64-gnu": "4.28.0", + "@rollup/rollup-linux-x64-musl": "4.28.0", + "@rollup/rollup-win32-arm64-msvc": "4.28.0", + "@rollup/rollup-win32-ia32-msvc": "4.28.0", + "@rollup/rollup-win32-x64-msvc": "4.28.0", "fsevents": "~2.3.2" } }, @@ -3135,9 +3549,17 @@ } }, "node_modules/signal-exit": { - "version": "3.0.7", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "license": "ISC" + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/slash": { "version": "3.0.0", @@ -3149,6 +3571,8 @@ }, "node_modules/slice-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3163,13 +3587,29 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, - "license": "BSD-3-Clause" + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/string-width": { + "node_modules/string-width-cjs": { + "name": "string-width", "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { @@ -3181,6 +3621,42 @@ "node": ">=8" } }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/string.prototype.trim": { "version": "1.2.8", "dev": true, @@ -3234,6 +3710,20 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "3.0.0", "dev": true, @@ -3244,6 +3734,8 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "license": "MIT", "engines": { @@ -3288,53 +3780,63 @@ } }, "node_modules/swiftlint": { - "version": "1.0.2", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/swiftlint/-/swiftlint-2.0.0.tgz", + "integrity": "sha512-MMVuyZ4/6WcIJlk0z6GM0pZjRuwnyUJqRPbJBFW3oACN/qjAvRbolCWEu+zE2MycF/cEgqfUpI+oLECNfjfOJA==", "dev": true, "hasInstallScript": true, "license": "MIT", "dependencies": { - "@ionic/utils-fs": "3.1.6", - "@ionic/utils-subprocess": "2.1.11", - "cosmiconfig": "^6.0.0" + "@ionic/utils-fs": "^3.1.7", + "@ionic/utils-subprocess": "^3.0.1", + "cosmiconfig": "^9.0.0" }, "bin": { "node-swiftlint": "bin.js" } }, - "node_modules/table": { - "version": "6.8.1", + "node_modules/swiftlint/node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" }, "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.12.0", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "node": ">=14" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", + "node_modules/swiftlint/node_modules/typescript": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "optional": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } }, "node_modules/text-table": { "version": "0.2.0", @@ -3354,6 +3856,8 @@ }, "node_modules/tree-kill": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, "license": "MIT", "bin": { @@ -3408,6 +3912,8 @@ }, "node_modules/type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -3505,7 +4011,9 @@ } }, "node_modules/universalify": { - "version": "2.0.0", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -3514,6 +4022,8 @@ }, "node_modules/untildify": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", "dev": true, "license": "MIT", "engines": { @@ -3522,17 +4032,14 @@ }, "node_modules/uri-js": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, - "node_modules/v8-compile-cache": { - "version": "2.4.0", - "dev": true, - "license": "MIT" - }, "node_modules/which": { "version": "2.0.2", "dev": true, @@ -3581,7 +4088,28 @@ } }, "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", "dependencies": { @@ -3596,8 +4124,74 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true, "license": "ISC" }, @@ -3606,12 +4200,17 @@ "dev": true, "license": "ISC" }, - "node_modules/yaml": { - "version": "1.10.2", + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": ">= 6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } } } diff --git a/packages/payment/package.json b/packages/payment/package.json index 11d20d105..80d1cab91 100644 --- a/packages/payment/package.json +++ b/packages/payment/package.json @@ -24,7 +24,6 @@ "android/src/main/", "android/build.gradle", "dist/", - "src/", "ios/Sources", "ios/Tests", "Package.swift", @@ -55,7 +54,7 @@ "prettier": "prettier \"{src/*.ts,**/*.java}\"", "swiftlint": "node-swiftlint", "docgen": "docgen --api DocGenType --output-readme README.md --output-json dist/docs.json", - "build": "npm run clean && npm run docgen && tsc && rollup -c rollup.config.js", + "build": "npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs", "clean": "rimraf ./dist", "watch": "tsc --watch", "prepublishOnly": "npm run build", @@ -66,18 +65,17 @@ "@capacitor/core": "^6.0.0", "@capacitor/docgen": "git+https://github.com/rdlabo/capacitor-docgen.git#release", "@capacitor/ios": "^6.0.0", - "@ionic/eslint-config": "^0.3.0", - "@ionic/prettier-config": "^2.0.0", - "@ionic/swiftlint-config": "^1.1.2", - "@rdlabo/capacitor-plugin-to-v4": "^0.0.5", "@types/react": "^16.14.3", "@typescript-eslint/eslint-plugin": "^5.27.1", - "eslint": "^7.32.0", - "prettier": "^2.3.0", - "prettier-plugin-java": "^1.0.2", - "rimraf": "^3.0.2", - "rollup": "^2.32.0", - "swiftlint": "^1.0.1", + "@ionic/eslint-config": "^0.4.0", + "@ionic/prettier-config": "^4.0.0", + "@ionic/swiftlint-config": "^2.0.0", + "eslint": "^8.57.0", + "prettier": "^3.3.3", + "prettier-plugin-java": "^2.6.4", + "rimraf": "^6.0.1", + "rollup": "^4.24.0", + "swiftlint": "^2.0.0", "typescript": "~4.1.5" }, "peerDependencies": { diff --git a/packages/identity/rollup.config.js b/packages/payment/rollup.config.mjs similarity index 91% rename from packages/identity/rollup.config.js rename to packages/payment/rollup.config.mjs index 51129f0ed..bda4a0561 100644 --- a/packages/identity/rollup.config.js +++ b/packages/payment/rollup.config.mjs @@ -4,7 +4,7 @@ export default { { file: 'dist/plugin.js', format: 'iife', - name: 'capacitorStripeIdentity', + name: 'capacitorStripe', globals: { '@capacitor/core': 'capacitorExports', }, diff --git a/packages/terminal/package-lock.json b/packages/terminal/package-lock.json index 986469de6..dc2e528f1 100644 --- a/packages/terminal/package-lock.json +++ b/packages/terminal/package-lock.json @@ -16,15 +16,15 @@ "@capacitor/core": "^6.0.0", "@capacitor/docgen": "^0.0.18", "@capacitor/ios": "^6.0.0", - "@ionic/eslint-config": "^0.3.0", - "@ionic/prettier-config": "^1.0.1", - "@ionic/swiftlint-config": "^1.1.2", - "eslint": "^7.11.0", - "prettier": "~2.3.0", - "prettier-plugin-java": "~1.0.2", - "rimraf": "^3.0.2", - "rollup": "^2.32.0", - "swiftlint": "^1.0.1", + "@ionic/eslint-config": "^0.4.0", + "@ionic/prettier-config": "^4.0.0", + "@ionic/swiftlint-config": "^2.0.0", + "eslint": "^8.57.0", + "prettier": "^3.3.3", + "prettier-plugin-java": "^2.6.4", + "rimraf": "^6.0.1", + "rollup": "^4.24.0", + "swiftlint": "^2.0.0", "typescript": "~4.1.5" }, "engines": { @@ -43,96 +43,28 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.12.11", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.22.20", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, "node_modules/@capacitor/android": { @@ -194,80 +126,188 @@ "@capacitor/core": "^6.0.0" } }, + "node_modules/@chevrotain/cst-dts-gen": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", + "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/gast": "11.0.3", + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/@chevrotain/gast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", + "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/types": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/@chevrotain/regexp-to-ast": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz", + "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/types": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", + "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/utils": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", + "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "0.4.3", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "license": "MIT", "dependencies": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "4.0.6", + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, "license": "MIT", "engines": { - "node": ">= 4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", "dev": true, "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", "dev": true, "license": "BSD-3-Clause" }, "node_modules/@ionic/eslint-config": { - "version": "0.3.0", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@ionic/eslint-config/-/eslint-config-0.4.0.tgz", + "integrity": "sha512-L8OXY29D3iGqNtteFj0iz3eoZIVgokBiVjCO8WMssNZa4GTHjYsase0rC9ASXGefMnLJu6rbNl3Gbx7NNxJRZQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "^4.1.0", - "@typescript-eslint/parser": "^4.1.0", - "eslint-config-prettier": "^6.11.0", - "eslint-plugin-import": "^2.22.0" + "@typescript-eslint/eslint-plugin": "^5.58.0", + "@typescript-eslint/parser": "^5.58.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-import": "^2.27.0" }, "peerDependencies": { "eslint": ">=7" } }, "node_modules/@ionic/prettier-config": { - "version": "1.0.1", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@ionic/prettier-config/-/prettier-config-4.0.0.tgz", + "integrity": "sha512-0DqL6CggVdgeJAWOLPUT73rF1VD5p0tVlCpC5GXz5vTIUBxNwsJ5085Q7wXjKiE5Odx3aOHGTcuRWCawFsLFag==", "dev": true, "license": "MIT", "peerDependencies": { - "prettier": "^2.0.0" + "prettier": "^2.4.0 || ^3.0.0" } }, "node_modules/@ionic/swiftlint-config": { - "version": "1.1.2", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@ionic/swiftlint-config/-/swiftlint-config-2.0.0.tgz", + "integrity": "sha512-TXy76ALSKhUZzBziHz7aoEtSQwHofBIDRNzM9x4sndtC7fefbZsBw3UgGwXFTOc7hoj72EAGyqZNUhj9LlhaNQ==", "dev": true, "license": "MIT" }, "node_modules/@ionic/utils-array": { - "version": "2.1.5", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@ionic/utils-array/-/utils-array-2.1.6.tgz", + "integrity": "sha512-0JZ1Zkp3wURnv8oq6Qt7fMPo5MpjbLoUoa9Bu2Q4PJuSDWM8H8gwF3dQO7VTeUj3/0o1IB1wGkFWZZYgUXZMUg==", "dev": true, "license": "MIT", "dependencies": { @@ -275,11 +315,13 @@ "tslib": "^2.0.1" }, "engines": { - "node": ">=10.3.0" + "node": ">=16.0.0" } }, "node_modules/@ionic/utils-fs": { - "version": "3.1.6", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@ionic/utils-fs/-/utils-fs-3.1.7.tgz", + "integrity": "sha512-2EknRvMVfhnyhL1VhFkSLa5gOcycK91VnjfrTB0kbqkTFCOXyXgVLI5whzq7SLrgD9t1aqos3lMMQyVzaQ5gVA==", "dev": true, "license": "MIT", "dependencies": { @@ -289,11 +331,13 @@ "tslib": "^2.0.1" }, "engines": { - "node": ">=10.3.0" + "node": ">=16.0.0" } }, "node_modules/@ionic/utils-object": { - "version": "2.1.5", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@ionic/utils-object/-/utils-object-2.1.6.tgz", + "integrity": "sha512-vCl7sl6JjBHFw99CuAqHljYJpcE88YaH2ZW4ELiC/Zwxl5tiwn4kbdP/gxi2OT3MQb1vOtgAmSNRtusvgxI8ww==", "dev": true, "license": "MIT", "dependencies": { @@ -301,27 +345,38 @@ "tslib": "^2.0.1" }, "engines": { - "node": ">=10.3.0" + "node": ">=16.0.0" } }, "node_modules/@ionic/utils-process": { - "version": "2.1.10", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/@ionic/utils-process/-/utils-process-2.1.12.tgz", + "integrity": "sha512-Jqkgyq7zBs/v/J3YvKtQQiIcxfJyplPgECMWgdO0E1fKrrH8EF0QGHNJ9mJCn6PYe2UtHNS8JJf5G21e09DfYg==", "dev": true, "license": "MIT", "dependencies": { - "@ionic/utils-object": "2.1.5", - "@ionic/utils-terminal": "2.3.3", + "@ionic/utils-object": "2.1.6", + "@ionic/utils-terminal": "2.3.5", "debug": "^4.0.0", "signal-exit": "^3.0.3", "tree-kill": "^1.2.2", "tslib": "^2.0.1" }, "engines": { - "node": ">=10.3.0" + "node": ">=16.0.0" } }, + "node_modules/@ionic/utils-process/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, "node_modules/@ionic/utils-stream": { - "version": "3.1.5", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@ionic/utils-stream/-/utils-stream-3.1.7.tgz", + "integrity": "sha512-eSELBE7NWNFIHTbTC2jiMvh1ABKGIpGdUIvARsNPMNQhxJB3wpwdiVnoBoTYp+5a6UUIww4Kpg7v6S7iTctH1w==", "dev": true, "license": "MIT", "dependencies": { @@ -329,29 +384,33 @@ "tslib": "^2.0.1" }, "engines": { - "node": ">=10.3.0" + "node": ">=16.0.0" } }, "node_modules/@ionic/utils-subprocess": { - "version": "2.1.11", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@ionic/utils-subprocess/-/utils-subprocess-3.0.1.tgz", + "integrity": "sha512-cT4te3AQQPeIM9WCwIg8ohroJ8TjsYaMb2G4ZEgv9YzeDqHZ4JpeIKqG2SoaA3GmVQ3sOfhPM6Ox9sxphV/d1A==", "dev": true, "license": "MIT", "dependencies": { - "@ionic/utils-array": "2.1.5", - "@ionic/utils-fs": "3.1.6", - "@ionic/utils-process": "2.1.10", - "@ionic/utils-stream": "3.1.5", - "@ionic/utils-terminal": "2.3.3", + "@ionic/utils-array": "2.1.6", + "@ionic/utils-fs": "3.1.7", + "@ionic/utils-process": "2.1.12", + "@ionic/utils-stream": "3.1.7", + "@ionic/utils-terminal": "2.3.5", "cross-spawn": "^7.0.3", "debug": "^4.0.0", "tslib": "^2.0.1" }, "engines": { - "node": ">=10.3.0" + "node": ">=16.0.0" } }, "node_modules/@ionic/utils-terminal": { - "version": "2.3.3", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@ionic/utils-terminal/-/utils-terminal-2.3.5.tgz", + "integrity": "sha512-3cKScz9Jx2/Pr9ijj1OzGlBDfcmx7OMVBt4+P1uRR0SSW4cm1/y3Mo4OY3lfkuaYifMNBW8Wz6lQHbs1bihr7A==", "dev": true, "license": "MIT", "dependencies": { @@ -366,11 +425,107 @@ "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=10.3.0" + "node": ">=16.0.0" + } + }, + "node_modules/@ionic/utils-terminal/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@ionic/utils-terminal/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@ionic/utils-terminal/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@ionic/utils-terminal/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "license": "MIT", "dependencies": { @@ -383,6 +538,8 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "license": "MIT", "engines": { @@ -391,6 +548,8 @@ }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "license": "MIT", "dependencies": { @@ -401,6 +560,258 @@ "node": ">= 8" } }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.28.0.tgz", + "integrity": "sha512-wLJuPLT6grGZsy34g4N1yRfYeouklTgPhH1gWXCYspenKYD0s3cR99ZevOGw5BexMNywkbV3UkjADisozBmpPQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.28.0.tgz", + "integrity": "sha512-eiNkznlo0dLmVG/6wf+Ifi/v78G4d4QxRhuUl+s8EWZpDewgk7PX3ZyECUXU0Zq/Ca+8nU8cQpNC4Xgn2gFNDA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.28.0.tgz", + "integrity": "sha512-lmKx9yHsppblnLQZOGxdO66gT77bvdBtr/0P+TPOseowE7D9AJoBw8ZDULRasXRWf1Z86/gcOdpBrV6VDUY36Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.28.0.tgz", + "integrity": "sha512-8hxgfReVs7k9Js1uAIhS6zq3I+wKQETInnWQtgzt8JfGx51R1N6DRVy3F4o0lQwumbErRz52YqwjfvuwRxGv1w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.28.0.tgz", + "integrity": "sha512-lA1zZB3bFx5oxu9fYud4+g1mt+lYXCoch0M0V/xhqLoGatbzVse0wlSQ1UYOWKpuSu3gyN4qEc0Dxf/DII1bhQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.28.0.tgz", + "integrity": "sha512-aI2plavbUDjCQB/sRbeUZWX9qp12GfYkYSJOrdYTL/C5D53bsE2/nBPuoiJKoWp5SN78v2Vr8ZPnB+/VbQ2pFA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.28.0.tgz", + "integrity": "sha512-WXveUPKtfqtaNvpf0iOb0M6xC64GzUX/OowbqfiCSXTdi/jLlOmH0Ba94/OkiY2yTGTwteo4/dsHRfh5bDCZ+w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.28.0.tgz", + "integrity": "sha512-yLc3O2NtOQR67lI79zsSc7lk31xjwcaocvdD1twL64PK1yNaIqCeWI9L5B4MFPAVGEVjH5k1oWSGuYX1Wutxpg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.28.0.tgz", + "integrity": "sha512-+P9G9hjEpHucHRXqesY+3X9hD2wh0iNnJXX/QhS/J5vTdG6VhNYMxJ2rJkQOxRUd17u5mbMLHM7yWGZdAASfcg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.28.0.tgz", + "integrity": "sha512-1xsm2rCKSTpKzi5/ypT5wfc+4bOGa/9yI/eaOLW0oMs7qpC542APWhl4A37AENGZ6St6GBMWhCCMM6tXgTIplw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.28.0.tgz", + "integrity": "sha512-zgWxMq8neVQeXL+ouSf6S7DoNeo6EPgi1eeqHXVKQxqPy1B2NvTbaOUWPn/7CfMKL7xvhV0/+fq/Z/J69g1WAQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.28.0.tgz", + "integrity": "sha512-VEdVYacLniRxbRJLNtzwGt5vwS0ycYshofI7cWAfj7Vg5asqj+pt+Q6x4n+AONSZW/kVm+5nklde0qs2EUwU2g==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.28.0.tgz", + "integrity": "sha512-LQlP5t2hcDJh8HV8RELD9/xlYtEzJkm/aWGsauvdO2ulfl3QYRjqrKW+mGAIWP5kdNCBheqqqYIGElSRCaXfpw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.28.0.tgz", + "integrity": "sha512-Nl4KIzteVEKE9BdAvYoTkW19pa7LR/RBrT6F1dJCV/3pbjwDcaOq+edkP0LXuJ9kflW/xOK414X78r+K84+msw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.28.0.tgz", + "integrity": "sha512-eKpJr4vBDOi4goT75MvW+0dXcNUqisK4jvibY9vDdlgLx+yekxSm55StsHbxUsRxSTt3JEQvlr3cGDkzcSP8bw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.28.0.tgz", + "integrity": "sha512-Vi+WR62xWGsE/Oj+mD0FNAPY2MEox3cfyG0zLpotZdehPFXwz6lypkGs5y38Jd/NVSbOD02aVad6q6QYF7i8Bg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.28.0.tgz", + "integrity": "sha512-kN/Vpip8emMLn/eOza+4JwqDZBL6MPNpkdaEsgUtW1NYN3DZvZqSQrbKzJcTL6hd8YNmFTn7XGWMwccOcJBL0A==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.28.0.tgz", + "integrity": "sha512-Bvno2/aZT6usSa7lRDL2+hMjVAGjuqaymF1ApZm31JXzniR/hvr14jpU+/z4X6Gt5BPlzosscyJZGUvguXIqeQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@stripe/terminal-js": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/@stripe/terminal-js/-/terminal-js-0.13.0.tgz", @@ -410,8 +821,17 @@ "ws": "6.2.2" } }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/fs-extra": { - "version": "8.1.3", + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.5.tgz", + "integrity": "sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==", "dev": true, "license": "MIT", "dependencies": { @@ -419,7 +839,9 @@ } }, "node_modules/@types/json-schema": { - "version": "7.0.13", + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true, "license": "MIT" }, @@ -432,40 +854,48 @@ "version": "14.18.63", "license": "MIT" }, - "node_modules/@types/parse-json": { - "version": "4.0.0", + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", "dev": true, "license": "MIT" }, "node_modules/@types/slice-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-+OpjSaq85gvlZAYINyzKpLeiFkSC4EsC6IIiT6v6TLSU5k5U83fHGj9Lel8oKEXM0HqgrMVCjXPDPVICtxF7EQ==", "dev": true, "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.33.0", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/experimental-utils": "4.33.0", - "@typescript-eslint/scope-manager": "4.33.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.1.0", - "semver": "^7.3.5", + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^4.0.0", - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -473,77 +903,88 @@ } } }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.33.0", + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "*" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@typescript-eslint/parser": { - "version": "4.33.0", + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "debug": "^4.3.1" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "4.33.0", + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@typescript-eslint/types": { - "version": "4.33.0", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, "license": "MIT", "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", @@ -551,49 +992,89 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "4.33.0", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "4.33.0", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true, + "license": "ISC" + }, "node_modules/acorn": { - "version": "7.4.1", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, "license": "MIT", "bin": { @@ -605,6 +1086,8 @@ }, "node_modules/acorn-jsx": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -613,6 +1096,8 @@ }, "node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", "dependencies": { @@ -626,14 +1111,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-regex": { "version": "5.0.1", "dev": true, @@ -657,12 +1134,11 @@ } }, "node_modules/argparse": { - "version": "1.0.10", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } + "license": "Python-2.0" }, "node_modules/array-buffer-byte-length": { "version": "1.0.0", @@ -696,6 +1172,8 @@ }, "node_modules/array-union": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, "license": "MIT", "engines": { @@ -776,6 +1254,8 @@ }, "node_modules/astral-regex": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, "license": "MIT", "engines": { @@ -789,6 +1269,8 @@ }, "node_modules/at-least-node": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, "license": "ISC", "engines": { @@ -821,11 +1303,13 @@ } }, "node_modules/braces": { - "version": "3.0.2", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -851,6 +1335,8 @@ }, "node_modules/callsites": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "license": "MIT", "engines": { @@ -873,11 +1359,31 @@ } }, "node_modules/chevrotain": { - "version": "6.5.0", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", + "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "regexp-to-ast": "0.4.0" + "@chevrotain/cst-dts-gen": "11.0.3", + "@chevrotain/gast": "11.0.3", + "@chevrotain/regexp-to-ast": "11.0.3", + "@chevrotain/types": "11.0.3", + "@chevrotain/utils": "11.0.3", + "lodash-es": "4.17.21" + } + }, + "node_modules/chevrotain-allstar": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", + "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash-es": "^4.17.21" + }, + "peerDependencies": { + "chevrotain": "^11.0.0" } }, "node_modules/color-convert": { @@ -906,21 +1412,6 @@ "dev": true, "license": "MIT" }, - "node_modules/cosmiconfig": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/cross-spawn": { "version": "7.0.3", "dev": true, @@ -989,6 +1480,8 @@ }, "node_modules/dir-glob": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "license": "MIT", "dependencies": { @@ -1009,25 +1502,34 @@ "node": ">=6.0.0" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, "node_modules/emoji-regex": { - "version": "8.0.0", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true, "license": "MIT" }, - "node_modules/enquirer": { - "version": "2.4.1", + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" - }, "engines": { - "node": ">=8.6" + "node": ">=6" } }, "node_modules/error-ex": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "license": "MIT", "dependencies": { @@ -1154,73 +1656,73 @@ } }, "node_modules/eslint": { - "version": "7.32.0", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-config-prettier": { - "version": "6.15.0", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", "dev": true, "license": "MIT", - "dependencies": { - "get-stdin": "^6.0.0" - }, "bin": { - "eslint-config-prettier-check": "bin/cli.js" + "eslint-config-prettier": "bin/cli.js" }, "peerDependencies": { - "eslint": ">=3.14.1" + "eslint": ">=7.0.0" } }, "node_modules/eslint-import-resolver-node": { @@ -1324,6 +1826,8 @@ }, "node_modules/eslint-scope": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -1334,92 +1838,62 @@ "node": ">=8.0.0" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, "node_modules/eslint-visitor-keys": { - "version": "2.1.0", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "license": "Apache-2.0", "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/eslint-utils": { - "version": "2.1.0", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=4" + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "engines": { - "node": ">= 4" + "node": ">=4.0" } }, "node_modules/espree": { - "version": "7.3.1", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=4" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esquery": { @@ -1443,6 +1917,8 @@ }, "node_modules/esrecurse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -1454,6 +1930,8 @@ }, "node_modules/esrecurse/node_modules/estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -1462,6 +1940,8 @@ }, "node_modules/estraverse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -1478,11 +1958,15 @@ }, "node_modules/fast-deep-equal": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true, "license": "MIT" }, "node_modules/fast-glob": { - "version": "3.3.1", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "license": "MIT", "dependencies": { @@ -1496,8 +1980,23 @@ "node": ">=8.6.0" } }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true, "license": "MIT" }, @@ -1507,7 +2006,9 @@ "license": "MIT" }, "node_modules/fastq": { - "version": "1.15.0", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "license": "ISC", "dependencies": { @@ -1526,7 +2027,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "license": "MIT", "dependencies": { @@ -1536,6 +2039,23 @@ "node": ">=8" } }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/flat-cache": { "version": "3.1.1", "dev": true, @@ -1549,6 +2069,45 @@ "node": ">=12.0.0" } }, + "node_modules/flat-cache/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/flatted": { "version": "3.2.9", "dev": true, @@ -1562,8 +2121,27 @@ "is-callable": "^1.1.3" } }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/fs-extra": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1578,6 +2156,8 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true, "license": "ISC" }, @@ -1618,11 +2198,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, "node_modules/functions-have-names": { "version": "1.2.3", "dev": true, @@ -1649,14 +2224,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-stdin": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/get-symbol-description": { "version": "1.0.0", "dev": true, @@ -1678,37 +2245,72 @@ "license": "ISC" }, "node_modules/glob": { - "version": "7.2.3", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", + "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", "dev": true, "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": "*" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/glob-parent": { - "version": "5.1.2", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "license": "ISC", "dependencies": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/globals": { - "version": "13.23.0", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1737,6 +2339,8 @@ }, "node_modules/globby": { "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "license": "MIT", "dependencies": { @@ -1766,9 +2370,18 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true, "license": "ISC" }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, "node_modules/has": { "version": "1.0.4", "dev": true, @@ -1850,7 +2463,9 @@ } }, "node_modules/ignore": { - "version": "5.2.4", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", "engines": { @@ -1859,6 +2474,8 @@ }, "node_modules/import-fresh": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "license": "MIT", "dependencies": { @@ -1882,6 +2499,9 @@ }, "node_modules/inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "license": "ISC", "dependencies": { @@ -1891,6 +2511,8 @@ }, "node_modules/inherits": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true, "license": "ISC" }, @@ -1922,6 +2544,8 @@ }, "node_modules/is-arrayish": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true, "license": "MIT" }, @@ -1997,6 +2621,8 @@ }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", "engines": { @@ -2027,6 +2653,8 @@ }, "node_modules/is-number": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "license": "MIT", "engines": { @@ -2047,6 +2675,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-regex": { "version": "1.1.4", "dev": true, @@ -2136,27 +2774,49 @@ "dev": true, "license": "ISC" }, + "node_modules/jackspeak": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.2.tgz", + "integrity": "sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/java-parser": { - "version": "1.0.2", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/java-parser/-/java-parser-2.3.2.tgz", + "integrity": "sha512-/O42UbEHy3VVJw8W0ruHkQjW75oWvQx4QisoUDRIGir6q3/IZ4JslDMPMYEqp7LU56PYJkH5uXdQiBaCXt/Opw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "chevrotain": "6.5.0", + "chevrotain": "11.0.3", + "chevrotain-allstar": "0.3.1", "lodash": "4.17.21" } }, "node_modules/js-tokens": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT" }, "node_modules/js-yaml": { - "version": "3.14.1", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" @@ -2169,11 +2829,15 @@ }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true, "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "license": "MIT" }, @@ -2195,6 +2859,8 @@ }, "node_modules/jsonfile": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2226,37 +2892,60 @@ }, "node_modules/lines-and-columns": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true, "license": "MIT" }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lodash": { "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true, "license": "MIT" }, - "node_modules/lodash.merge": { - "version": "4.6.2", + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", "dev": true, "license": "MIT" }, - "node_modules/lodash.truncate": { - "version": "4.4.2", + "node_modules/lodash.merge": { + "version": "4.6.2", "dev": true, "license": "MIT" }, "node_modules/lru-cache": { - "version": "6.0.0", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", + "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, + "license": "ISC", "engines": { - "node": ">=10" + "node": "20 || >=22" } }, "node_modules/merge2": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, "license": "MIT", "engines": { @@ -2264,11 +2953,13 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "license": "MIT", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -2294,6 +2985,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/ms": { "version": "2.1.2", "dev": true, @@ -2304,6 +3005,13 @@ "dev": true, "license": "MIT" }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true, + "license": "MIT" + }, "node_modules/object-inspect": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", @@ -2385,6 +3093,8 @@ }, "node_modules/once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "license": "ISC", "dependencies": { @@ -2407,8 +3117,49 @@ "node": ">= 0.8.0" } }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/parent-module": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "license": "MIT", "dependencies": { @@ -2420,6 +3171,8 @@ }, "node_modules/parse-json": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "license": "MIT", "dependencies": { @@ -2435,8 +3188,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "license": "MIT", "engines": { @@ -2456,16 +3221,44 @@ "dev": true, "license": "MIT" }, + "node_modules/path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/path-type": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, "node_modules/picomatch": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", "engines": { @@ -2484,47 +3277,53 @@ } }, "node_modules/prettier": { - "version": "2.3.2", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.1.tgz", + "integrity": "sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==", "dev": true, "license": "MIT", "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/prettier-plugin-java": { - "version": "1.0.2", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/prettier-plugin-java/-/prettier-plugin-java-2.6.5.tgz", + "integrity": "sha512-2RkPNXyYpP5dRhr04pz45n+e5LXwYWTh1JXrztiCkZTGGokIGYrfwUuGa8csnDoGbP6CDPgVm8zZSIm/9I0SRQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "java-parser": "1.0.2", + "java-parser": "2.3.2", "lodash": "4.17.21", - "prettier": "2.2.1" + "prettier": "3.2.5" } }, "node_modules/prettier-plugin-java/node_modules/prettier": { - "version": "2.2.1", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", "dev": true, "license": "MIT", "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/progress": { - "version": "2.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/punycode": { - "version": "2.3.0", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "license": "MIT", "engines": { @@ -2547,6 +3346,8 @@ }, "node_modules/queue-microtask": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, "funding": [ { @@ -2564,11 +3365,6 @@ ], "license": "MIT" }, - "node_modules/regexp-to-ast": { - "version": "0.4.0", - "dev": true, - "license": "MIT" - }, "node_modules/regexp.prototype.flags": { "version": "1.5.1", "dev": true, @@ -2585,25 +3381,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/resolve": { "version": "1.22.6", "dev": true, @@ -2622,6 +3399,8 @@ }, "node_modules/resolve-from": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "license": "MIT", "engines": { @@ -2630,6 +3409,8 @@ }, "node_modules/reusify": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, "license": "MIT", "engines": { @@ -2638,35 +3419,67 @@ } }, "node_modules/rimraf": { - "version": "3.0.2", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", + "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", "dev": true, "license": "ISC", "dependencies": { - "glob": "^7.1.3" + "glob": "^11.0.0", + "package-json-from-dist": "^1.0.0" }, "bin": { - "rimraf": "bin.js" + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/rollup": { - "version": "2.79.1", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.28.0.tgz", + "integrity": "sha512-G9GOrmgWHBma4YfCcX8PjH0qhXSdH8B4HDE2o4/jaxj93S4DPCIDoLcXz99eWMji4hB29UFCEd7B2gwGJDR9cQ==", "dev": true, "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, "bin": { "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=10.0.0" + "node": ">=18.0.0", + "npm": ">=8.0.0" }, "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.28.0", + "@rollup/rollup-android-arm64": "4.28.0", + "@rollup/rollup-darwin-arm64": "4.28.0", + "@rollup/rollup-darwin-x64": "4.28.0", + "@rollup/rollup-freebsd-arm64": "4.28.0", + "@rollup/rollup-freebsd-x64": "4.28.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.28.0", + "@rollup/rollup-linux-arm-musleabihf": "4.28.0", + "@rollup/rollup-linux-arm64-gnu": "4.28.0", + "@rollup/rollup-linux-arm64-musl": "4.28.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.28.0", + "@rollup/rollup-linux-riscv64-gnu": "4.28.0", + "@rollup/rollup-linux-s390x-gnu": "4.28.0", + "@rollup/rollup-linux-x64-gnu": "4.28.0", + "@rollup/rollup-linux-x64-musl": "4.28.0", + "@rollup/rollup-win32-arm64-msvc": "4.28.0", + "@rollup/rollup-win32-ia32-msvc": "4.28.0", + "@rollup/rollup-win32-x64-msvc": "4.28.0", "fsevents": "~2.3.2" } }, "node_modules/run-parallel": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "funding": [ { @@ -2718,12 +3531,11 @@ } }, "node_modules/semver": { - "version": "7.5.4", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -2797,12 +3609,22 @@ } }, "node_modules/signal-exit": { - "version": "3.0.7", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "license": "ISC" + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/slash": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", "engines": { @@ -2811,6 +3633,8 @@ }, "node_modules/slice-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2825,13 +3649,29 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, - "license": "BSD-3-Clause" + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/string-width": { + "node_modules/string-width-cjs": { + "name": "string-width", "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { @@ -2843,6 +3683,42 @@ "node": ">=8" } }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/string.prototype.trim": { "version": "1.2.8", "dev": true, @@ -2896,6 +3772,20 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "3.0.0", "dev": true, @@ -2906,6 +3796,8 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "license": "MIT", "engines": { @@ -2950,53 +3842,63 @@ } }, "node_modules/swiftlint": { - "version": "1.0.2", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/swiftlint/-/swiftlint-2.0.0.tgz", + "integrity": "sha512-MMVuyZ4/6WcIJlk0z6GM0pZjRuwnyUJqRPbJBFW3oACN/qjAvRbolCWEu+zE2MycF/cEgqfUpI+oLECNfjfOJA==", "dev": true, "hasInstallScript": true, "license": "MIT", "dependencies": { - "@ionic/utils-fs": "3.1.6", - "@ionic/utils-subprocess": "2.1.11", - "cosmiconfig": "^6.0.0" + "@ionic/utils-fs": "^3.1.7", + "@ionic/utils-subprocess": "^3.0.1", + "cosmiconfig": "^9.0.0" }, "bin": { "node-swiftlint": "bin.js" } }, - "node_modules/table": { - "version": "6.8.1", + "node_modules/swiftlint/node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" }, "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.12.0", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "node": ">=14" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", + "node_modules/swiftlint/node_modules/typescript": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "optional": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } }, "node_modules/text-table": { "version": "0.2.0", @@ -3005,6 +3907,8 @@ }, "node_modules/to-regex-range": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3016,6 +3920,8 @@ }, "node_modules/tree-kill": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, "license": "MIT", "bin": { @@ -3040,6 +3946,8 @@ }, "node_modules/tsutils": { "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, "license": "MIT", "dependencies": { @@ -3054,6 +3962,8 @@ }, "node_modules/tsutils/node_modules/tslib": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, "license": "0BSD" }, @@ -3070,6 +3980,8 @@ }, "node_modules/type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -3167,7 +4079,9 @@ } }, "node_modules/universalify": { - "version": "2.0.0", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -3176,6 +4090,8 @@ }, "node_modules/untildify": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", "dev": true, "license": "MIT", "engines": { @@ -3184,17 +4100,14 @@ }, "node_modules/uri-js": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, - "node_modules/v8-compile-cache": { - "version": "2.4.0", - "dev": true, - "license": "MIT" - }, "node_modules/which": { "version": "2.0.2", "dev": true, @@ -3243,7 +4156,28 @@ } }, "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", "dependencies": { @@ -3258,8 +4192,74 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true, "license": "ISC" }, @@ -3271,17 +4271,17 @@ "async-limiter": "~1.0.0" } }, - "node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/yaml": { - "version": "1.10.2", + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": ">= 6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } } } diff --git a/packages/terminal/package.json b/packages/terminal/package.json index 75c718214..bc8856a56 100644 --- a/packages/terminal/package.json +++ b/packages/terminal/package.json @@ -43,7 +43,7 @@ "prettier": "prettier \"**/*.{css,html,ts,js,java}\"", "swiftlint": "node-swiftlint", "docgen": "docgen --api StripeTerminalPlugin --output-readme README.md --output-json dist/docs.json", - "build": "npm run clean && npm run docgen && tsc && rollup -c rollup.config.js", + "build": "npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs", "clean": "rimraf ./dist", "watch": "tsc --watch", "prepublishOnly": "npm run build" @@ -53,15 +53,15 @@ "@capacitor/core": "^6.0.0", "@capacitor/docgen": "^0.0.18", "@capacitor/ios": "^6.0.0", - "@ionic/eslint-config": "^0.3.0", - "@ionic/prettier-config": "^1.0.1", - "@ionic/swiftlint-config": "^1.1.2", - "eslint": "^7.11.0", - "prettier": "~2.3.0", - "prettier-plugin-java": "~1.0.2", - "rimraf": "^3.0.2", - "rollup": "^2.32.0", - "swiftlint": "^1.0.1", + "@ionic/eslint-config": "^0.4.0", + "@ionic/prettier-config": "^4.0.0", + "@ionic/swiftlint-config": "^2.0.0", + "eslint": "^8.57.0", + "prettier": "^3.3.3", + "prettier-plugin-java": "^2.6.4", + "rimraf": "^6.0.1", + "rollup": "^4.24.0", + "swiftlint": "^2.0.0", "typescript": "~4.1.5" }, "peerDependencies": { diff --git a/packages/terminal/rollup.config.js b/packages/terminal/rollup.config.mjs similarity index 91% rename from packages/terminal/rollup.config.js rename to packages/terminal/rollup.config.mjs index 16c3e30cc..bda4a0561 100644 --- a/packages/terminal/rollup.config.js +++ b/packages/terminal/rollup.config.mjs @@ -4,7 +4,7 @@ export default { { file: 'dist/plugin.js', format: 'iife', - name: 'capacitorStripeTerminal', + name: 'capacitorStripe', globals: { '@capacitor/core': 'capacitorExports', }, From 5fbfc1ea75b55a0e5395024aaba72916c1e3ee8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 10:19:34 +0900 Subject: [PATCH 13/41] chore(fmt): update to use prettier-plugin-java --- packages/identity/Package.swift | 4 +- .../stripe/identity/StripeIdentityPlugin.java | 39 +++-- .../StripeIdentityPlugin.swift | 8 +- packages/identity/package-lock.json | 2 +- packages/identity/package.json | 4 +- packages/identity/src/definitions.ts | 10 +- packages/identity/src/index.ts | 2 +- packages/identity/src/web.ts | 12 +- .../community/stripe/StripePlugin.java | 69 ++++---- .../community/stripe/helper/MetaData.java | 5 +- .../paymentflow/PaymentFlowExecutor.java | 63 +++---- .../paymentsheet/PaymentSheetExecutor.java | 60 ++++--- .../Sources/StripePlugin/StripePlugin.swift | 8 +- packages/payment/package-lock.json | 2 +- packages/payment/package.json | 8 +- packages/payment/src/web.ts | 8 +- packages/terminal/Package.swift | 4 +- .../stripe/terminal/StripeTerminal.java | 158 +++++++++--------- .../stripe/terminal/StripeTerminalPlugin.java | 2 +- .../stripe/terminal/TokenProvider.java | 1 - .../StripeTerminalPlugin/StripeTerminal.swift | 2 +- .../StripeTerminalPlugin.swift | 8 +- packages/terminal/package-lock.json | 2 +- packages/terminal/package.json | 4 +- packages/terminal/src/definitions.ts | 77 ++------- packages/terminal/src/index.ts | 2 +- packages/terminal/src/terminal-mappers.ts | 15 +- packages/terminal/src/web.ts | 62 ++----- 28 files changed, 261 insertions(+), 380 deletions(-) diff --git a/packages/identity/Package.swift b/packages/identity/Package.swift index a00025aeb..a790e013f 100644 --- a/packages/identity/Package.swift +++ b/packages/identity/Package.swift @@ -11,7 +11,7 @@ let package = Package( ], dependencies: [ .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "6.0.0") - .package(url: "https://github.com/stripe/stripe-ios-spm.git", exact: "23.32.0") + .package(url: "https://github.com/stripe/stripe-ios-spm.git", exact: "23.32.0") ], targets: [ .target( @@ -19,7 +19,7 @@ let package = Package( dependencies: [ .product(name: "Capacitor", package: "capacitor-swift-pm"), .product(name: "Cordova", package: "capacitor-swift-pm") - .product(name: "StripeIdentity", package: "stripe-ios-spm") + .product(name: "StripeIdentity", package: "stripe-ios-spm") ], path: "ios/Sources/StripeIdentityPlugin"), .testTarget( diff --git a/packages/identity/android/src/main/java/com/getcapacitor/community/stripe/identity/StripeIdentityPlugin.java b/packages/identity/android/src/main/java/com/getcapacitor/community/stripe/identity/StripeIdentityPlugin.java index 22d0aa412..9a3a14a03 100644 --- a/packages/identity/android/src/main/java/com/getcapacitor/community/stripe/identity/StripeIdentityPlugin.java +++ b/packages/identity/android/src/main/java/com/getcapacitor/community/stripe/identity/StripeIdentityPlugin.java @@ -32,27 +32,26 @@ public void load() { .appendPath(resources.getResourceEntryName(resourceId)) .build(); - this.implementation.verificationSheet = - IdentityVerificationSheet.Companion.create( - getActivity(), - new IdentityVerificationSheet.Configuration(icon), - verificationFlowResult -> { - // handle verificationResult - if (verificationFlowResult instanceof IdentityVerificationSheet.VerificationFlowResult.Completed) { - // The user has completed uploading their documents. - // Let them know that the verification is processing. - this.implementation.onVerificationCompleted(bridge, identityVerificationCallbackId); - } else if (verificationFlowResult instanceof IdentityVerificationSheet.VerificationFlowResult.Canceled) { - // The user did not complete uploading their documents. - // You should allow them to try again. - this.implementation.onVerificationCancelled(bridge, identityVerificationCallbackId); - } else if (verificationFlowResult instanceof IdentityVerificationSheet.VerificationFlowResult.Failed) { - // If the flow fails, you should display the localized error - // message to your user using throwable.getLocalizedMessage() - this.implementation.onVerificationFailed(bridge, identityVerificationCallbackId); - } + this.implementation.verificationSheet = IdentityVerificationSheet.Companion.create( + getActivity(), + new IdentityVerificationSheet.Configuration(icon), + verificationFlowResult -> { + // handle verificationResult + if (verificationFlowResult instanceof IdentityVerificationSheet.VerificationFlowResult.Completed) { + // The user has completed uploading their documents. + // Let them know that the verification is processing. + this.implementation.onVerificationCompleted(bridge, identityVerificationCallbackId); + } else if (verificationFlowResult instanceof IdentityVerificationSheet.VerificationFlowResult.Canceled) { + // The user did not complete uploading their documents. + // You should allow them to try again. + this.implementation.onVerificationCancelled(bridge, identityVerificationCallbackId); + } else if (verificationFlowResult instanceof IdentityVerificationSheet.VerificationFlowResult.Failed) { + // If the flow fails, you should display the localized error + // message to your user using throwable.getLocalizedMessage() + this.implementation.onVerificationFailed(bridge, identityVerificationCallbackId); } - ); + } + ); } @PluginMethod diff --git a/packages/identity/ios/Sources/StripeIdentityPlugin/StripeIdentityPlugin.swift b/packages/identity/ios/Sources/StripeIdentityPlugin/StripeIdentityPlugin.swift index 205c85cf9..57528b35f 100644 --- a/packages/identity/ios/Sources/StripeIdentityPlugin/StripeIdentityPlugin.swift +++ b/packages/identity/ios/Sources/StripeIdentityPlugin/StripeIdentityPlugin.swift @@ -9,13 +9,13 @@ import PassKit */ @objc(StripeIdentityPlugin) public class StripeIdentityPlugin: CAPPlugin, CAPBridgedPlugin { - public let identifier = "StripeIdentityPlugin" - public let jsName = "StripeIdentity" + public let identifier = "StripeIdentityPlugin" + public let jsName = "StripeIdentity" public let pluginMethods: [CAPPluginMethod] = [ CAPPluginMethod(name: "initialize", returnType: CAPPluginReturnPromise), CAPPluginMethod(name: "create", returnType: CAPPluginReturnPromise), - CAPPluginMethod(name: "present", returnType: CAPPluginReturnPromise), - ] + CAPPluginMethod(name: "present", returnType: CAPPluginReturnPromise) + ] private let implementation = StripeIdentity() override public func load() { diff --git a/packages/identity/package-lock.json b/packages/identity/package-lock.json index 86997e720..9863abee8 100644 --- a/packages/identity/package-lock.json +++ b/packages/identity/package-lock.json @@ -21,7 +21,7 @@ "@ionic/swiftlint-config": "^2.0.0", "eslint": "^8.57.0", "prettier": "^3.3.3", - "prettier-plugin-java": "^2.6.4", + "prettier-plugin-java": "^2.6.5", "rimraf": "^6.0.1", "rollup": "^4.24.0", "swiftlint": "^2.0.0", diff --git a/packages/identity/package.json b/packages/identity/package.json index de32ca901..1ab8f48a8 100644 --- a/packages/identity/package.json +++ b/packages/identity/package.json @@ -40,7 +40,7 @@ "lint": "npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint", "fmt": "npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format", "eslint": "eslint . --ext ts", - "prettier": "prettier \"**/*.{css,html,ts,js,java}\"", + "prettier": "prettier \"**/*.{css,html,ts,js,java}\" --plugin=prettier-plugin-java", "swiftlint": "node-swiftlint", "docgen": "docgen --api StripeIdentityPlugin --output-readme README.md --output-json dist/docs.json", "build": "npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs", @@ -58,7 +58,7 @@ "@ionic/swiftlint-config": "^2.0.0", "eslint": "^8.57.0", "prettier": "^3.3.3", - "prettier-plugin-java": "^2.6.4", + "prettier-plugin-java": "^2.6.5", "rimraf": "^6.0.1", "rollup": "^4.24.0", "swiftlint": "^2.0.0", diff --git a/packages/identity/src/definitions.ts b/packages/identity/src/definitions.ts index e5231ce86..634452012 100644 --- a/packages/identity/src/definitions.ts +++ b/packages/identity/src/definitions.ts @@ -1,13 +1,7 @@ import type { PluginListenerHandle } from '@capacitor/core'; -import type { - IdentityVerificationSheetEventsEnum, - IdentityVerificationSheetResultInterface, -} from './events.enum'; -import type { - CreateIdentityVerificationSheetOption, - InitializeIdentityVerificationSheetOption, -} from './web'; +import type { IdentityVerificationSheetEventsEnum, IdentityVerificationSheetResultInterface } from './events.enum'; +import type { CreateIdentityVerificationSheetOption, InitializeIdentityVerificationSheetOption } from './web'; export * from './events.enum'; export interface StripeIdentityError { diff --git a/packages/identity/src/index.ts b/packages/identity/src/index.ts index 51effa6ff..1ade985b9 100644 --- a/packages/identity/src/index.ts +++ b/packages/identity/src/index.ts @@ -3,7 +3,7 @@ import { registerPlugin } from '@capacitor/core'; import type { StripeIdentityPlugin } from './definitions'; const StripeIdentity = registerPlugin('StripeIdentity', { - web: () => import('./web').then(m => new m.StripeIdentityWeb()), + web: () => import('./web').then((m) => new m.StripeIdentityWeb()), }); export * from './definitions'; diff --git a/packages/identity/src/web.ts b/packages/identity/src/web.ts index cffc1d681..3564d586f 100644 --- a/packages/identity/src/web.ts +++ b/packages/identity/src/web.ts @@ -20,15 +20,10 @@ export interface CreateIdentityVerificationSheetOption { clientSecret?: string; } -export class StripeIdentityWeb - extends WebPlugin - implements StripeIdentityPlugin -{ +export class StripeIdentityWeb extends WebPlugin implements StripeIdentityPlugin { private stripe: Stripe | null | undefined; private clientSecret: string | undefined; - async initialize( - options: InitializeIdentityVerificationSheetOption, - ): Promise { + async initialize(options: InitializeIdentityVerificationSheetOption): Promise { this.stripe = await loadStripe(options.publishableKey); } async create(options: CreateIdentityVerificationSheetOption): Promise { @@ -52,8 +47,7 @@ export class StripeIdentityWeb message, }); return { - identityVerificationResult: - IdentityVerificationSheetEventsEnum.Canceled, + identityVerificationResult: IdentityVerificationSheetEventsEnum.Canceled, }; } this.notifyListeners(IdentityVerificationSheetEventsEnum.Failed, { diff --git a/packages/payment/android/src/main/java/com/getcapacitor/community/stripe/StripePlugin.java b/packages/payment/android/src/main/java/com/getcapacitor/community/stripe/StripePlugin.java index 8b3a76f11..4f6e5a3fe 100644 --- a/packages/payment/android/src/main/java/com/getcapacitor/community/stripe/StripePlugin.java +++ b/packages/payment/android/src/main/java/com/getcapacitor/community/stripe/StripePlugin.java @@ -64,49 +64,42 @@ public void load() { PaymentConfiguration.init(getContext(), metaData.publishableKey, metaData.stripeAccount); Stripe.setAppInfo(AppInfo.create(APP_INFO_NAME)); - this.googlePayExecutor.googlePayLauncher = - new GooglePayLauncher( - getActivity(), - new GooglePayLauncher.Config( - metaData.googlePayEnvironment, - metaData.countryCode, - metaData.displayName, - metaData.emailAddressRequired, - new GooglePayLauncher.BillingAddressConfig( - metaData.billingAddressRequired, - Objects.equals(metaData.billingAddressFormat, "Full") - ? GooglePayLauncher.BillingAddressConfig.Format.Full - : GooglePayLauncher.BillingAddressConfig.Format.Min, - metaData.phoneNumberRequired - ), - metaData.existingPaymentMethodRequired + this.googlePayExecutor.googlePayLauncher = new GooglePayLauncher( + getActivity(), + new GooglePayLauncher.Config( + metaData.googlePayEnvironment, + metaData.countryCode, + metaData.displayName, + metaData.emailAddressRequired, + new GooglePayLauncher.BillingAddressConfig( + metaData.billingAddressRequired, + Objects.equals(metaData.billingAddressFormat, "Full") + ? GooglePayLauncher.BillingAddressConfig.Format.Full + : GooglePayLauncher.BillingAddressConfig.Format.Min, + metaData.phoneNumberRequired ), - (boolean isReady) -> this.googlePayExecutor.isAvailable = isReady, - (@NotNull GooglePayLauncher.Result result) -> - this.googlePayExecutor.onGooglePayResult(bridge, googlePayCallbackId, result) - ); + metaData.existingPaymentMethodRequired + ), + (boolean isReady) -> this.googlePayExecutor.isAvailable = isReady, + (@NotNull GooglePayLauncher.Result result) -> this.googlePayExecutor.onGooglePayResult(bridge, googlePayCallbackId, result) + ); } else { Logger.info("Plugin didn't prepare Google Pay."); } - this.paymentSheetExecutor.paymentSheet = - new PaymentSheet( - getActivity(), - result -> { - this.paymentSheetExecutor.onPaymentSheetResult(bridge, paymentSheetCallbackId, result); - } - ); - - this.paymentFlowExecutor.flowController = - PaymentSheet.FlowController.create( - getActivity(), - paymentOption -> { - this.paymentFlowExecutor.onPaymentOption(bridge, paymentFlowCallbackId, paymentOption); - }, - result -> { - this.paymentFlowExecutor.onPaymentFlowResult(bridge, paymentFlowCallbackId, result); - } - ); + this.paymentSheetExecutor.paymentSheet = new PaymentSheet(getActivity(), result -> { + this.paymentSheetExecutor.onPaymentSheetResult(bridge, paymentSheetCallbackId, result); + }); + + this.paymentFlowExecutor.flowController = PaymentSheet.FlowController.create( + getActivity(), + paymentOption -> { + this.paymentFlowExecutor.onPaymentOption(bridge, paymentFlowCallbackId, paymentOption); + }, + result -> { + this.paymentFlowExecutor.onPaymentFlowResult(bridge, paymentFlowCallbackId, result); + } + ); if (metaData.enableIdentifier) { Resources resources = getActivity().getApplicationContext().getResources(); diff --git a/packages/payment/android/src/main/java/com/getcapacitor/community/stripe/helper/MetaData.java b/packages/payment/android/src/main/java/com/getcapacitor/community/stripe/helper/MetaData.java index 51e395c7f..008878793 100644 --- a/packages/payment/android/src/main/java/com/getcapacitor/community/stripe/helper/MetaData.java +++ b/packages/payment/android/src/main/java/com/getcapacitor/community/stripe/helper/MetaData.java @@ -42,8 +42,9 @@ public MetaData(Supplier contextSupplier) { phoneNumberRequired = appInfo.metaData.getBoolean("com.getcapacitor.community.stripe.phone_number_required"); billingAddressRequired = appInfo.metaData.getBoolean("com.getcapacitor.community.stripe.billing_address_required"); billingAddressFormat = appInfo.metaData.getString("com.getcapacitor.community.stripe.billing_address_format"); - existingPaymentMethodRequired = - appInfo.metaData.getBoolean("com.getcapacitor.community.stripe.google_pay_existing_payment_method_required"); + existingPaymentMethodRequired = appInfo.metaData.getBoolean( + "com.getcapacitor.community.stripe.google_pay_existing_payment_method_required" + ); // @deprecated. will remove at v6.0.0 enableIdentifier = appInfo.metaData.getBoolean("com.getcapacitor.community.stripe.enableIdentifier"); diff --git a/packages/payment/android/src/main/java/com/getcapacitor/community/stripe/paymentflow/PaymentFlowExecutor.java b/packages/payment/android/src/main/java/com/getcapacitor/community/stripe/paymentflow/PaymentFlowExecutor.java index 518e4f952..5003078ac 100644 --- a/packages/payment/android/src/main/java/com/getcapacitor/community/stripe/paymentflow/PaymentFlowExecutor.java +++ b/packages/payment/android/src/main/java/com/getcapacitor/community/stripe/paymentflow/PaymentFlowExecutor.java @@ -72,48 +72,39 @@ public void createPaymentFlow(final PluginCall call) { environment = PaymentSheet.GooglePayConfiguration.Environment.Test; } - paymentConfiguration = - new PaymentSheet.Configuration( - merchantDisplayName, - customer, - new PaymentSheet.GooglePayConfiguration(environment, call.getString("countryCode", "US")) - ); + paymentConfiguration = new PaymentSheet.Configuration( + merchantDisplayName, + customer, + new PaymentSheet.GooglePayConfiguration(environment, call.getString("countryCode", "US")) + ); } if (setupIntentClientSecret != null) { - flowController.configureWithSetupIntent( - setupIntentClientSecret, - paymentConfiguration, - (success, error) -> { - if (success) { - notifyListenersFunction.accept(PaymentFlowEvents.Loaded.getWebEventName(), emptyObject); - call.resolve(); - } else { - notifyListenersFunction.accept( - PaymentFlowEvents.FailedToLoad.getWebEventName(), - new JSObject().put("error", error.getLocalizedMessage()) - ); - call.reject(error.getLocalizedMessage()); - } + flowController.configureWithSetupIntent(setupIntentClientSecret, paymentConfiguration, (success, error) -> { + if (success) { + notifyListenersFunction.accept(PaymentFlowEvents.Loaded.getWebEventName(), emptyObject); + call.resolve(); + } else { + notifyListenersFunction.accept( + PaymentFlowEvents.FailedToLoad.getWebEventName(), + new JSObject().put("error", error.getLocalizedMessage()) + ); + call.reject(error.getLocalizedMessage()); } - ); + }); } else if (paymentIntentClientSecret != null) { - flowController.configureWithPaymentIntent( - paymentIntentClientSecret, - paymentConfiguration, - (success, error) -> { - if (success) { - notifyListenersFunction.accept(PaymentFlowEvents.Loaded.getWebEventName(), emptyObject); - call.resolve(); - } else { - notifyListenersFunction.accept( - PaymentFlowEvents.FailedToLoad.getWebEventName(), - new JSObject().put("error", error.getLocalizedMessage()) - ); - call.reject(error.getLocalizedMessage()); - } + flowController.configureWithPaymentIntent(paymentIntentClientSecret, paymentConfiguration, (success, error) -> { + if (success) { + notifyListenersFunction.accept(PaymentFlowEvents.Loaded.getWebEventName(), emptyObject); + call.resolve(); + } else { + notifyListenersFunction.accept( + PaymentFlowEvents.FailedToLoad.getWebEventName(), + new JSObject().put("error", error.getLocalizedMessage()) + ); + call.reject(error.getLocalizedMessage()); } - ); + }); } } diff --git a/packages/payment/android/src/main/java/com/getcapacitor/community/stripe/paymentsheet/PaymentSheetExecutor.java b/packages/payment/android/src/main/java/com/getcapacitor/community/stripe/paymentsheet/PaymentSheetExecutor.java index fe44b70b5..6fa2ee9ea 100644 --- a/packages/payment/android/src/main/java/com/getcapacitor/community/stripe/paymentsheet/PaymentSheetExecutor.java +++ b/packages/payment/android/src/main/java/com/getcapacitor/community/stripe/paymentsheet/PaymentSheetExecutor.java @@ -70,31 +70,29 @@ public void createPaymentSheet(final PluginCall call) { String nameCollectionMode = bdCollectionConfiguration.getString("name"); String phoneCollectionMode = bdCollectionConfiguration.getString("phone"); String addressCollectionMode = bdCollectionConfiguration.getString("address"); - billingDetailsCollectionConfiguration = - new PaymentSheet.BillingDetailsCollectionConfiguration( - (nameCollectionMode != null && nameCollectionMode.equals("always")) - ? PaymentSheet.BillingDetailsCollectionConfiguration.CollectionMode.Always - : PaymentSheet.BillingDetailsCollectionConfiguration.CollectionMode.Automatic, - (phoneCollectionMode != null && phoneCollectionMode.equals("always")) - ? PaymentSheet.BillingDetailsCollectionConfiguration.CollectionMode.Always - : PaymentSheet.BillingDetailsCollectionConfiguration.CollectionMode.Automatic, - (emailCollectionMode != null && emailCollectionMode.equals("always")) - ? PaymentSheet.BillingDetailsCollectionConfiguration.CollectionMode.Always - : PaymentSheet.BillingDetailsCollectionConfiguration.CollectionMode.Automatic, - (addressCollectionMode != null && addressCollectionMode.equals("full")) - ? PaymentSheet.BillingDetailsCollectionConfiguration.AddressCollectionMode.Full - : PaymentSheet.BillingDetailsCollectionConfiguration.AddressCollectionMode.Automatic, - false - ); + billingDetailsCollectionConfiguration = new PaymentSheet.BillingDetailsCollectionConfiguration( + (nameCollectionMode != null && nameCollectionMode.equals("always")) + ? PaymentSheet.BillingDetailsCollectionConfiguration.CollectionMode.Always + : PaymentSheet.BillingDetailsCollectionConfiguration.CollectionMode.Automatic, + (phoneCollectionMode != null && phoneCollectionMode.equals("always")) + ? PaymentSheet.BillingDetailsCollectionConfiguration.CollectionMode.Always + : PaymentSheet.BillingDetailsCollectionConfiguration.CollectionMode.Automatic, + (emailCollectionMode != null && emailCollectionMode.equals("always")) + ? PaymentSheet.BillingDetailsCollectionConfiguration.CollectionMode.Always + : PaymentSheet.BillingDetailsCollectionConfiguration.CollectionMode.Automatic, + (addressCollectionMode != null && addressCollectionMode.equals("full")) + ? PaymentSheet.BillingDetailsCollectionConfiguration.AddressCollectionMode.Full + : PaymentSheet.BillingDetailsCollectionConfiguration.AddressCollectionMode.Automatic, + false + ); } if (!enableGooglePay) { if (bdCollectionConfiguration != null) { - paymentConfiguration = - new PaymentSheet.Configuration.Builder(merchantDisplayName) - .customer(customer) - .billingDetailsCollectionConfiguration(billingDetailsCollectionConfiguration) - .build(); + paymentConfiguration = new PaymentSheet.Configuration.Builder(merchantDisplayName) + .customer(customer) + .billingDetailsCollectionConfiguration(billingDetailsCollectionConfiguration) + .build(); } else { paymentConfiguration = new PaymentSheet.Configuration.Builder(merchantDisplayName).customer(customer).build(); } @@ -108,18 +106,16 @@ public void createPaymentSheet(final PluginCall call) { } if (bdCollectionConfiguration != null) { - paymentConfiguration = - new PaymentSheet.Configuration.Builder(merchantDisplayName) - .customer(customer) - .googlePay(new PaymentSheet.GooglePayConfiguration(environment, call.getString("countryCode", "US"))) - .billingDetailsCollectionConfiguration(billingDetailsCollectionConfiguration) - .build(); + paymentConfiguration = new PaymentSheet.Configuration.Builder(merchantDisplayName) + .customer(customer) + .googlePay(new PaymentSheet.GooglePayConfiguration(environment, call.getString("countryCode", "US"))) + .billingDetailsCollectionConfiguration(billingDetailsCollectionConfiguration) + .build(); } else { - paymentConfiguration = - new PaymentSheet.Configuration.Builder(merchantDisplayName) - .customer(customer) - .googlePay(new PaymentSheet.GooglePayConfiguration(environment, call.getString("countryCode", "US"))) - .build(); + paymentConfiguration = new PaymentSheet.Configuration.Builder(merchantDisplayName) + .customer(customer) + .googlePay(new PaymentSheet.GooglePayConfiguration(environment, call.getString("countryCode", "US"))) + .build(); } } diff --git a/packages/payment/ios/Sources/StripePlugin/StripePlugin.swift b/packages/payment/ios/Sources/StripePlugin/StripePlugin.swift index 01cc0e74a..d314ad1cc 100644 --- a/packages/payment/ios/Sources/StripePlugin/StripePlugin.swift +++ b/packages/payment/ios/Sources/StripePlugin/StripePlugin.swift @@ -5,8 +5,8 @@ import StripeApplePay @objc(StripePlugin) public class StripePlugin: CAPPlugin, CAPBridgedPlugin { - public let identifier = "StripePlugin" - public let jsName = "Stripe" + public let identifier = "StripePlugin" + public let jsName = "Stripe" public let pluginMethods: [CAPPluginMethod] = [ CAPPluginMethod(name: "initialize", returnType: CAPPluginReturnPromise), CAPPluginMethod(name: "handleURLCallback", returnType: CAPPluginReturnPromise), @@ -20,8 +20,8 @@ public class StripePlugin: CAPPlugin, CAPBridgedPlugin { CAPPluginMethod(name: "presentApplePay", returnType: CAPPluginReturnPromise), CAPPluginMethod(name: "isGooglePayAvailable", returnType: CAPPluginReturnPromise), CAPPluginMethod(name: "createGooglePay", returnType: CAPPluginReturnPromise), - CAPPluginMethod(name: "presentGooglePay", returnType: CAPPluginReturnPromise), - ] + CAPPluginMethod(name: "presentGooglePay", returnType: CAPPluginReturnPromise) + ] private let paymentSheetExecutor = PaymentSheetExecutor() private let paymentFlowExecutor = PaymentFlowExecutor() private let applePayExecutor = ApplePayExecutor() diff --git a/packages/payment/package-lock.json b/packages/payment/package-lock.json index 472fc05a5..f2bd53b0d 100644 --- a/packages/payment/package-lock.json +++ b/packages/payment/package-lock.json @@ -20,7 +20,7 @@ "@typescript-eslint/eslint-plugin": "^5.27.1", "eslint": "^8.57.0", "prettier": "^3.3.3", - "prettier-plugin-java": "^2.6.4", + "prettier-plugin-java": "^2.6.5", "rimraf": "^6.0.1", "rollup": "^4.24.0", "swiftlint": "^2.0.0", diff --git a/packages/payment/package.json b/packages/payment/package.json index 80d1cab91..22b06e54d 100644 --- a/packages/payment/package.json +++ b/packages/payment/package.json @@ -51,7 +51,7 @@ "lint": "npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint", "fmt": "npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix", "eslint": "eslint src/. --ext ts", - "prettier": "prettier \"{src/*.ts,**/*.java}\"", + "prettier": "prettier \"{src/*.ts,**/*.java}\" --plugin=prettier-plugin-java", "swiftlint": "node-swiftlint", "docgen": "docgen --api DocGenType --output-readme README.md --output-json dist/docs.json", "build": "npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs", @@ -65,14 +65,14 @@ "@capacitor/core": "^6.0.0", "@capacitor/docgen": "git+https://github.com/rdlabo/capacitor-docgen.git#release", "@capacitor/ios": "^6.0.0", - "@types/react": "^16.14.3", - "@typescript-eslint/eslint-plugin": "^5.27.1", "@ionic/eslint-config": "^0.4.0", "@ionic/prettier-config": "^4.0.0", "@ionic/swiftlint-config": "^2.0.0", + "@types/react": "^16.14.3", + "@typescript-eslint/eslint-plugin": "^5.27.1", "eslint": "^8.57.0", "prettier": "^3.3.3", - "prettier-plugin-java": "^2.6.4", + "prettier-plugin-java": "^2.6.5", "rimraf": "^6.0.1", "rollup": "^4.24.0", "swiftlint": "^2.0.0", diff --git a/packages/payment/src/web.ts b/packages/payment/src/web.ts index e2283c1f5..01c3bcdf2 100644 --- a/packages/payment/src/web.ts +++ b/packages/payment/src/web.ts @@ -246,7 +246,7 @@ export class StripeWeb extends WebPlugin implements StripePlugin { 'applePay', this.requestApplePay, this.requestApplePayOptions, - ApplePayEventsEnum + ApplePayEventsEnum, ) as Promise<{ paymentResult: ApplePayResultInterface; }>; @@ -273,7 +273,7 @@ export class StripeWeb extends WebPlugin implements StripePlugin { 'googlePay', this.requestGooglePay, this.requestGooglePayOptions, - GooglePayEventsEnum + GooglePayEventsEnum, ) as Promise<{ paymentResult: GooglePayResultInterface; }>; @@ -319,7 +319,7 @@ export class StripeWeb extends WebPlugin implements StripePlugin { type: 'applePay' | 'googlePay', requestButton: StripeRequestButton | undefined, requestButtonOptions: CreateApplePayOption | CreateGooglePayOption | undefined, - EventsEnum: typeof ApplePayEventsEnum | typeof GooglePayEventsEnum + EventsEnum: typeof ApplePayEventsEnum | typeof GooglePayEventsEnum, ): Promise<{ paymentResult: ApplePayResultInterface | GooglePayResultInterface; }> { @@ -349,7 +349,7 @@ export class StripeWeb extends WebPlugin implements StripePlugin { { payment_method: event.paymentMethod.id, }, - { handleActions: false } + { handleActions: false }, ); if (confirmError) { event.complete('fail'); diff --git a/packages/terminal/Package.swift b/packages/terminal/Package.swift index 14fd112a9..33c6b8920 100644 --- a/packages/terminal/Package.swift +++ b/packages/terminal/Package.swift @@ -11,7 +11,7 @@ let package = Package( ], dependencies: [ .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "6.0.0") - .package(url: "https://github.com/stripe/stripe-terminal-ios.git", exact: "4.1.0") + .package(url: "https://github.com/stripe/stripe-terminal-ios.git", exact: "4.1.0") ], targets: [ .target( @@ -19,7 +19,7 @@ let package = Package( dependencies: [ .product(name: "Capacitor", package: "capacitor-swift-pm"), .product(name: "Cordova", package: "capacitor-swift-pm") - .product(name: "StripeTerminal", package: "stripe-terminal-ios") + .product(name: "StripeTerminal", package: "stripe-terminal-ios") ], path: "ios/Sources/StripeTerminalPlugin"), .testTarget( diff --git a/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminal.java b/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminal.java index b794bf057..45f0c70e5 100644 --- a/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminal.java +++ b/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminal.java @@ -106,13 +106,11 @@ public void initialize(final PluginCall call) throws TerminalException { } this.activitySupplier.get() - .runOnUiThread( - () -> { - TerminalApplicationDelegate.onCreate((Application) this.contextSupplier.get().getApplicationContext()); - notifyListeners(TerminalEnumEvent.Loaded.getWebEventName(), emptyObject); - call.resolve(); - } - ); + .runOnUiThread(() -> { + TerminalApplicationDelegate.onCreate((Application) this.contextSupplier.get().getApplicationContext()); + notifyListeners(TerminalEnumEvent.Loaded.getWebEventName(), emptyObject); + call.resolve(); + }); TerminalListener listener = new TerminalListener() { @Override public void onConnectionStatusChange(@NonNull ConnectionStatus status) { @@ -128,8 +126,11 @@ public void onPaymentStatusChange(@NonNull PaymentStatus status) { } }; LogLevel logLevel = LogLevel.VERBOSE; - this.tokenProvider = - new TokenProvider(this.contextSupplier, call.getString("tokenProviderEndpoint", ""), this.notifyListenersFunction); + this.tokenProvider = new TokenProvider( + this.contextSupplier, + call.getString("tokenProviderEndpoint", ""), + this.notifyListenersFunction + ); if (!Terminal.isInitialized()) { Terminal.initTerminal(this.contextSupplier.get().getApplicationContext(), logLevel, this.tokenProvider, listener); } @@ -142,8 +143,7 @@ public void setConnectionToken(PluginCall call) { public void setSimulatorConfiguration(PluginCall call) { try { - Terminal - .getInstance() + Terminal.getInstance() .setSimulatorConfiguration( new SimulatorConfiguration( SimulateReaderUpdate.valueOf(call.getString("update", "UPDATE_AVAILABLE")), @@ -203,24 +203,22 @@ public void onDiscoverReaders(final PluginCall call) { this.notifyListeners(TerminalEnumEvent.DiscoveredReaders.getWebEventName(), new JSObject().put("readers", readersJSObject)); call.resolve(new JSObject().put("readers", readersJSObject)); }; - discoveryCancelable = - Terminal - .getInstance() - .discoverReaders( - config, - discoveryListener, - new Callback() { - @Override - public void onSuccess() { - Log.d(logTag, "Finished discovering readers"); - } - - @Override - public void onFailure(@NonNull TerminalException ex) { - Log.d(logTag, ex.getLocalizedMessage()); - } + discoveryCancelable = Terminal.getInstance() + .discoverReaders( + config, + discoveryListener, + new Callback() { + @Override + public void onSuccess() { + Log.d(logTag, "Finished discovering readers"); } - ); + + @Override + public void onFailure(@NonNull TerminalException ex) { + Log.d(logTag, ex.getLocalizedMessage()); + } + } + ); } public void connectReader(final PluginCall call) { @@ -252,8 +250,7 @@ public void disconnectReader(final PluginCall call) { return; } - Terminal - .getInstance() + Terminal.getInstance() .disconnectReader( new Callback() { @Override @@ -282,7 +279,10 @@ private void connectTapToPayReader(final PluginCall call) { return; } - Boolean autoReconnectOnUnexpectedDisconnect = Objects.requireNonNullElse(call.getBoolean("autoReconnectOnUnexpectedDisconnect", false), false); + Boolean autoReconnectOnUnexpectedDisconnect = Objects.requireNonNullElse( + call.getBoolean("autoReconnectOnUnexpectedDisconnect", false), + false + ); ConnectionConfiguration.TapToPayConnectionConfiguration config = new ConnectionConfiguration.TapToPayConnectionConfiguration( this.locationId, @@ -296,25 +296,29 @@ private void connectTapToPayReader(final PluginCall call) { @Override public void onReaderReconnectFailed(@NonNull Reader reader) { notifyListeners( - TerminalEnumEvent.ReaderReconnectFailed.getWebEventName(), - new JSObject().put("reader", convertReaderInterface(reader)) + TerminalEnumEvent.ReaderReconnectFailed.getWebEventName(), + new JSObject().put("reader", convertReaderInterface(reader)) ); } @Override - public void onReaderReconnectStarted(@NonNull Reader reader, @NonNull Cancelable cancelReconnect, @NonNull DisconnectReason reason) { + public void onReaderReconnectStarted( + @NonNull Reader reader, + @NonNull Cancelable cancelReconnect, + @NonNull DisconnectReason reason + ) { cancelReaderConnectionCancellable = cancelReconnect; notifyListeners( - TerminalEnumEvent.ReaderReconnectStarted.getWebEventName(), - new JSObject().put("reason", reason.toString()).put("reader", convertReaderInterface(reader)) + TerminalEnumEvent.ReaderReconnectStarted.getWebEventName(), + new JSObject().put("reason", reason.toString()).put("reader", convertReaderInterface(reader)) ); } @Override public void onReaderReconnectSucceeded(@NonNull Reader reader) { notifyListeners( - TerminalEnumEvent.ReaderReconnectSucceeded.getWebEventName(), - new JSObject().put("reader", convertReaderInterface(reader)) + TerminalEnumEvent.ReaderReconnectSucceeded.getWebEventName(), + new JSObject().put("reader", convertReaderInterface(reader)) ); } @@ -331,32 +335,32 @@ public void onDisconnect(@NonNull DisconnectReason reason) { } }; -// ReaderReconnectionListener readerReconnectionListener = new ReaderReconnectionListener() { -// @Override -// public void onReaderReconnectStarted(@NonNull Reader reader, @NonNull Cancelable cancelable, @NonNull DisconnectReason reason) { -// cancelReaderConnectionCancellable = cancelable; -// notifyListeners( -// TerminalEnumEvent.ReaderReconnectStarted.getWebEventName(), -// new JSObject().put("reason", reason.toString()).put("reader", convertReaderInterface(reader)) -// ); -// } -// -// @Override -// public void onReaderReconnectSucceeded(@NonNull Reader reader) { -// notifyListeners( -// TerminalEnumEvent.ReaderReconnectSucceeded.getWebEventName(), -// new JSObject().put("reader", convertReaderInterface(reader)) -// ); -// } -// -// @Override -// public void onReaderReconnectFailed(@NonNull Reader reader) { -// notifyListeners( -// TerminalEnumEvent.ReaderReconnectFailed.getWebEventName(), -// new JSObject().put("reader", convertReaderInterface(reader)) -// ); -// } -// }; + // ReaderReconnectionListener readerReconnectionListener = new ReaderReconnectionListener() { + // @Override + // public void onReaderReconnectStarted(@NonNull Reader reader, @NonNull Cancelable cancelable, @NonNull DisconnectReason reason) { + // cancelReaderConnectionCancellable = cancelable; + // notifyListeners( + // TerminalEnumEvent.ReaderReconnectStarted.getWebEventName(), + // new JSObject().put("reason", reason.toString()).put("reader", convertReaderInterface(reader)) + // ); + // } + // + // @Override + // public void onReaderReconnectSucceeded(@NonNull Reader reader) { + // notifyListeners( + // TerminalEnumEvent.ReaderReconnectSucceeded.getWebEventName(), + // new JSObject().put("reader", convertReaderInterface(reader)) + // ); + // } + // + // @Override + // public void onReaderReconnectFailed(@NonNull Reader reader) { + // notifyListeners( + // TerminalEnumEvent.ReaderReconnectFailed.getWebEventName(), + // new JSObject().put("reader", convertReaderInterface(reader)) + // ); + // } + // }; private void connectInternetReader(final PluginCall call) { JSObject reader = call.getObject("reader"); @@ -401,7 +405,10 @@ private void connectBluetoothReader(final PluginCall call) { call.reject("The reader value is not set correctly."); return; } - Boolean autoReconnectOnUnexpectedDisconnect = Objects.requireNonNullElse(call.getBoolean("autoReconnectOnUnexpectedDisconnect", false), false); + Boolean autoReconnectOnUnexpectedDisconnect = Objects.requireNonNullElse( + call.getBoolean("autoReconnectOnUnexpectedDisconnect", false), + false + ); BluetoothConnectionConfiguration config = new BluetoothConnectionConfiguration( this.locationId, @@ -613,8 +620,7 @@ public void setReaderDisplay(final PluginCall call) { Cart cart = new Cart.Builder(currency, tax, total, cartLineItems).build(); - Terminal - .getInstance() + Terminal.getInstance() .setReaderDisplay( cart, new Callback() { @@ -632,8 +638,7 @@ public void onFailure(@NonNull TerminalException e) { } public void clearReaderDisplay(final PluginCall call) { - Terminal - .getInstance() + Terminal.getInstance() .clearReaderDisplay( new Callback() { @Override @@ -650,8 +655,7 @@ public void onFailure(@NonNull TerminalException e) { } public void rebootReader(final PluginCall call) { - Terminal - .getInstance() + Terminal.getInstance() .rebootReader( new Callback() { @Override @@ -846,13 +850,13 @@ private JSObject convertReaderSoftwareUpdate(ReaderSoftwareUpdate update) { } private Reader findReader(List discoveredReadersList, String serialNumber) { - Reader foundReader = - null; + Reader foundReader = null; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - foundReader = discoveredReadersList.stream() - .filter(device -> serialNumber != null && serialNumber.equals(device.getSerialNumber())) - .findFirst() - .orElse(null); + foundReader = discoveredReadersList + .stream() + .filter(device -> serialNumber != null && serialNumber.equals(device.getSerialNumber())) + .findFirst() + .orElse(null); } else { for (Reader device : discoveredReadersList) { if (serialNumber != null && serialNumber.equals(device.getSerialNumber())) { diff --git a/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminalPlugin.java b/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminalPlugin.java index f3000496f..e39c2a8a8 100644 --- a/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminalPlugin.java +++ b/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminalPlugin.java @@ -94,7 +94,7 @@ private void _initialize(PluginCall call) throws TerminalException { } } - @PluginMethod(returnType = PluginMethod.RETURN_CALLBACK) + @PluginMethod(returnType = PluginMethod.RETURN_CALLBACK) public void discoverReaders(PluginCall call) { if ( Objects.equals(call.getString("type"), TerminalConnectTypes.Bluetooth.getWebEventName()) || diff --git a/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/TokenProvider.java b/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/TokenProvider.java index fc1c93e3c..38c0cccbf 100644 --- a/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/TokenProvider.java +++ b/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/TokenProvider.java @@ -15,7 +15,6 @@ import com.stripe.stripeterminal.external.callable.ConnectionTokenCallback; import com.stripe.stripeterminal.external.callable.ConnectionTokenProvider; import com.stripe.stripeterminal.external.models.ConnectionTokenException; - import java.util.ArrayList; import java.util.Objects; import org.json.JSONException; diff --git a/packages/terminal/ios/Sources/StripeTerminalPlugin/StripeTerminal.swift b/packages/terminal/ios/Sources/StripeTerminalPlugin/StripeTerminal.swift index 63086ad34..497081921 100644 --- a/packages/terminal/ios/Sources/StripeTerminalPlugin/StripeTerminal.swift +++ b/packages/terminal/ios/Sources/StripeTerminalPlugin/StripeTerminal.swift @@ -3,7 +3,7 @@ import Capacitor import StripeTerminal public class StripeTerminal: NSObject, DiscoveryDelegate, TerminalDelegate, ReaderDelegate, MobileReaderDelegate, TapToPayReaderDelegate, InternetReaderDelegate { - + weak var plugin: StripeTerminalPlugin? private let apiClient = APIClient() diff --git a/packages/terminal/ios/Sources/StripeTerminalPlugin/StripeTerminalPlugin.swift b/packages/terminal/ios/Sources/StripeTerminalPlugin/StripeTerminalPlugin.swift index b64a8d50d..38c5d6782 100644 --- a/packages/terminal/ios/Sources/StripeTerminalPlugin/StripeTerminalPlugin.swift +++ b/packages/terminal/ios/Sources/StripeTerminalPlugin/StripeTerminalPlugin.swift @@ -5,8 +5,8 @@ import PassKit @objc(StripeTerminalPlugin) public class StripeTerminalPlugin: CAPPlugin, CAPBridgedPlugin { - public let identifier = "StripeTerminalPlugin" - public let jsName = "StripeTerminal" + public let identifier = "StripeTerminalPlugin" + public let jsName = "StripeTerminal" public let pluginMethods: [CAPPluginMethod] = [ CAPPluginMethod(name: "initialize", returnType: CAPPluginReturnPromise), CAPPluginMethod(name: "setConnectionToken", returnType: CAPPluginReturnPromise), @@ -24,8 +24,8 @@ public class StripeTerminalPlugin: CAPPlugin, CAPBridgedPlugin { CAPPluginMethod(name: "setReaderDisplay", returnType: CAPPluginReturnPromise), CAPPluginMethod(name: "clearReaderDisplay", returnType: CAPPluginReturnPromise), CAPPluginMethod(name: "rebootReader", returnType: CAPPluginReturnPromise), - CAPPluginMethod(name: "cancelReaderReconnection", returnType: CAPPluginReturnPromise), - ] + CAPPluginMethod(name: "cancelReaderReconnection", returnType: CAPPluginReturnPromise) + ] private let implementation = StripeTerminal() override public func load() { diff --git a/packages/terminal/package-lock.json b/packages/terminal/package-lock.json index dc2e528f1..b6e3426a7 100644 --- a/packages/terminal/package-lock.json +++ b/packages/terminal/package-lock.json @@ -21,7 +21,7 @@ "@ionic/swiftlint-config": "^2.0.0", "eslint": "^8.57.0", "prettier": "^3.3.3", - "prettier-plugin-java": "^2.6.4", + "prettier-plugin-java": "^2.6.5", "rimraf": "^6.0.1", "rollup": "^4.24.0", "swiftlint": "^2.0.0", diff --git a/packages/terminal/package.json b/packages/terminal/package.json index bc8856a56..63b8d2ad5 100644 --- a/packages/terminal/package.json +++ b/packages/terminal/package.json @@ -40,7 +40,7 @@ "lint": "npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint", "fmt": "npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format", "eslint": "eslint . --ext ts", - "prettier": "prettier \"**/*.{css,html,ts,js,java}\"", + "prettier": "prettier \"**/*.{css,html,ts,js,java}\" --plugin=prettier-plugin-java", "swiftlint": "node-swiftlint", "docgen": "docgen --api StripeTerminalPlugin --output-readme README.md --output-json dist/docs.json", "build": "npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs", @@ -58,7 +58,7 @@ "@ionic/swiftlint-config": "^2.0.0", "eslint": "^8.57.0", "prettier": "^3.3.3", - "prettier-plugin-java": "^2.6.4", + "prettier-plugin-java": "^2.6.5", "rimraf": "^6.0.1", "rollup": "^4.24.0", "swiftlint": "^2.0.0", diff --git a/packages/terminal/src/definitions.ts b/packages/terminal/src/definitions.ts index c608e9d02..68f2845ec 100644 --- a/packages/terminal/src/definitions.ts +++ b/packages/terminal/src/definitions.ts @@ -99,14 +99,8 @@ export type Cart = { export * from './events.enum'; export * from './stripe.enum'; export interface StripeTerminalPlugin { - initialize(options: { - tokenProviderEndpoint?: string; - isTest: boolean; - }): Promise; - discoverReaders(options: { - type: TerminalConnectTypes; - locationId?: string; - }): Promise<{ + initialize(options: { tokenProviderEndpoint?: string; isTest: boolean }): Promise; + discoverReaders(options: { type: TerminalConnectTypes; locationId?: string }): Promise<{ readers: ReaderInterface[]; }>; setConnectionToken(options: { token: string }): Promise; @@ -150,10 +144,7 @@ export interface StripeTerminalPlugin { rebootReader(): Promise; cancelReaderReconnection(): Promise; - addListener( - eventName: TerminalEventsEnum.Loaded, - listenerFunc: () => void, - ): Promise; + addListener(eventName: TerminalEventsEnum.Loaded, listenerFunc: () => void): Promise; addListener( eventName: TerminalEventsEnum.RequestedConnectionToken, @@ -165,10 +156,7 @@ export interface StripeTerminalPlugin { listenerFunc: ({ readers }: { readers: ReaderInterface[] }) => void, ): Promise; - addListener( - eventName: TerminalEventsEnum.ConnectedReader, - listenerFunc: () => void, - ): Promise; + addListener(eventName: TerminalEventsEnum.ConnectedReader, listenerFunc: () => void): Promise; /** * Emitted when the reader is disconnected, either in response to [`disconnectReader()`](#disconnectreader) @@ -236,10 +224,7 @@ export interface StripeTerminalPlugin { * Emitted when [`cancelCollectPaymentMethod()`](#cancelcollectpaymentmethod) is called and succeeds. * The Promise returned by `cancelCollectPaymentMethod()` will also be resolved. */ - addListener( - eventName: TerminalEventsEnum.Canceled, - listenerFunc: () => void, - ): Promise; + addListener(eventName: TerminalEventsEnum.Canceled, listenerFunc: () => void): Promise; /** * Emitted when either [`collectPaymentMethod()`](#collectpaymentmethod) or [`confirmPaymentIntent()`](#confirmpaymentintent) @@ -247,11 +232,7 @@ export interface StripeTerminalPlugin { */ addListener( eventName: TerminalEventsEnum.Failed, - listenerFunc: (info: { - message: string; - code?: string; - declineCode?: string; - }) => void, + listenerFunc: (info: { message: string; code?: string; declineCode?: string }) => void, ): Promise; /** @@ -259,11 +240,7 @@ export interface StripeTerminalPlugin { */ addListener( eventName: TerminalEventsEnum.ReportAvailableUpdate, - listenerFunc: ({ - update, - }: { - update: ReaderSoftwareUpdateInterface; - }) => void, + listenerFunc: ({ update }: { update: ReaderSoftwareUpdateInterface }) => void, ): Promise; /** @@ -288,11 +265,7 @@ export interface StripeTerminalPlugin { */ addListener( eventName: TerminalEventsEnum.StartInstallingUpdate, - listenerFunc: ({ - update, - }: { - update: ReaderSoftwareUpdateInterface; - }) => void, + listenerFunc: ({ update }: { update: ReaderSoftwareUpdateInterface }) => void, ): Promise; /** @@ -335,15 +308,7 @@ export interface StripeTerminalPlugin { */ addListener( eventName: TerminalEventsEnum.BatteryLevel, - listenerFunc: ({ - level, - charging, - status, - }: { - level: number; - charging: boolean; - status: BatteryStatus; - }) => void, + listenerFunc: ({ level, charging, status }: { level: number; charging: boolean; status: BatteryStatus }) => void, ): Promise; /** @@ -365,13 +330,7 @@ export interface StripeTerminalPlugin { */ addListener( eventName: TerminalEventsEnum.RequestDisplayMessage, - listenerFunc: ({ - messageType, - message, - }: { - messageType: ReaderDisplayMessage; - message: string; - }) => void, + listenerFunc: ({ messageType, message }: { messageType: ReaderDisplayMessage; message: string }) => void, ): Promise; /** @@ -385,13 +344,7 @@ export interface StripeTerminalPlugin { */ addListener( eventName: TerminalEventsEnum.RequestReaderInput, - listenerFunc: ({ - options, - message, - }: { - options: ReaderInputOption[]; - message: string; - }) => void, + listenerFunc: ({ options, message }: { options: ReaderInputOption[]; message: string }) => void, ): Promise; /** @@ -404,13 +357,7 @@ export interface StripeTerminalPlugin { addListener( eventName: TerminalEventsEnum.ReaderReconnectStarted, - listenerFunc: ({ - reader, - reason, - }: { - reader: ReaderInterface; - reason: string; - }) => void, + listenerFunc: ({ reader, reason }: { reader: ReaderInterface; reason: string }) => void, ): Promise; addListener( diff --git a/packages/terminal/src/index.ts b/packages/terminal/src/index.ts index 77426fd3f..003fd2bbb 100644 --- a/packages/terminal/src/index.ts +++ b/packages/terminal/src/index.ts @@ -3,7 +3,7 @@ import { registerPlugin } from '@capacitor/core'; import type { StripeTerminalPlugin } from './definitions'; const StripeTerminal = registerPlugin('StripeTerminal', { - web: () => import('./web').then(m => new m.StripeTerminalWeb()), + web: () => import('./web').then((m) => new m.StripeTerminalWeb()), }); export * from './definitions'; diff --git a/packages/terminal/src/terminal-mappers.ts b/packages/terminal/src/terminal-mappers.ts index e9092fcb6..40e8bcb34 100644 --- a/packages/terminal/src/terminal-mappers.ts +++ b/packages/terminal/src/terminal-mappers.ts @@ -1,12 +1,7 @@ import type { Reader } from '@stripe/terminal-js/types/terminal'; import type { Cart, LocationInterface, ReaderInterface } from './definitions'; -import { - BatteryStatus, - DeviceType, - LocationStatus, - NetworkStatus, -} from './definitions'; +import { BatteryStatus, DeviceType, LocationStatus, NetworkStatus } from './definitions'; import type { ICart } from './stripe-types/proto'; export const mapFromCartToICart = (cart: Cart): ICart => { @@ -22,9 +17,7 @@ export const mapFromCartToICart = (cart: Cart): ICart => { }; }; -export const mapFromConnectionStatus = ( - connectionStatus: ConnectionStatus, -): string => { +export const mapFromConnectionStatus = (connectionStatus: ConnectionStatus): string => { switch (connectionStatus) { case ConnectionStatus.CONNECTED: return 'CONNECTED'; @@ -106,9 +99,7 @@ export const mapFromDeviceType = (type: ReaderDeviceType): DeviceType => { } }; -export const mapFromReaderNetworkStatus = ( - status: string | null, -): NetworkStatus => { +export const mapFromReaderNetworkStatus = (status: string | null): NetworkStatus => { switch (status) { case 'offline': return NetworkStatus.Offline; diff --git a/packages/terminal/src/web.ts b/packages/terminal/src/web.ts index 3c66025c9..a44fe42d3 100644 --- a/packages/terminal/src/web.ts +++ b/packages/terminal/src/web.ts @@ -1,12 +1,7 @@ import { WebPlugin } from '@capacitor/core'; import type { ISdkManagedPaymentIntent } from '@stripe/terminal-js'; import { loadStripeTerminal } from '@stripe/terminal-js'; -import type { - DiscoverResult, - ErrorResponse, - Reader, - Terminal, -} from '@stripe/terminal-js/types/terminal'; +import type { DiscoverResult, ErrorResponse, Reader, Terminal } from '@stripe/terminal-js/types/terminal'; import { TerminalConnectTypes } from './definitions'; import type { @@ -24,10 +19,7 @@ import { mapFromPaymentStatus, } from './terminal-mappers'; -export class StripeTerminalWeb - extends WebPlugin - implements StripeTerminalPlugin -{ +export class StripeTerminalWeb extends WebPlugin implements StripeTerminalPlugin { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore private stripeTerminal: Terminal | undefined = undefined; @@ -37,10 +29,7 @@ export class StripeTerminalWeb private cachedPaymentIntent: ISdkManagedPaymentIntent | undefined = undefined; private isTest = false; - async initialize(options: { - tokenProviderEndpoint: string; - isTest: boolean; - }): Promise { + async initialize(options: { tokenProviderEndpoint: string; isTest: boolean }): Promise { if (this.stripeTerminal !== undefined) { throw new Error('Stripe Terminal has already been initialized'); } @@ -60,17 +49,15 @@ export class StripeTerminalWeb const data = await response.json(); return data.secret; } else { - return new Promise( - resolve => (this.tokenProviderPromiseResolve.push(resolve)), - ); + return new Promise((resolve) => this.tokenProviderPromiseResolve.push(resolve)); } }, - onConnectionStatusChange: status => { + onConnectionStatusChange: (status) => { this.notifyListeners(TerminalEventsEnum.ConnectionStatusChange, { status: mapFromConnectionStatus(status.status), }); }, - onPaymentStatusChange: status => { + onPaymentStatusChange: (status) => { this.notifyListeners(TerminalEventsEnum.PaymentStatusChange, { status: mapFromPaymentStatus(status.status), }); @@ -84,10 +71,7 @@ export class StripeTerminalWeb this.notifyListeners(TerminalEventsEnum.Loaded, null); } - async discoverReaders(options: { - type: TerminalConnectTypes; - locationId?: string; - }): Promise<{ + async discoverReaders(options: { type: TerminalConnectTypes; locationId?: string }): Promise<{ readers: ReaderInterface[]; }> { if (this.stripeTerminal === undefined) { @@ -95,9 +79,7 @@ export class StripeTerminalWeb } if (options.type !== TerminalConnectTypes.Internet) { - this.unavailable( - `${options.type} is selected. Web platform is supported only internet connection.`, - ); + this.unavailable(`${options.type} is selected. Web platform is supported only internet connection.`); } const discoverResult = await this.stripeTerminal.discoverReaders({ @@ -108,12 +90,10 @@ export class StripeTerminalWeb if ((discoverResult as ErrorResponse).error) { throw new Error((discoverResult as ErrorResponse).error.message); } - this.cachedFindReaders = ( - discoverResult as DiscoverResult - ).discoveredReaders; - this.discoveredReaders = ( - discoverResult as DiscoverResult - ).discoveredReaders.map(reader => convertReaderInterface(reader)); + this.cachedFindReaders = (discoverResult as DiscoverResult).discoveredReaders; + this.discoveredReaders = (discoverResult as DiscoverResult).discoveredReaders.map((reader) => + convertReaderInterface(reader), + ); this.notifyListeners(TerminalEventsEnum.DiscoveredReaders, { readers: this.discoveredReaders, }); @@ -151,9 +131,7 @@ export class StripeTerminalWeb } async connectReader(options: { reader: ReaderInterface }): Promise { - const reader = this.cachedFindReaders.find( - reader => reader.serial_number === options.reader.serialNumber, - ); + const reader = this.cachedFindReaders.find((reader) => reader.serial_number === options.reader.serialNumber); if (reader === undefined) { throw new Error('reader is not match from descovered readers.'); } @@ -181,12 +159,8 @@ export class StripeTerminalWeb this.notifyListeners(TerminalEventsEnum.DisconnectedReader, null); } - async collectPaymentMethod(options: { - paymentIntent: string; - }): Promise { - const collectResult = await this.stripeTerminal?.collectPaymentMethod( - options.paymentIntent, - ); + async collectPaymentMethod(options: { paymentIntent: string }): Promise { + const collectResult = await this.stripeTerminal?.collectPaymentMethod(options.paymentIntent); if ((collectResult as ErrorResponse).error) { throw new Error((collectResult as ErrorResponse).error.message); @@ -210,9 +184,7 @@ export class StripeTerminalWeb if (this.cachedPaymentIntent === undefined) { throw new Error('PaymentIntent is not cached.'); } - const processResult = await this.stripeTerminal?.processPayment( - this.cachedPaymentIntent, - ); + const processResult = await this.stripeTerminal?.processPayment(this.cachedPaymentIntent); if ((processResult as ErrorResponse).error) { throw new Error((processResult as ErrorResponse).error.message); } @@ -227,7 +199,7 @@ export class StripeTerminalWeb } async setReaderDisplay(options: Cart): Promise { await this.stripeTerminal?.setReaderDisplay({ - type: "cart", + type: 'cart', cart: mapFromCartToICart(options), }); console.log('setReaderDisplay', options); From 4b61dc66f36eeb44f2bcca1de2bd59eaa56e84fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 10:35:56 +0900 Subject: [PATCH 14/41] fix(): fix Package.swift --- packages/identity/Package.swift | 8 ++++---- packages/identity/package.json | 2 +- packages/payment/Package.swift | 6 +++--- packages/payment/package.json | 2 +- packages/terminal/Package.swift | 8 ++++---- packages/terminal/package.json | 2 +- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/packages/identity/Package.swift b/packages/identity/Package.swift index a790e013f..1a8485245 100644 --- a/packages/identity/Package.swift +++ b/packages/identity/Package.swift @@ -10,16 +10,16 @@ let package = Package( targets: ["StripeIdentityPlugin"]) ], dependencies: [ - .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "6.0.0") - .package(url: "https://github.com/stripe/stripe-ios-spm.git", exact: "23.32.0") + .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "6.0.0"), + .package(url: "https://github.com/stripe/stripe-ios-spm.git", exact: "23.32.0") ], targets: [ .target( name: "StripeIdentityPlugin", dependencies: [ .product(name: "Capacitor", package: "capacitor-swift-pm"), - .product(name: "Cordova", package: "capacitor-swift-pm") - .product(name: "StripeIdentity", package: "stripe-ios-spm") + .product(name: "Cordova", package: "capacitor-swift-pm"), + .product(name: "StripeIdentity", package: "stripe-ios-spm") ], path: "ios/Sources/StripeIdentityPlugin"), .testTarget( diff --git a/packages/identity/package.json b/packages/identity/package.json index 1ab8f48a8..2107e9730 100644 --- a/packages/identity/package.json +++ b/packages/identity/package.json @@ -34,7 +34,7 @@ ], "scripts": { "verify": "npm run verify:ios && npm run verify:android && npm run verify:web", - "verify:ios": "cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..", + "verify:ios": "xcodebuild -scheme StripeIdentityPlugin -destination generic/platform=iOS", "verify:android": "cd android && ./gradlew clean build test && cd ..", "verify:web": "npm run build", "lint": "npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint", diff --git a/packages/payment/Package.swift b/packages/payment/Package.swift index 45d6974e8..6dd262379 100644 --- a/packages/payment/Package.swift +++ b/packages/payment/Package.swift @@ -10,7 +10,7 @@ let package = Package( targets: ["StripePlugin"]) ], dependencies: [ - .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "6.0.0") + .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "main"), .package(url: "https://github.com/stripe/stripe-ios-spm.git", exact: "23.32.0") ], targets: [ @@ -18,8 +18,8 @@ let package = Package( name: "StripePlugin", dependencies: [ .product(name: "Capacitor", package: "capacitor-swift-pm"), - .product(name: "Cordova", package: "capacitor-swift-pm") - .product(name: "StripePaymentSheet", package: "stripe-ios-spm") + .product(name: "Cordova", package: "capacitor-swift-pm"), + .product(name: "StripePaymentSheet", package: "stripe-ios-spm"), .product(name: "StripeApplePay", package: "stripe-ios-spm") ], path: "ios/Sources/StripePlugin"), diff --git a/packages/payment/package.json b/packages/payment/package.json index 22b06e54d..e70d66efb 100644 --- a/packages/payment/package.json +++ b/packages/payment/package.json @@ -45,7 +45,7 @@ ], "scripts": { "verify": "npm run verify:ios && npm run verify:android && npm run verify:web", - "verify:ios": "cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..", + "verify:ios": "xcodebuild -scheme StripePlugin -destination generic/platform=iOS", "verify:android": "cd android && ./gradlew clean build test && cd ..", "verify:web": "npm run build", "lint": "npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint", diff --git a/packages/terminal/Package.swift b/packages/terminal/Package.swift index 33c6b8920..56b8ce0fe 100644 --- a/packages/terminal/Package.swift +++ b/packages/terminal/Package.swift @@ -10,16 +10,16 @@ let package = Package( targets: ["StripeTerminalPlugin"]) ], dependencies: [ - .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "6.0.0") - .package(url: "https://github.com/stripe/stripe-terminal-ios.git", exact: "4.1.0") + .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "6.0.0"), + .package(url: "https://github.com/stripe/stripe-terminal-ios.git", exact: "4.1.0") ], targets: [ .target( name: "StripeTerminalPlugin", dependencies: [ .product(name: "Capacitor", package: "capacitor-swift-pm"), - .product(name: "Cordova", package: "capacitor-swift-pm") - .product(name: "StripeTerminal", package: "stripe-terminal-ios") + .product(name: "Cordova", package: "capacitor-swift-pm"), + .product(name: "StripeTerminal", package: "stripe-terminal-ios") ], path: "ios/Sources/StripeTerminalPlugin"), .testTarget( diff --git a/packages/terminal/package.json b/packages/terminal/package.json index 63b8d2ad5..438f5169e 100644 --- a/packages/terminal/package.json +++ b/packages/terminal/package.json @@ -34,7 +34,7 @@ ], "scripts": { "verify": "npm run verify:ios && npm run verify:android && npm run verify:web", - "verify:ios": "cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -destination generic/platform=iOS && cd ..", + "verify:ios": "xcodebuild -scheme StripeIdentityPlugin -destination generic/platform=iOS", "verify:android": "cd android && ./gradlew clean build test && cd ..", "verify:web": "npm run build", "lint": "npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint", From dbb14b7128d96e16e39ef879ffaaa2f76d484ce8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 10:38:40 +0900 Subject: [PATCH 15/41] feat(test): add ios test --- .github/workflows/build.yml | 42 +++++++++++++++++++ .../StripeIdentityPluginTests.swift | 8 ++-- .../StripePluginTests/StripePluginTests.swift | 8 ++-- .../StripeTerminalPluginTests.swift | 8 ++-- 4 files changed, 54 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4028507a1..e2b1eb21d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -123,3 +123,45 @@ jobs: - name: verify run: npm run verify:android working-directory: ./packages/terminal + + verify-payment-ios: + runs-on: macos-14 + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 18 + - name: npm install + run: npm install + working-directory: ./packages/payment + - name: verify + run: npm run verify:ios + working-directory: ./packages/payment + + verify-identity-ios: + runs-on: macos-14 + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 18 + - name: npm install + run: npm install + working-directory: ./packages/identity + - name: verify + run: npm run verify:ios + working-directory: ./packages/identity + + verify-terminal-ios: + runs-on: macos-14 + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 18 + - name: npm install + run: npm install + working-directory: ./packages/terminal + - name: verify + run: npm run verify:ios + working-directory: ./packages/terminal diff --git a/packages/identity/ios/Tests/StripeIdentityPluginTests/StripeIdentityPluginTests.swift b/packages/identity/ios/Tests/StripeIdentityPluginTests/StripeIdentityPluginTests.swift index e1db2b100..a9d55e99d 100644 --- a/packages/identity/ios/Tests/StripeIdentityPluginTests/StripeIdentityPluginTests.swift +++ b/packages/identity/ios/Tests/StripeIdentityPluginTests/StripeIdentityPluginTests.swift @@ -7,9 +7,9 @@ class StripeIdentityTests: XCTestCase { // Use XCTAssert and related functions to verify your tests produce the correct results. let implementation = StripeIdentity() - let value = "Hello, World!" - let result = implementation.echo(value) - - XCTAssertEqual(value, result) +// let value = "Hello, World!" +// let result = implementation.echo(value) +// +// XCTAssertEqual(value, result) } } diff --git a/packages/payment/ios/Tests/StripePluginTests/StripePluginTests.swift b/packages/payment/ios/Tests/StripePluginTests/StripePluginTests.swift index 10d89f98f..233cb3ed4 100644 --- a/packages/payment/ios/Tests/StripePluginTests/StripePluginTests.swift +++ b/packages/payment/ios/Tests/StripePluginTests/StripePluginTests.swift @@ -7,9 +7,9 @@ class StripeTests: XCTestCase { // Use XCTAssert and related functions to verify your tests produce the correct results. let implementation = Stripe() - let value = "Hello, World!" - let result = implementation.echo(value) - - XCTAssertEqual(value, result) +// let value = "Hello, World!" +// let result = implementation.echo(value) +// +// XCTAssertEqual(value, result) } } diff --git a/packages/terminal/ios/Tests/StripeTerminalPluginTests/StripeTerminalPluginTests.swift b/packages/terminal/ios/Tests/StripeTerminalPluginTests/StripeTerminalPluginTests.swift index 53a36943c..b8551e900 100644 --- a/packages/terminal/ios/Tests/StripeTerminalPluginTests/StripeTerminalPluginTests.swift +++ b/packages/terminal/ios/Tests/StripeTerminalPluginTests/StripeTerminalPluginTests.swift @@ -7,9 +7,9 @@ class StripeTerminalTests: XCTestCase { // Use XCTAssert and related functions to verify your tests produce the correct results. let implementation = StripeTerminal() - let value = "Hello, World!" - let result = implementation.echo(value) - - XCTAssertEqual(value, result) +// let value = "Hello, World!" +// let result = implementation.echo(value) +// +// XCTAssertEqual(value, result) } } From d8d8e8c9fc8d81ec0b68f57199eb36dd5ccdb7e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 11:00:37 +0900 Subject: [PATCH 16/41] chore --- .../angular/ios/App/App/capacitor.config.json | 101 ------------------ demo/angular/ios/App/Podfile.lock | 6 +- packages/identity/Package.swift | 2 +- packages/identity/package.json | 2 +- packages/payment/Package.swift | 2 +- packages/terminal/Package.swift | 2 +- 6 files changed, 7 insertions(+), 108 deletions(-) diff --git a/demo/angular/ios/App/App/capacitor.config.json b/demo/angular/ios/App/App/capacitor.config.json index 13a8147ee..951b875a9 100644 --- a/demo/angular/ios/App/App/capacitor.config.json +++ b/demo/angular/ios/App/App/capacitor.config.json @@ -5,108 +5,7 @@ "bundledWebRuntime": false, "packageClassList": [ "StripePlugin", - "StripePlugin", - "STPApplePayContext", - "sharedClient", - "STPConnectionError", - "STP_Internal_DownloadManager", - "STPCardScanner", - "STP_Internal_AuthenticationContext", - "STPRedirectContextAppRedirectError", - "STPCollectBankAccountErrorFinancialConnectionsSDKNotLinked", - "STPCardValidator", - "STPPaymentHandlerUnsupportedAuthenticationErrorCode", - "cardBrandChoiceImage", - "STP_Internal_PaymentMethodMessagingView", - "preferredNetworks", - "STPPaymentCardTextField", - "STP_Internal_ActivityIndicator", - "STP_Internal_Button", - "STP_Internal_OneTimeCodeTextField_TextPosition", - "STP_Internal_OneTimeCodeTextField", - "STP_Internal_StackViewWithSeparator", - "STP_Internal_DoneButtonToolbar", - "STP_Internal_DynamicHeightContainerView", - "STP_Internal_DynamicImageView", - "STP_Internal_LinkOpeningTextView", - "STP_Internal_SeparatorLabel", - "STPAddressViewController", - "STPBottomSheetPresentationAnimator", - "STPBottomSheetPresentationController", - "STPBottomSheetTransitioningDelegate", - "STP_Internal_CustomerAddPaymentMethodViewController", - "STP_Internal_SavedPaymentMethodsCollectionViewController", - "STP_Internal_CustomerSavedPaymentMethodsViewController", - "STP_Internal_AddPaymentMethodViewController", - "STP_Internal_PaymentMethodTypeCollectionView", - "STP_Internal_SavedPaymentMethodCollectionView", - "STP_Internal_SavedPaymentOptionsViewController", - "STP_Internal_BankAccountInfoView", - "STP_Internal_BottomSheet3DS2ViewController", - "STP_Internal_BottomSheetViewController", - "STP_Internal_LoadingViewController", - "STP_Internal_PaymentSheetViewController", - "STP_Internal_PollingViewController", - "STP_Internal_UpdateCardViewController", - "STP_Internal_AUBECSLegalTermsView", - "STP_Internal_AffirmCopyLabel", - "STP_Internal_AfterpayPriceBreakdownView", - "STP_Internal_CardScanningView", - "STP_Internal_CircularButton", - "STP_Internal_ConfirmButton", - "STP_Internal_PayWithLinkButton", - "STP_Internal_RotatingCardBrandsView", - "STP_Internal_SheetNavigationBar", - "STP_Internal_SheetNavigationButton", - "STP_Internal_SimpleMandateTextView", - "STP_Internal_TestModeView", - "PKContactValue", - "STP_Internal_CheckboxButton", - "STP_Internal_FormView", - "STP_Internal_PickerFieldView", - "STP_Internal_PickerTextField", - "STP_Internal_SectionContainerView", - "STP_Internal_SectionView", - "STP_Internal_FloatingPlaceholderTextFieldView", - "STP_Internal_TextFieldView", - "STP_Internal_PayWithLinkWebController", - "STP_Internal_LinkLegalTermsView", - "STP_Internal_LinkMoreInfoView", - "STP_Internal_CardSectionWithScannerView", - "STP_Internal_AutoCompleteViewController", - "STP_Internal_LinkAccountSession", - "STPPaymentIntentLastPaymentErrorTypeAPIConnection", - "setupFutureUsage", - "STPPaymentMethodTypeiDEAL", - "STPSetupIntentLastSetupErrorTypeAPIConnection", - "STP_Internal_LinkSettings", - "STPSourceTypeiDEAL", - "STP_Internal_CardBrandView", - "STP_Internal_LinkInlineSignupView", - "STP_Internal_GenericInputPickerFieldFormatter", - "StripeIdentityPlugin", "StripeIdentityPlugin", - "sharedClient", - "STPConnectionError", - "STP_Internal_ActivityIndicator", - "STP_Internal_Button", - "STP_Internal_OneTimeCodeTextField_TextPosition", - "STP_Internal_OneTimeCodeTextField", - "STP_Internal_StackViewWithSeparator", - "STP_Internal_DoneButtonToolbar", - "STP_Internal_DynamicHeightContainerView", - "STP_Internal_DynamicImageView", - "STP_Internal_LinkOpeningTextView", - "STP_Internal_VerificationSheetFlowController", - "STP_Internal_CheckboxButton", - "STP_Internal_FormView", - "STP_Internal_PickerFieldView", - "STP_Internal_PickerTextField", - "STP_Internal_SectionContainerView", - "STP_Internal_SectionView", - "STP_Internal_FloatingPlaceholderTextFieldView", - "STP_Internal_TextFieldView", - "StripeTerminalPlugin", "StripeTerminalPlugin" ] } diff --git a/demo/angular/ios/App/Podfile.lock b/demo/angular/ios/App/Podfile.lock index 422a58c7a..48a84839f 100644 --- a/demo/angular/ios/App/Podfile.lock +++ b/demo/angular/ios/App/Podfile.lock @@ -72,9 +72,9 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: Capacitor: 679f9673fdf30597493a6362a5d5bf233d46abc2 - CapacitorCommunityStripe: 029a530c26bbc805b855da11375d347fb5398835 - CapacitorCommunityStripeIdentity: 31f01cd07e07f9ff0b99dc4a80188b9518e8e12a - CapacitorCommunityStripeTerminal: 32c65d0b1ef96bec258074d5172215820f075dd1 + CapacitorCommunityStripe: 278d037566b213a2faafe55005bc00e28967998f + CapacitorCommunityStripeIdentity: 5478f655a09293240507a65668b5992ce985991a + CapacitorCommunityStripeTerminal: 6d1bf34a320815231b1fd74c3c6a6a7c4f46ba8f CapacitorCordova: f48c89f96c319101cd2f0ce8a2b7449b5fb8b3dd StripeApplePay: fd4aeaa8af1ebbfe5e38390ef7b4607f66494f80 StripeCameraCore: 2f226573bc1a84deba61ded08e2d3f49b0bd5a7d diff --git a/packages/identity/Package.swift b/packages/identity/Package.swift index 1a8485245..2fb861616 100644 --- a/packages/identity/Package.swift +++ b/packages/identity/Package.swift @@ -6,7 +6,7 @@ let package = Package( platforms: [.iOS(.v13)], products: [ .library( - name: "StripeIdentityPlugin", + name: "CapacitorCommunityStripeIdentity", targets: ["StripeIdentityPlugin"]) ], dependencies: [ diff --git a/packages/identity/package.json b/packages/identity/package.json index 2107e9730..b4dd63473 100644 --- a/packages/identity/package.json +++ b/packages/identity/package.json @@ -34,7 +34,7 @@ ], "scripts": { "verify": "npm run verify:ios && npm run verify:android && npm run verify:web", - "verify:ios": "xcodebuild -scheme StripeIdentityPlugin -destination generic/platform=iOS", + "verify:ios": "xcodebuild -list && xcodebuild -scheme StripeIdentityPlugin -destination generic/platform=iOS", "verify:android": "cd android && ./gradlew clean build test && cd ..", "verify:web": "npm run build", "lint": "npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint", diff --git a/packages/payment/Package.swift b/packages/payment/Package.swift index 6dd262379..67b4e07d2 100644 --- a/packages/payment/Package.swift +++ b/packages/payment/Package.swift @@ -6,7 +6,7 @@ let package = Package( platforms: [.iOS(.v13)], products: [ .library( - name: "StripePlugin", + name: "CapacitorCommunityStripe", targets: ["StripePlugin"]) ], dependencies: [ diff --git a/packages/terminal/Package.swift b/packages/terminal/Package.swift index 56b8ce0fe..4dfebb79d 100644 --- a/packages/terminal/Package.swift +++ b/packages/terminal/Package.swift @@ -6,7 +6,7 @@ let package = Package( platforms: [.iOS(.v13)], products: [ .library( - name: "StripeTerminalPlugin", + name: "CapacitorCommunityStripeTerminal", targets: ["StripeTerminalPlugin"]) ], dependencies: [ From 4babf411c43181ceb3cd0e9b5fb3a5d56c5d6585 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 11:03:50 +0900 Subject: [PATCH 17/41] fix(ci): update scheme name at verify:ios --- packages/identity/package.json | 2 +- packages/payment/package.json | 2 +- packages/terminal/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/identity/package.json b/packages/identity/package.json index b4dd63473..3bb0ee7d3 100644 --- a/packages/identity/package.json +++ b/packages/identity/package.json @@ -34,7 +34,7 @@ ], "scripts": { "verify": "npm run verify:ios && npm run verify:android && npm run verify:web", - "verify:ios": "xcodebuild -list && xcodebuild -scheme StripeIdentityPlugin -destination generic/platform=iOS", + "verify:ios": "xcodebuild -scheme CapacitorCommunityStripeIdentity -destination generic/platform=iOS", "verify:android": "cd android && ./gradlew clean build test && cd ..", "verify:web": "npm run build", "lint": "npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint", diff --git a/packages/payment/package.json b/packages/payment/package.json index e70d66efb..e8591d5d5 100644 --- a/packages/payment/package.json +++ b/packages/payment/package.json @@ -45,7 +45,7 @@ ], "scripts": { "verify": "npm run verify:ios && npm run verify:android && npm run verify:web", - "verify:ios": "xcodebuild -scheme StripePlugin -destination generic/platform=iOS", + "verify:ios": "xcodebuild -scheme CapacitorCommunityStripe -destination generic/platform=iOS", "verify:android": "cd android && ./gradlew clean build test && cd ..", "verify:web": "npm run build", "lint": "npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint", diff --git a/packages/terminal/package.json b/packages/terminal/package.json index 438f5169e..a28d8db8c 100644 --- a/packages/terminal/package.json +++ b/packages/terminal/package.json @@ -34,7 +34,7 @@ ], "scripts": { "verify": "npm run verify:ios && npm run verify:android && npm run verify:web", - "verify:ios": "xcodebuild -scheme StripeIdentityPlugin -destination generic/platform=iOS", + "verify:ios": "xcodebuild -scheme CapacitorCommunityStripeTerminal -destination generic/platform=iOS", "verify:android": "cd android && ./gradlew clean build test && cd ..", "verify:web": "npm run build", "lint": "npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint", From 4c4d7f2234f84f4570f817043c9ae0c16d50a1f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 11:07:19 +0900 Subject: [PATCH 18/41] fix(terminal): ios require v14 --- packages/terminal/Package.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/terminal/Package.swift b/packages/terminal/Package.swift index 4dfebb79d..1a796e853 100644 --- a/packages/terminal/Package.swift +++ b/packages/terminal/Package.swift @@ -3,7 +3,7 @@ import PackageDescription let package = Package( name: "CapacitorCommunityStripeTerminal", - platforms: [.iOS(.v13)], + platforms: [.iOS(.v14)], products: [ .library( name: "CapacitorCommunityStripeTerminal", From adb482181c423aa0abc83043f052e12014b22062 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 11:09:10 +0900 Subject: [PATCH 19/41] chore --- packages/payment/Package.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/payment/Package.swift b/packages/payment/Package.swift index 67b4e07d2..574b34cbf 100644 --- a/packages/payment/Package.swift +++ b/packages/payment/Package.swift @@ -10,7 +10,7 @@ let package = Package( targets: ["StripePlugin"]) ], dependencies: [ - .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "main"), + .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "6.0.0"), .package(url: "https://github.com/stripe/stripe-ios-spm.git", exact: "23.32.0") ], targets: [ From 71ab405097de17f69af7d5c4ec8ec034a7661bb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 11:18:45 +0900 Subject: [PATCH 20/41] chore --- packages/identity/Package.swift | 2 +- packages/payment/Package.swift | 2 +- packages/terminal/Package.swift | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/identity/Package.swift b/packages/identity/Package.swift index 2fb861616..bcbfd6390 100644 --- a/packages/identity/Package.swift +++ b/packages/identity/Package.swift @@ -10,7 +10,7 @@ let package = Package( targets: ["StripeIdentityPlugin"]) ], dependencies: [ - .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "6.0.0"), + .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "6.x"), .package(url: "https://github.com/stripe/stripe-ios-spm.git", exact: "23.32.0") ], targets: [ diff --git a/packages/payment/Package.swift b/packages/payment/Package.swift index 574b34cbf..79ef36427 100644 --- a/packages/payment/Package.swift +++ b/packages/payment/Package.swift @@ -10,7 +10,7 @@ let package = Package( targets: ["StripePlugin"]) ], dependencies: [ - .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "6.0.0"), + .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "6.x"), .package(url: "https://github.com/stripe/stripe-ios-spm.git", exact: "23.32.0") ], targets: [ diff --git a/packages/terminal/Package.swift b/packages/terminal/Package.swift index 1a796e853..ce099b878 100644 --- a/packages/terminal/Package.swift +++ b/packages/terminal/Package.swift @@ -10,7 +10,7 @@ let package = Package( targets: ["StripeTerminalPlugin"]) ], dependencies: [ - .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "6.0.0"), + .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "6.x"), .package(url: "https://github.com/stripe/stripe-terminal-ios.git", exact: "4.1.0") ], targets: [ From 37d403b92f5956aafc5fe1221f396e82a47f186c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 11:24:25 +0900 Subject: [PATCH 21/41] feat(ci): use cache --- .github/workflows/build.yml | 42 ++++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e2b1eb21d..107c3fc31 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,10 +21,8 @@ jobs: - name: Use cached node_modules uses: actions/cache@v4 with: - path: ~/.npm - key: ${{ runner.os }}-v1-dependencies-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-v1-dependencies- + path: node_modules + key: ${{ runner.os }}-node-${{ steps.setup_node.outputs.node-version }}-npm-${{ hashFiles('**/package-lock.json') }}-v1 - name: Build Payment package run: npm install && npm run build @@ -78,6 +76,11 @@ jobs: - uses: actions/setup-node@v4 with: node-version: 20 + - name: Use cached node_modules + uses: actions/cache@v4 + with: + path: node_modules + key: ${{ runner.os }}-node-${{ steps.setup_node.outputs.node-version }}-npm-${{ hashFiles('**/package-lock.json') }}-v1 - name: npm install run: npm install working-directory: ./packages/payment @@ -97,6 +100,11 @@ jobs: - uses: actions/setup-node@v4 with: node-version: 20 + - name: Use cached node_modules + uses: actions/cache@v4 + with: + path: node_modules + key: ${{ runner.os }}-node-${{ steps.setup_node.outputs.node-version }}-npm-${{ hashFiles('**/package-lock.json') }}-v1 - name: npm install run: npm install working-directory: ./packages/identity @@ -117,6 +125,11 @@ jobs: - uses: actions/setup-node@v4 with: node-version: 20 + - name: Use cached node_modules + uses: actions/cache@v4 + with: + path: node_modules + key: ${{ runner.os }}-node-${{ steps.setup_node.outputs.node-version }}-npm-${{ hashFiles('**/package-lock.json') }}-v1 - name: npm install run: npm install working-directory: ./packages/terminal @@ -130,7 +143,12 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: 18 + node-version: 20 + - name: Use cached node_modules + uses: actions/cache@v4 + with: + path: node_modules + key: ${{ runner.os }}-node-${{ steps.setup_node.outputs.node-version }}-npm-${{ hashFiles('**/package-lock.json') }}-v1 - name: npm install run: npm install working-directory: ./packages/payment @@ -144,7 +162,12 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: 18 + node-version: 20 + - name: Use cached node_modules + uses: actions/cache@v4 + with: + path: node_modules + key: ${{ runner.os }}-node-${{ steps.setup_node.outputs.node-version }}-npm-${{ hashFiles('**/package-lock.json') }}-v1 - name: npm install run: npm install working-directory: ./packages/identity @@ -158,7 +181,12 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: 18 + node-version: 20 + - name: Use cached node_modules + uses: actions/cache@v4 + with: + path: node_modules + key: ${{ runner.os }}-node-${{ steps.setup_node.outputs.node-version }}-npm-${{ hashFiles('**/package-lock.json') }}-v1 - name: npm install run: npm install working-directory: ./packages/terminal From 920ad795030b7fa39c48208de952801f78b21751 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 12:06:07 +0900 Subject: [PATCH 22/41] feat(spm): change branch name(follow cap command) --- packages/identity/Package.swift | 2 +- packages/payment/Package.swift | 2 +- packages/terminal/Package.swift | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/identity/Package.swift b/packages/identity/Package.swift index bcbfd6390..a43e5cad6 100644 --- a/packages/identity/Package.swift +++ b/packages/identity/Package.swift @@ -10,7 +10,7 @@ let package = Package( targets: ["StripeIdentityPlugin"]) ], dependencies: [ - .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "6.x"), + .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "main"), .package(url: "https://github.com/stripe/stripe-ios-spm.git", exact: "23.32.0") ], targets: [ diff --git a/packages/payment/Package.swift b/packages/payment/Package.swift index 79ef36427..67b4e07d2 100644 --- a/packages/payment/Package.swift +++ b/packages/payment/Package.swift @@ -10,7 +10,7 @@ let package = Package( targets: ["StripePlugin"]) ], dependencies: [ - .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "6.x"), + .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "main"), .package(url: "https://github.com/stripe/stripe-ios-spm.git", exact: "23.32.0") ], targets: [ diff --git a/packages/terminal/Package.swift b/packages/terminal/Package.swift index ce099b878..bcba42a4e 100644 --- a/packages/terminal/Package.swift +++ b/packages/terminal/Package.swift @@ -10,7 +10,7 @@ let package = Package( targets: ["StripeTerminalPlugin"]) ], dependencies: [ - .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "6.x"), + .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "main"), .package(url: "https://github.com/stripe/stripe-terminal-ios.git", exact: "4.1.0") ], targets: [ From b9c5c6b2a624420a590f72498439f24bb0599aec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 12:15:53 +0900 Subject: [PATCH 23/41] chore(demo): new ios template --- .../ios/App/App.xcodeproj/project.pbxproj | 18 ++++++++---------- .../contents.xcworkspacedata | 7 ------- demo/angular/ios/App/App/App.entitlements | 10 ---------- demo/angular/ios/App/App/Info.plist | 6 +++--- 4 files changed, 11 insertions(+), 30 deletions(-) delete mode 100644 demo/angular/ios/App/App.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 demo/angular/ios/App/App/App.entitlements diff --git a/demo/angular/ios/App/App.xcodeproj/project.pbxproj b/demo/angular/ios/App/App.xcodeproj/project.pbxproj index 04e2c8458..7dba0413c 100644 --- a/demo/angular/ios/App/App.xcodeproj/project.pbxproj +++ b/demo/angular/ios/App/App.xcodeproj/project.pbxproj @@ -29,7 +29,6 @@ 50B271D01FEDC1A000F3C39B /* public */ = {isa = PBXFileReference; lastKnownFileType = folder; path = public; sourceTree = ""; }; AF277DCFFFF123FFC6DF26C7 /* Pods_App.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_App.framework; sourceTree = BUILT_PRODUCTS_DIR; }; AF51FD2D460BCFE21FA515B2 /* Pods-App.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-App.release.xcconfig"; path = "Pods/Target Support Files/Pods-App/Pods-App.release.xcconfig"; sourceTree = ""; }; - DBAE04F026DA1E5500E76C93 /* App.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = App.entitlements; sourceTree = ""; }; FC68EB0AF532CFC21C3344DD /* Pods-App.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-App.debug.xcconfig"; path = "Pods/Target Support Files/Pods-App/Pods-App.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -74,7 +73,6 @@ 504EC3061FED79650016851F /* App */ = { isa = PBXGroup; children = ( - DBAE04F026DA1E5500E76C93 /* App.entitlements */, 50379B222058CBB4000EE86E /* capacitor.config.json */, 504EC3071FED79650016851F /* AppDelegate.swift */, 504EC30B1FED79650016851F /* Main.storyboard */, @@ -143,6 +141,8 @@ Base, ); mainGroup = 504EC2FB1FED79650016851F; + packageReferences = ( + ); productRefGroup = 504EC3051FED79650016851F /* Products */; projectDirPath = ""; projectRoot = ""; @@ -347,17 +347,16 @@ baseConfigurationReference = FC68EB0AF532CFC21C3344DD /* Pods-App.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_ENTITLEMENTS = App/App.entitlements; - CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = P7E2DJ2G49; INFOPLIST_FILE = App/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MARKETING_VERSION = 1.0; OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\""; - PRODUCT_BUNDLE_IDENTIFIER = com.getcapacitor.stripe; + PRODUCT_BUNDLE_IDENTIFIER = io.ionic.starter; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -369,16 +368,15 @@ baseConfigurationReference = AF51FD2D460BCFE21FA515B2 /* Pods-App.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_ENTITLEMENTS = App/App.entitlements; - CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = P7E2DJ2G49; INFOPLIST_FILE = App/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.getcapacitor.stripe; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = io.ionic.starter; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_ACTIVE_COMPILATION_CONDITIONS = ""; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; diff --git a/demo/angular/ios/App/App.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/demo/angular/ios/App/App.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 42daef8a1..000000000 --- a/demo/angular/ios/App/App.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/demo/angular/ios/App/App/App.entitlements b/demo/angular/ios/App/App/App.entitlements deleted file mode 100644 index 03e2064ff..000000000 --- a/demo/angular/ios/App/App/App.entitlements +++ /dev/null @@ -1,10 +0,0 @@ - - - - - com.apple.developer.in-app-payments - - merchant.com.capacitor.stripe - - - diff --git a/demo/angular/ios/App/App/Info.plist b/demo/angular/ios/App/App/Info.plist index 605676e3f..913e1d034 100644 --- a/demo/angular/ios/App/App/Info.plist +++ b/demo/angular/ios/App/App/Info.plist @@ -5,7 +5,7 @@ CFBundleDevelopmentRegion en CFBundleDisplayName - capacitor-stripe + capacitor-stripe CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -17,9 +17,9 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.0 + $(MARKETING_VERSION) CFBundleVersion - 1 + $(CURRENT_PROJECT_VERSION) LSRequiresIPhoneOS UILaunchStoryboardName From c9d11ce05019c7ef99542fd387edfd2e9788e763 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 13:27:21 +0900 Subject: [PATCH 24/41] fix(identity): change how to get icon assets --- .../StripeIdentityPlugin/StripeIdentity.swift | 32 ++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/packages/identity/ios/Sources/StripeIdentityPlugin/StripeIdentity.swift b/packages/identity/ios/Sources/StripeIdentityPlugin/StripeIdentity.swift index 98b161517..a3726503a 100644 --- a/packages/identity/ios/Sources/StripeIdentityPlugin/StripeIdentity.swift +++ b/packages/identity/ios/Sources/StripeIdentityPlugin/StripeIdentity.swift @@ -21,18 +21,28 @@ import StripeIdentity return } - // Configure a square brand logo. Recommended image size is 32 x 32 points. - let configuration = IdentityVerificationSheet.Configuration( - brandLogo: UIImage(named: "AppIcon")! - ) - self.identityVerificationSheet = IdentityVerificationSheet( - verificationSessionId: verificationId!, - ephemeralKeySecret: ephemeralKeySecret!, - configuration: configuration - ) + if let iconFileName = Bundle.main.object(forInfoDictionaryKey: "CFBundleIcons") as? [String: Any], + let primaryIcon = iconFileName["CFBundlePrimaryIcon"] as? [String: Any], + let iconFilesArray = primaryIcon["CFBundleIconFiles"] as? [String], + let fileName = iconFilesArray.first { - self.plugin?.notifyListeners(IdentityVerificationSheetEvents.Loaded.rawValue, data: [:]) - call.resolve([:]) + let configuration = IdentityVerificationSheet.Configuration( + brandLogo: UIImage(named: fileName) ?? UIImage() + ) + + self.identityVerificationSheet = IdentityVerificationSheet( + verificationSessionId: verificationId!, + ephemeralKeySecret: ephemeralKeySecret!, + configuration: configuration + ) + + self.plugin?.notifyListeners(IdentityVerificationSheetEvents.Loaded.rawValue, data: [:]) + call.resolve([:]) + } else { + let errorText = "CFBundleIcons or CFBundlePrimaryIcon or CFBundleIconFiles is not found. You should check ios image assets" + self.plugin?.notifyListeners(IdentityVerificationSheetEvents.FailedToLoad.rawValue, data: ["message": errorText]) + call.reject(errorText) + } } func present(_ call: CAPPluginCall) { From 4a66a19bc9a5047a5421846099f1bfc7416c961d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 13:27:59 +0900 Subject: [PATCH 25/41] fmt --- .../StripeIdentityPluginTests.swift | 8 ++++---- .../StripeTerminalPluginTests.swift | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/identity/ios/Tests/StripeIdentityPluginTests/StripeIdentityPluginTests.swift b/packages/identity/ios/Tests/StripeIdentityPluginTests/StripeIdentityPluginTests.swift index a9d55e99d..0aed48695 100644 --- a/packages/identity/ios/Tests/StripeIdentityPluginTests/StripeIdentityPluginTests.swift +++ b/packages/identity/ios/Tests/StripeIdentityPluginTests/StripeIdentityPluginTests.swift @@ -7,9 +7,9 @@ class StripeIdentityTests: XCTestCase { // Use XCTAssert and related functions to verify your tests produce the correct results. let implementation = StripeIdentity() -// let value = "Hello, World!" -// let result = implementation.echo(value) -// -// XCTAssertEqual(value, result) + // let value = "Hello, World!" + // let result = implementation.echo(value) + // + // XCTAssertEqual(value, result) } } diff --git a/packages/terminal/ios/Tests/StripeTerminalPluginTests/StripeTerminalPluginTests.swift b/packages/terminal/ios/Tests/StripeTerminalPluginTests/StripeTerminalPluginTests.swift index b8551e900..cc72863ab 100644 --- a/packages/terminal/ios/Tests/StripeTerminalPluginTests/StripeTerminalPluginTests.swift +++ b/packages/terminal/ios/Tests/StripeTerminalPluginTests/StripeTerminalPluginTests.swift @@ -7,9 +7,9 @@ class StripeTerminalTests: XCTestCase { // Use XCTAssert and related functions to verify your tests produce the correct results. let implementation = StripeTerminal() -// let value = "Hello, World!" -// let result = implementation.echo(value) -// -// XCTAssertEqual(value, result) + // let value = "Hello, World!" + // let result = implementation.echo(value) + // + // XCTAssertEqual(value, result) } } From 496c6ed7f54e51ab476a7de4c1bb4bbbed512838 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 13:36:57 +0900 Subject: [PATCH 26/41] fix typo --- demo/angular/src/app/terminal/terminal.page.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/demo/angular/src/app/terminal/terminal.page.ts b/demo/angular/src/app/terminal/terminal.page.ts index 3dfac97fa..6c4c43cd9 100644 --- a/demo/angular/src/app/terminal/terminal.page.ts +++ b/demo/angular/src/app/terminal/terminal.page.ts @@ -105,12 +105,12 @@ export class TerminalPage { throw e; }); - const listnerHandler = await StripeTerminal.addListener(TerminalEventsEnum.DiscoveredReaders, async ({ readers }) => { + const listenerHandler = await StripeTerminal.addListener(TerminalEventsEnum.DiscoveredReaders, async ({ readers }) => { if (readers?.length > 0) { const result = { readers }; await this.helper.updateItem(this.eventItems, 'discoverReaders', true); - this.listenerHandlers.push(listnerHandler); + this.listenerHandlers.push(listenerHandler); const selectedReader = result.readers?.length === 1 From 7101384871d1d7a58033edac49f5a45b0ddd5a09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 13:39:21 +0900 Subject: [PATCH 27/41] chore(demo): set string token is be default --- demo/angular/src/app/terminal/terminal.page.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/angular/src/app/terminal/terminal.page.ts b/demo/angular/src/app/terminal/terminal.page.ts index 6c4c43cd9..83b2d367d 100644 --- a/demo/angular/src/app/terminal/terminal.page.ts +++ b/demo/angular/src/app/terminal/terminal.page.ts @@ -534,7 +534,7 @@ export class TerminalPage { } this.eventItems = eventItems; await StripeTerminal.initialize({ - tokenProviderEndpoint: environment.api + 'connection/token', + // tokenProviderEndpoint: environment.api + 'connection/token', isTest: !readerType || readerType === TerminalConnectTypes.TapToPay, }) .then(() => this.helper.updateItem(this.eventItems, 'initialize', true)) From c2db5ead6aa5817abf9e7f227d5c4474d5e212b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 14:28:30 +0900 Subject: [PATCH 28/41] chore(terminal): update to pod --- demo/angular/ios/App/Podfile.lock | 8 ++++---- .../terminal/CapacitorCommunityStripeTerminal.podspec | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/demo/angular/ios/App/Podfile.lock b/demo/angular/ios/App/Podfile.lock index 48a84839f..80bf3a079 100644 --- a/demo/angular/ios/App/Podfile.lock +++ b/demo/angular/ios/App/Podfile.lock @@ -10,7 +10,7 @@ PODS: - StripeIdentity (~> 23.32.0) - CapacitorCommunityStripeTerminal (6.2.1): - Capacitor - - StripeTerminal (~> 4.0.0) + - StripeTerminal (~> 4.1.0) - CapacitorCordova (6.1.2) - StripeApplePay (23.32.0): - StripeCore (= 23.32.0) @@ -35,7 +35,7 @@ PODS: - StripeCore (= 23.32.0) - StripePayments (= 23.32.0) - StripeUICore (= 23.32.0) - - StripeTerminal (4.0.0) + - StripeTerminal (4.1.0) - StripeUICore (23.32.0): - StripeCore (= 23.32.0) @@ -74,7 +74,7 @@ SPEC CHECKSUMS: Capacitor: 679f9673fdf30597493a6362a5d5bf233d46abc2 CapacitorCommunityStripe: 278d037566b213a2faafe55005bc00e28967998f CapacitorCommunityStripeIdentity: 5478f655a09293240507a65668b5992ce985991a - CapacitorCommunityStripeTerminal: 6d1bf34a320815231b1fd74c3c6a6a7c4f46ba8f + CapacitorCommunityStripeTerminal: fb0d8fd92ef9ac7c5edd8ac4cbdd5317225ff33a CapacitorCordova: f48c89f96c319101cd2f0ce8a2b7449b5fb8b3dd StripeApplePay: fd4aeaa8af1ebbfe5e38390ef7b4607f66494f80 StripeCameraCore: 2f226573bc1a84deba61ded08e2d3f49b0bd5a7d @@ -83,7 +83,7 @@ SPEC CHECKSUMS: StripePayments: a1260c9fecdb8640462c1fe70c4e2e17df2ab3a8 StripePaymentSheet: 155d402ee01447002d23c982e905ce06e6d7ef66 StripePaymentsUI: 2084d4398cb4869b13dd9eac43a00481476b152f - StripeTerminal: b8a0f7bc10534eb060f676c9b3b813b2613a137b + StripeTerminal: e393c25fd8262bd99986785f7ecc91625755d65f StripeUICore: 2c115cc8498f3badc19b4a41b3b1fdac0ae21d41 PODFILE CHECKSUM: c75ca255b97ee461832b20e6cdf6d1da533d4019 diff --git a/packages/terminal/CapacitorCommunityStripeTerminal.podspec b/packages/terminal/CapacitorCommunityStripeTerminal.podspec index 65c74ae44..cbb80d2d3 100644 --- a/packages/terminal/CapacitorCommunityStripeTerminal.podspec +++ b/packages/terminal/CapacitorCommunityStripeTerminal.podspec @@ -13,6 +13,6 @@ Pod::Spec.new do |s| s.source_files = 'ios/Sources/**/*.{swift,h,m,c,cc,mm,cpp}' s.ios.deployment_target = '14.0' s.dependency 'Capacitor' - s.dependency 'StripeTerminal', '~> 4.0.0' + s.dependency 'StripeTerminal', '~> 4.1.0' s.swift_version = '5.1' end From aef948850f24cb2da1b0ab630ec817d8565b9b26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 14:28:58 +0900 Subject: [PATCH 29/41] fix(demo): fix run order --- .../angular/src/app/terminal/terminal.page.ts | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/demo/angular/src/app/terminal/terminal.page.ts b/demo/angular/src/app/terminal/terminal.page.ts index 83b2d367d..9ee96d2ef 100644 --- a/demo/angular/src/app/terminal/terminal.page.ts +++ b/demo/angular/src/app/terminal/terminal.page.ts @@ -92,19 +92,6 @@ export class TerminalPage { } await this.prepareTerminalEvents(eventItems, readerType); - const result = await StripeTerminal.discoverReaders({ - type: readerType, - locationId: - [TerminalConnectTypes.Usb].includes( - readerType, - ) - ? 'tml_Ff37mAmk1XdBYT' - : 'tml_FOUOdQVIxvVdvN', - }).catch((e) => { - this.helper.updateItem(this.eventItems, 'discoverReaders', false); - throw e; - }); - const listenerHandler = await StripeTerminal.addListener(TerminalEventsEnum.DiscoveredReaders, async ({ readers }) => { if (readers?.length > 0) { const result = { readers }; @@ -220,6 +207,18 @@ export class TerminalPage { } }); + const result = await StripeTerminal.discoverReaders({ + type: readerType, + locationId: + [TerminalConnectTypes.Usb].includes( + readerType, + ) + ? 'tml_Ff37mAmk1XdBYT' + : 'tml_FOUOdQVIxvVdvN', + }).catch((e) => { + this.helper.updateItem(this.eventItems, 'discoverReaders', false); + throw e; + }); } async checkUpdateDeviceUpdate(readerType: TerminalConnectTypes = TerminalConnectTypes.Bluetooth) { From 2d10f71f237d03abcdeeebf01cc1f06762501ada Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 14:43:45 +0900 Subject: [PATCH 30/41] fix(terminal): remove pendingCallback = null --- .../getcapacitor/community/stripe/terminal/TokenProvider.java | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/TokenProvider.java b/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/TokenProvider.java index 38c0cccbf..cc114b271 100644 --- a/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/TokenProvider.java +++ b/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/TokenProvider.java @@ -48,7 +48,6 @@ public void setConnectionToken(PluginCall call) { pending.onSuccess(token); call.resolve(); } - pendingCallback = null; } else { call.reject("Stripe Terminal do not pending fetchConnectionToken"); } From 356c3178f80974a0871e3aeacb7ec0662e2623db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 16:26:49 +0900 Subject: [PATCH 31/41] chore(terminal): remove deprecated device index --- .../ios/Sources/StripeTerminalPlugin/StripeTerminal.swift | 6 +----- packages/terminal/src/definitions.ts | 5 ----- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/packages/terminal/ios/Sources/StripeTerminalPlugin/StripeTerminal.swift b/packages/terminal/ios/Sources/StripeTerminalPlugin/StripeTerminal.swift index 497081921..a4b2de99f 100644 --- a/packages/terminal/ios/Sources/StripeTerminalPlugin/StripeTerminal.swift +++ b/packages/terminal/ios/Sources/StripeTerminalPlugin/StripeTerminal.swift @@ -72,12 +72,8 @@ public class StripeTerminal: NSObject, DiscoveryDelegate, TerminalDelegate, Read public func terminal(_ terminal: Terminal, didUpdateDiscoveredReaders readers: [Reader]) { var readersJSObject: JSArray = [] - var i = 0 for reader in readers { - readersJSObject.append([ - "index": i - ].merging(self.convertReaderInterface(reader: reader)) { (_, new) in new }) - i += 1 + readersJSObject.append(self.convertReaderInterface(reader: reader)) } self.discoveredReadersList = readers diff --git a/packages/terminal/src/definitions.ts b/packages/terminal/src/definitions.ts index 68f2845ec..c4591895e 100644 --- a/packages/terminal/src/definitions.ts +++ b/packages/terminal/src/definitions.ts @@ -57,11 +57,6 @@ export type ReaderInterface = { trackKeyProfileId: string; settingsVersion: string; pinKeysetId: string; - - /** - * @deprecated This property has been deprecated and should use the `serialNumber` property. - */ - index?: number; }; export type LocationInterface = { id: string; From 6628e9a7bcf9b7f7066429364a9dd816124109c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 16:39:09 +0900 Subject: [PATCH 32/41] fix(ios): terminal collect reader require main thread --- .../src/app/terminal/happyPathItems.ts | 4 --- .../StripeTerminalPlugin/StripeTerminal.swift | 30 +++++++++---------- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/demo/angular/src/app/terminal/happyPathItems.ts b/demo/angular/src/app/terminal/happyPathItems.ts index 598e7d7ac..b6ae52393 100644 --- a/demo/angular/src/app/terminal/happyPathItems.ts +++ b/demo/angular/src/app/terminal/happyPathItems.ts @@ -75,10 +75,6 @@ export const happyPathBluetoothItems: ITestItems[] = [ type: 'event', name: TerminalEventsEnum.DiscoveringReaders, }, - { - type: 'event', - name: TerminalEventsEnum.DiscoveredReaders, - }, { type: 'method', name: 'connectReader', diff --git a/packages/terminal/ios/Sources/StripeTerminalPlugin/StripeTerminal.swift b/packages/terminal/ios/Sources/StripeTerminalPlugin/StripeTerminal.swift index a4b2de99f..bcca7c1f3 100644 --- a/packages/terminal/ios/Sources/StripeTerminalPlugin/StripeTerminal.swift +++ b/packages/terminal/ios/Sources/StripeTerminalPlugin/StripeTerminal.swift @@ -84,13 +84,15 @@ public class StripeTerminal: NSObject, DiscoveryDelegate, TerminalDelegate, Read } public func connectReader(_ call: CAPPluginCall) { - if self.type == .tapToPay { - self.connectLocalMobileReader(call) - } else if self.type == .internet { - self.connectInternetReader(call) - } else { - // if self.type === DiscoveryMethod.bluetoothScan - self.connectBluetoothReader(call) + DispatchQueue.main.async { + if self.type == .tapToPay { + self.connectLocalMobileReader(call) + } else if self.type == .internet { + self.connectInternetReader(call) + } else { + // if self.type === DiscoveryMethod.bluetoothScan + self.connectBluetoothReader(call) + } } } @@ -108,14 +110,12 @@ public class StripeTerminal: NSObject, DiscoveryDelegate, TerminalDelegate, Read return } - DispatchQueue.main.async { - Terminal.shared.disconnectReader { error in - if let error = error { - call.reject(error.localizedDescription) - } else { - self.plugin?.notifyListeners(TerminalEvents.DisconnectedReader.rawValue, data: [:]) - call.resolve() - } + Terminal.shared.disconnectReader { error in + if let error = error { + call.reject(error.localizedDescription) + } else { + self.plugin?.notifyListeners(TerminalEvents.DisconnectedReader.rawValue, data: [:]) + call.resolve() } } } From eb94e48cb2239b902728dce1bf884ddadb3f5af4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 17:23:52 +0900 Subject: [PATCH 33/41] feat(android): remove exclude emoji2 from payment --- packages/payment/android/build.gradle | 4 ++-- packages/terminal/android/build.gradle | 4 ++-- .../community/stripe/terminal/StripeTerminal.java | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/payment/android/build.gradle b/packages/payment/android/build.gradle index 65fc0123f..510faec75 100644 --- a/packages/payment/android/build.gradle +++ b/packages/payment/android/build.gradle @@ -5,7 +5,7 @@ ext { androidxEspressoCoreVersion = project.hasProperty('androidxEspressoCoreVersion') ? rootProject.ext.androidxEspressoCoreVersion : '3.5.1' playServicesWalletVersion = project.hasProperty('playServicesWalletVersion') ? rootProject.ext.playServicesWalletVersion : '19.2.+' - stripeAndroidVersion = project.hasProperty('stripeAndroidVersion') ? rootProject.ext.stripeAndroidVersion : '20.52.+' + stripeAndroidVersion = project.hasProperty('stripeAndroidVersion') ? rootProject.ext.stripeAndroidVersion : '21.2.+' gsonVersion = project.hasProperty('gsonVersion') ? rootProject.ext.gsonVersion : '2.10.+' } @@ -69,7 +69,7 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation("com.stripe:stripe-android:$stripeAndroidVersion") { - exclude group: 'androidx.emoji2', module: 'emoji2' + exclude group: 'org.bouncycastle', module: 'bcprov-jdk15to18' } implementation "com.google.code.gson:gson:$gsonVersion" diff --git a/packages/terminal/android/build.gradle b/packages/terminal/android/build.gradle index 76bf6a864..12d5f7d2f 100644 --- a/packages/terminal/android/build.gradle +++ b/packages/terminal/android/build.gradle @@ -6,8 +6,8 @@ ext { playServicesWalletVersion = project.hasProperty('playServicesWalletVersion') ? rootProject.ext.playServicesWalletVersion : '19.2.+' volleyVersion = project.hasProperty('volleyVersion') ? rootProject.ext.volleyVersion : '1.2.1' - stripeterminalTapToPayVersion = project.hasProperty('stripeterminalTapToPayVersion') ? rootProject.ext.stripeterminalTapToPayVersion : '4.0.0' - stripeterminalCoreVersion = project.hasProperty('stripeterminalCoreVersion') ? rootProject.ext.stripeterminalCoreVersion : '4.0.0' + stripeterminalTapToPayVersion = project.hasProperty('stripeterminalTapToPayVersion') ? rootProject.ext.stripeterminalTapToPayVersion : '4.1.0' + stripeterminalCoreVersion = project.hasProperty('stripeterminalCoreVersion') ? rootProject.ext.stripeterminalCoreVersion : '4.1.0' } buildscript { diff --git a/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminal.java b/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminal.java index 45f0c70e5..e751cde93 100644 --- a/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminal.java +++ b/packages/terminal/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminal.java @@ -148,7 +148,8 @@ public void setSimulatorConfiguration(PluginCall call) { new SimulatorConfiguration( SimulateReaderUpdate.valueOf(call.getString("update", "UPDATE_AVAILABLE")), new SimulatedCard(SimulatedCardType.valueOf(call.getString("simulatedCard", "VISA"))), - call.getLong("simulatedTipAmount", null) + call.getLong("simulatedTipAmount", null), + false ) ); From 097e47b90d44ba31638f99d438cc79bc71599883 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 17:26:26 +0900 Subject: [PATCH 34/41] chore(): set next tag --- package.json | 2 +- release.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 829dbe6d8..f8b283535 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "private": false, "description": "Stripe SDK bindings for Capacitor Applications", "scripts": { - "release": "np --no-tests --no-publish && node ./release.js" + "release": "np --no-tests --no-publish --any-branch && node ./release.js" }, "repository": { "type": "git", diff --git a/release.js b/release.js index 4e0350450..de70a17ff 100644 --- a/release.js +++ b/release.js @@ -8,7 +8,7 @@ const workspaces = ['packages/payment', 'packages/identity', 'packages/terminal' workspaces.forEach(async (workspace) => { const releasePackagePath = path.resolve('./' + workspace); await updatePackage(releasePackagePath + '/package.json', { version: pkg.version }); - exec(`cd ${releasePackagePath} && npm install && npm run build && npm publish`, (err, stdout, stderr) => { + exec(`cd ${releasePackagePath} && npm install && npm run build && npm publish --tag next`, (err, stdout, stderr) => { if (err) { console.error(err); return; From aac237da2acc9d8cb6bd410cb7d36d0048b2dc75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 17:26:39 +0900 Subject: [PATCH 35/41] 6.3.0-0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f8b283535..0ae029336 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@capacitor-community/stripe", - "version": "6.2.2", + "version": "6.3.0-0", "engines": { "node": ">=18.0.0" }, From af484000204380be582379e39d6205859fbccc77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 17:27:27 +0900 Subject: [PATCH 36/41] chore --- release.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release.js b/release.js index de70a17ff..f1424c41d 100644 --- a/release.js +++ b/release.js @@ -1,6 +1,6 @@ import { updatePackage } from 'write-pkg'; import path from 'path'; -import pkg from './package.json' assert { type: 'json' }; +import pkg from './package.json' with { type: 'json' }; import { exec } from 'child_process'; const workspaces = ['packages/payment', 'packages/identity', 'packages/terminal']; From 0c5f77dd90ec629bc6a4e3afcbd8f530fd837fa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 17:27:43 +0900 Subject: [PATCH 37/41] 6.4.0-0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0ae029336..3dbf61efe 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@capacitor-community/stripe", - "version": "6.3.0-0", + "version": "6.4.0-0", "engines": { "node": ">=18.0.0" }, From 931e93110c0d380cdb1212e4889b5deb29a3ad3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Wed, 4 Dec 2024 21:05:07 +0900 Subject: [PATCH 38/41] released --- packages/identity/package-lock.json | 4 +- packages/identity/package.json | 2 +- packages/payment/package-lock.json | 4 +- packages/payment/package.json | 2 +- packages/terminal/README.md | 62 ++++++++++++++--------------- packages/terminal/package-lock.json | 4 +- packages/terminal/package.json | 2 +- 7 files changed, 40 insertions(+), 40 deletions(-) diff --git a/packages/identity/package-lock.json b/packages/identity/package-lock.json index 9863abee8..bbd75f036 100644 --- a/packages/identity/package-lock.json +++ b/packages/identity/package-lock.json @@ -1,12 +1,12 @@ { "name": "@capacitor-community/stripe-identity", - "version": "6.2.1", + "version": "6.4.0-0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@capacitor-community/stripe-identity", - "version": "6.2.1", + "version": "6.4.0-0", "license": "MIT", "dependencies": { "@stripe/stripe-js": "^2.1.11" diff --git a/packages/identity/package.json b/packages/identity/package.json index 3bb0ee7d3..7125d7ddb 100644 --- a/packages/identity/package.json +++ b/packages/identity/package.json @@ -1,6 +1,6 @@ { "name": "@capacitor-community/stripe-identity", - "version": "6.2.1", + "version": "6.4.0-0", "engines": { "node": ">=18.0.0" }, diff --git a/packages/payment/package-lock.json b/packages/payment/package-lock.json index f2bd53b0d..a8f7fe119 100644 --- a/packages/payment/package-lock.json +++ b/packages/payment/package-lock.json @@ -1,12 +1,12 @@ { "name": "@capacitor-community/stripe", - "version": "6.2.1", + "version": "6.4.0-0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@capacitor-community/stripe", - "version": "6.2.1", + "version": "6.4.0-0", "license": "MIT", "devDependencies": { "@capacitor/android": "^6.0.0", diff --git a/packages/payment/package.json b/packages/payment/package.json index e8591d5d5..d2af6e5f5 100644 --- a/packages/payment/package.json +++ b/packages/payment/package.json @@ -1,6 +1,6 @@ { "name": "@capacitor-community/stripe", - "version": "6.2.1", + "version": "6.4.0-0", "engines": { "node": ">=18.0.0" }, diff --git a/packages/terminal/README.md b/packages/terminal/README.md index d62865316..54e658261 100644 --- a/packages/terminal/README.md +++ b/packages/terminal/README.md @@ -660,15 +660,15 @@ fails. The Promise returned by the relevant call will also be rejected. ### addListener(TerminalEventsEnum.ReportAvailableUpdate, ...) ```typescript -addListener(eventName: TerminalEventsEnum.ReportAvailableUpdate, listenerFunc: ({ update, }: { update: ReaderSoftwareUpdateInterface; }) => void) => Promise +addListener(eventName: TerminalEventsEnum.ReportAvailableUpdate, listenerFunc: ({ update }: { update: ReaderSoftwareUpdateInterface; }) => void) => Promise ``` Emitted when a software update is available for the connected reader. -| Param | Type | -| ------------------ | ------------------------------------------------------------------------------------------------------------------------------ | -| **`eventName`** | TerminalEventsEnum.ReportAvailableUpdate | -| **`listenerFunc`** | ({ update, }: { update: ReaderSoftwareUpdateInterface; }) => void | +| Param | Type | +| ------------------ | ----------------------------------------------------------------------------------------------------------------------------- | +| **`eventName`** | TerminalEventsEnum.ReportAvailableUpdate | +| **`listenerFunc`** | ({ update }: { update: ReaderSoftwareUpdateInterface; }) => void | **Returns:** Promise<PluginListenerHandle> @@ -678,7 +678,7 @@ Emitted when a software update is available for the connected reader. ### addListener(TerminalEventsEnum.StartInstallingUpdate, ...) ```typescript -addListener(eventName: TerminalEventsEnum.StartInstallingUpdate, listenerFunc: ({ update, }: { update: ReaderSoftwareUpdateInterface; }) => void) => Promise +addListener(eventName: TerminalEventsEnum.StartInstallingUpdate, listenerFunc: ({ update }: { update: ReaderSoftwareUpdateInterface; }) => void) => Promise ``` **Only applicable to Bluetooth and USB readers.** @@ -700,10 +700,10 @@ to explain why connecting is taking longer than usual. [*Stripe docs reference*](https://stripe.dev/stripe-terminal-android/external/com.stripe.stripeterminal.external.callable/-reader-listener/on-start-installing-update.html) -| Param | Type | -| ------------------ | ------------------------------------------------------------------------------------------------------------------------------ | -| **`eventName`** | TerminalEventsEnum.StartInstallingUpdate | -| **`listenerFunc`** | ({ update, }: { update: ReaderSoftwareUpdateInterface; }) => void | +| Param | Type | +| ------------------ | ----------------------------------------------------------------------------------------------------------------------------- | +| **`eventName`** | TerminalEventsEnum.StartInstallingUpdate | +| **`listenerFunc`** | ({ update }: { update: ReaderSoftwareUpdateInterface; }) => void | **Returns:** Promise<PluginListenerHandle> @@ -756,7 +756,7 @@ addListener(eventName: TerminalEventsEnum.FinishInstallingUpdate, listenerFunc: ### addListener(TerminalEventsEnum.BatteryLevel, ...) ```typescript -addListener(eventName: TerminalEventsEnum.BatteryLevel, listenerFunc: ({ level, charging, status, }: { level: number; charging: boolean; status: BatteryStatus; }) => void) => Promise +addListener(eventName: TerminalEventsEnum.BatteryLevel, listenerFunc: ({ level, charging, status }: { level: number; charging: boolean; status: BatteryStatus; }) => void) => Promise ``` **Only applicable to Bluetooth and USB readers.** @@ -765,10 +765,10 @@ Emitted upon connection and every 10 minutes. [*Stripe docs reference*](https://stripe.dev/stripe-terminal-android/external/com.stripe.stripeterminal.external.callable/-reader-listener/on-battery-level-update.html) -| Param | Type | -| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| **`eventName`** | TerminalEventsEnum.BatteryLevel | -| **`listenerFunc`** | ({ level, charging, status, }: { level: number; charging: boolean; status: BatteryStatus; }) => void | +| Param | Type | +| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| **`eventName`** | TerminalEventsEnum.BatteryLevel | +| **`listenerFunc`** | ({ level, charging, status }: { level: number; charging: boolean; status: BatteryStatus; }) => void | **Returns:** Promise<PluginListenerHandle> @@ -798,7 +798,7 @@ addListener(eventName: TerminalEventsEnum.ReaderEvent, listenerFunc: ({ event }: ### addListener(TerminalEventsEnum.RequestDisplayMessage, ...) ```typescript -addListener(eventName: TerminalEventsEnum.RequestDisplayMessage, listenerFunc: ({ messageType, message, }: { messageType: ReaderDisplayMessage; message: string; }) => void) => Promise +addListener(eventName: TerminalEventsEnum.RequestDisplayMessage, listenerFunc: ({ messageType, message }: { messageType: ReaderDisplayMessage; message: string; }) => void) => Promise ``` **Only applicable to Bluetooth and USB readers.** @@ -807,10 +807,10 @@ Emitted when the Terminal requests that a message be displayed in your app. [*Stripe docs reference*](https://stripe.dev/stripe-terminal-android/external/com.stripe.stripeterminal.external.callable/-reader-listener/on-request-reader-display-message.html) -| Param | Type | -| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | -| **`eventName`** | TerminalEventsEnum.RequestDisplayMessage | -| **`listenerFunc`** | ({ messageType, message, }: { messageType: ReaderDisplayMessage; message: string; }) => void | +| Param | Type | +| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | +| **`eventName`** | TerminalEventsEnum.RequestDisplayMessage | +| **`listenerFunc`** | ({ messageType, message }: { messageType: ReaderDisplayMessage; message: string; }) => void | **Returns:** Promise<PluginListenerHandle> @@ -820,7 +820,7 @@ Emitted when the Terminal requests that a message be displayed in your app. ### addListener(TerminalEventsEnum.RequestReaderInput, ...) ```typescript -addListener(eventName: TerminalEventsEnum.RequestReaderInput, listenerFunc: ({ options, message, }: { options: ReaderInputOption[]; message: string; }) => void) => Promise +addListener(eventName: TerminalEventsEnum.RequestReaderInput, listenerFunc: ({ options, message }: { options: ReaderInputOption[]; message: string; }) => void) => Promise ``` **Only applicable to Bluetooth and USB readers.** @@ -831,10 +831,10 @@ the RequestDisplayMessage event will be emitted. [*Stripe docs reference*](https://stripe.dev/stripe-terminal-android/external/com.stripe.stripeterminal.external.callable/-reader-listener/on-request-reader-input.html) -| Param | Type | -| ------------------ | --------------------------------------------------------------------------------------------------- | -| **`eventName`** | TerminalEventsEnum.RequestReaderInput | -| **`listenerFunc`** | ({ options, message, }: { options: ReaderInputOption[]; message: string; }) => void | +| Param | Type | +| ------------------ | -------------------------------------------------------------------------------------------------- | +| **`eventName`** | TerminalEventsEnum.RequestReaderInput | +| **`listenerFunc`** | ({ options, message }: { options: ReaderInputOption[]; message: string; }) => void | **Returns:** Promise<PluginListenerHandle> @@ -862,13 +862,13 @@ addListener(eventName: TerminalEventsEnum.PaymentStatusChange, listenerFunc: ({ ### addListener(TerminalEventsEnum.ReaderReconnectStarted, ...) ```typescript -addListener(eventName: TerminalEventsEnum.ReaderReconnectStarted, listenerFunc: ({ reader, reason, }: { reader: ReaderInterface; reason: string; }) => void) => Promise +addListener(eventName: TerminalEventsEnum.ReaderReconnectStarted, listenerFunc: ({ reader, reason }: { reader: ReaderInterface; reason: string; }) => void) => Promise ``` -| Param | Type | -| ------------------ | -------------------------------------------------------------------------------------------------------------------------- | -| **`eventName`** | TerminalEventsEnum.ReaderReconnectStarted | -| **`listenerFunc`** | ({ reader, reason, }: { reader: ReaderInterface; reason: string; }) => void | +| Param | Type | +| ------------------ | ------------------------------------------------------------------------------------------------------------------------- | +| **`eventName`** | TerminalEventsEnum.ReaderReconnectStarted | +| **`listenerFunc`** | ({ reader, reason }: { reader: ReaderInterface; reason: string; }) => void | **Returns:** Promise<PluginListenerHandle> @@ -922,7 +922,7 @@ addListener(eventName: TerminalEventsEnum.ReaderReconnectFailed, listenerFunc: ( #### ReaderInterface -{ /** * The unique serial number is primary identifier inner plugin. */ serialNumber: string; label: string; batteryLevel: number; batteryStatus: BatteryStatus; simulated: boolean; id: number; availableUpdate: ReaderSoftwareUpdateInterface; locationId: string; ipAddress: string; status: NetworkStatus; location: LocationInterface; locationStatus: LocationStatus; deviceType: DeviceType; deviceSoftwareVersion: string | null; /** * iOS Only properties. These properties are not available on Android. */ isCharging: number; /** * Android Only properties. These properties are not available on iOS. */ baseUrl: string; bootloaderVersion: string; configVersion: string; emvKeyProfileId: string; firmwareVersion: string; hardwareVersion: string; macKeyProfileId: string; pinKeyProfileId: string; trackKeyProfileId: string; settingsVersion: string; pinKeysetId: string; /** * @deprecated This property has been deprecated and should use the `serialNumber` property. */ index?: number; } +{ /** * The unique serial number is primary identifier inner plugin. */ serialNumber: string; label: string; batteryLevel: number; batteryStatus: BatteryStatus; simulated: boolean; id: number; availableUpdate: ReaderSoftwareUpdateInterface; locationId: string; ipAddress: string; status: NetworkStatus; location: LocationInterface; locationStatus: LocationStatus; deviceType: DeviceType; deviceSoftwareVersion: string | null; /** * iOS Only properties. These properties are not available on Android. */ isCharging: number; /** * Android Only properties. These properties are not available on iOS. */ baseUrl: string; bootloaderVersion: string; configVersion: string; emvKeyProfileId: string; firmwareVersion: string; hardwareVersion: string; macKeyProfileId: string; pinKeyProfileId: string; trackKeyProfileId: string; settingsVersion: string; pinKeysetId: string; } #### ReaderSoftwareUpdateInterface diff --git a/packages/terminal/package-lock.json b/packages/terminal/package-lock.json index b6e3426a7..c2cf02915 100644 --- a/packages/terminal/package-lock.json +++ b/packages/terminal/package-lock.json @@ -1,12 +1,12 @@ { "name": "@capacitor-community/stripe-terminal", - "version": "6.2.1", + "version": "6.4.0-0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@capacitor-community/stripe-terminal", - "version": "6.2.1", + "version": "6.4.0-0", "license": "MIT", "dependencies": { "@stripe/terminal-js": "^0.13.0" diff --git a/packages/terminal/package.json b/packages/terminal/package.json index a28d8db8c..3c4e09168 100644 --- a/packages/terminal/package.json +++ b/packages/terminal/package.json @@ -1,6 +1,6 @@ { "name": "@capacitor-community/stripe-terminal", - "version": "6.2.1", + "version": "6.4.0-0", "engines": { "node": ">=18.0.0" }, From dcac5b0dc7904d50a5c8299a4c6d1779a61bc841 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Thu, 5 Dec 2024 09:56:56 +0900 Subject: [PATCH 39/41] feat(): sdk packages updated --- demo/angular/ios/App/Podfile.lock | 84 +++++++++---------- .../CapacitorCommunityStripeIdentity.podspec | 2 +- packages/identity/Package.swift | 2 +- packages/identity/android/build.gradle | 2 +- .../payment/CapacitorCommunityStripe.podspec | 4 +- packages/payment/Package.swift | 2 +- 6 files changed, 48 insertions(+), 48 deletions(-) diff --git a/demo/angular/ios/App/Podfile.lock b/demo/angular/ios/App/Podfile.lock index 80bf3a079..2399b49d0 100644 --- a/demo/angular/ios/App/Podfile.lock +++ b/demo/angular/ios/App/Podfile.lock @@ -1,43 +1,43 @@ PODS: - Capacitor (6.1.2): - CapacitorCordova - - CapacitorCommunityStripe (6.2.1): + - CapacitorCommunityStripe (6.4.0-0): - Capacitor - - StripeApplePay (~> 23.32.0) - - StripePaymentSheet (~> 23.32.0) - - CapacitorCommunityStripeIdentity (6.2.1): + - StripeApplePay (~> 24.1.0) + - StripePaymentSheet (~> 24.1.0) + - CapacitorCommunityStripeIdentity (6.4.0-0): - Capacitor - - StripeIdentity (~> 23.32.0) - - CapacitorCommunityStripeTerminal (6.2.1): + - StripeIdentity (~> 24.1.0) + - CapacitorCommunityStripeTerminal (6.4.0-0): - Capacitor - StripeTerminal (~> 4.1.0) - CapacitorCordova (6.1.2) - - StripeApplePay (23.32.0): - - StripeCore (= 23.32.0) - - StripeCameraCore (23.32.0): - - StripeCore (= 23.32.0) - - StripeCore (23.32.0) - - StripeIdentity (23.32.0): - - StripeCameraCore (= 23.32.0) - - StripeCore (= 23.32.0) - - StripeUICore (= 23.32.0) - - StripePayments (23.32.0): - - StripeCore (= 23.32.0) - - StripePayments/Stripe3DS2 (= 23.32.0) - - StripePayments/Stripe3DS2 (23.32.0): - - StripeCore (= 23.32.0) - - StripePaymentSheet (23.32.0): - - StripeApplePay (= 23.32.0) - - StripeCore (= 23.32.0) - - StripePayments (= 23.32.0) - - StripePaymentsUI (= 23.32.0) - - StripePaymentsUI (23.32.0): - - StripeCore (= 23.32.0) - - StripePayments (= 23.32.0) - - StripeUICore (= 23.32.0) + - StripeApplePay (24.1.1): + - StripeCore (= 24.1.1) + - StripeCameraCore (24.1.1): + - StripeCore (= 24.1.1) + - StripeCore (24.1.1) + - StripeIdentity (24.1.1): + - StripeCameraCore (= 24.1.1) + - StripeCore (= 24.1.1) + - StripeUICore (= 24.1.1) + - StripePayments (24.1.1): + - StripeCore (= 24.1.1) + - StripePayments/Stripe3DS2 (= 24.1.1) + - StripePayments/Stripe3DS2 (24.1.1): + - StripeCore (= 24.1.1) + - StripePaymentSheet (24.1.1): + - StripeApplePay (= 24.1.1) + - StripeCore (= 24.1.1) + - StripePayments (= 24.1.1) + - StripePaymentsUI (= 24.1.1) + - StripePaymentsUI (24.1.1): + - StripeCore (= 24.1.1) + - StripePayments (= 24.1.1) + - StripeUICore (= 24.1.1) - StripeTerminal (4.1.0) - - StripeUICore (23.32.0): - - StripeCore (= 23.32.0) + - StripeUICore (24.1.1): + - StripeCore (= 24.1.1) DEPENDENCIES: - "Capacitor (from `../../node_modules/@capacitor/ios`)" @@ -72,19 +72,19 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: Capacitor: 679f9673fdf30597493a6362a5d5bf233d46abc2 - CapacitorCommunityStripe: 278d037566b213a2faafe55005bc00e28967998f - CapacitorCommunityStripeIdentity: 5478f655a09293240507a65668b5992ce985991a - CapacitorCommunityStripeTerminal: fb0d8fd92ef9ac7c5edd8ac4cbdd5317225ff33a + CapacitorCommunityStripe: 93ace959a7a2795e1eb2c1aaf5ef4674175817aa + CapacitorCommunityStripeIdentity: b8d01ae9887b6a1a168942af45526d8eec37cc0d + CapacitorCommunityStripeTerminal: b699474e785a1ec0a1f24099dbf454a9c264d7cb CapacitorCordova: f48c89f96c319101cd2f0ce8a2b7449b5fb8b3dd - StripeApplePay: fd4aeaa8af1ebbfe5e38390ef7b4607f66494f80 - StripeCameraCore: 2f226573bc1a84deba61ded08e2d3f49b0bd5a7d - StripeCore: 4999b0c234127b28b9e656caa558ba4406ce58b3 - StripeIdentity: 92c91321346fdda5033fcac8ec48b9edab2753c9 - StripePayments: a1260c9fecdb8640462c1fe70c4e2e17df2ab3a8 - StripePaymentSheet: 155d402ee01447002d23c982e905ce06e6d7ef66 - StripePaymentsUI: 2084d4398cb4869b13dd9eac43a00481476b152f + StripeApplePay: 3aa55daa307c3f55b885e24a13380e87cc7c8c87 + StripeCameraCore: fa88de9e322fdf0bdce755573e70bc99613eef84 + StripeCore: 00ade3c22bff1aa803a32c36805ccde8315f57ca + StripeIdentity: fa163cbf51dc6d80f3e94ef827d3c4fa129255b8 + StripePayments: 85a01f84f02ebeb76f179cedc73572d0ace6ecec + StripePaymentSheet: 554aa88117cd837022d611d18cf9fe28c51af22d + StripePaymentsUI: 99c13ac3b2e3c144a0735622523bb8e2b18f5e72 StripeTerminal: e393c25fd8262bd99986785f7ecc91625755d65f - StripeUICore: 2c115cc8498f3badc19b4a41b3b1fdac0ae21d41 + StripeUICore: ac2717acff888b07d32fba5f1a103d360b1074af PODFILE CHECKSUM: c75ca255b97ee461832b20e6cdf6d1da533d4019 diff --git a/packages/identity/CapacitorCommunityStripeIdentity.podspec b/packages/identity/CapacitorCommunityStripeIdentity.podspec index e30d8758b..48b5e6700 100644 --- a/packages/identity/CapacitorCommunityStripeIdentity.podspec +++ b/packages/identity/CapacitorCommunityStripeIdentity.podspec @@ -13,6 +13,6 @@ Pod::Spec.new do |s| s.source_files = 'ios/Sources/**/*.{swift,h,m,c,cc,mm,cpp}' s.ios.deployment_target = '13.0' s.dependency 'Capacitor' - s.dependency 'StripeIdentity', '~> 23.32.0' + s.dependency 'StripeIdentity', '~> 24.1.0' s.swift_version = '5.1' end diff --git a/packages/identity/Package.swift b/packages/identity/Package.swift index a43e5cad6..f8948b425 100644 --- a/packages/identity/Package.swift +++ b/packages/identity/Package.swift @@ -11,7 +11,7 @@ let package = Package( ], dependencies: [ .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "main"), - .package(url: "https://github.com/stripe/stripe-ios-spm.git", exact: "23.32.0") + .package(url: "https://github.com/stripe/stripe-ios-spm.git", exact: "24.1.0") ], targets: [ .target( diff --git a/packages/identity/android/build.gradle b/packages/identity/android/build.gradle index b361484d4..6098bd8fb 100644 --- a/packages/identity/android/build.gradle +++ b/packages/identity/android/build.gradle @@ -5,7 +5,7 @@ ext { androidxEspressoCoreVersion = project.hasProperty('androidxEspressoCoreVersion') ? rootProject.ext.androidxEspressoCoreVersion : '3.5.1' playServicesWalletVersion = project.hasProperty('playServicesWalletVersion') ? rootProject.ext.playServicesWalletVersion : '19.2.+' - identityVersion = project.hasProperty('identityVersion') ? rootProject.ext.identityVersion : '20.52.+' + identityVersion = project.hasProperty('identityVersion') ? rootProject.ext.identityVersion : '21.2.+' } buildscript { diff --git a/packages/payment/CapacitorCommunityStripe.podspec b/packages/payment/CapacitorCommunityStripe.podspec index 96d29741f..e379212f5 100644 --- a/packages/payment/CapacitorCommunityStripe.podspec +++ b/packages/payment/CapacitorCommunityStripe.podspec @@ -13,7 +13,7 @@ Pod::Spec.new do |s| s.source_files = 'ios/Sources/**/*.{swift,h,m,c,cc,mm,cpp}' s.ios.deployment_target = '13.0' s.dependency 'Capacitor' - s.dependency 'StripePaymentSheet', '~> 23.32.0' - s.dependency 'StripeApplePay', '~> 23.32.0' + s.dependency 'StripePaymentSheet', '~> 24.1.0' + s.dependency 'StripeApplePay', '~> 24.1.0' s.swift_version = '5.1' end diff --git a/packages/payment/Package.swift b/packages/payment/Package.swift index 67b4e07d2..f545d6edd 100644 --- a/packages/payment/Package.swift +++ b/packages/payment/Package.swift @@ -11,7 +11,7 @@ let package = Package( ], dependencies: [ .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "main"), - .package(url: "https://github.com/stripe/stripe-ios-spm.git", exact: "23.32.0") + .package(url: "https://github.com/stripe/stripe-ios-spm.git", exact: "24.1.0") ], targets: [ .target( From 5ca9519a690eedf704737a66b5067e3c029294e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Thu, 5 Dec 2024 10:04:41 +0900 Subject: [PATCH 40/41] chore(terminal): update readme for ios target --- packages/terminal/README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/terminal/README.md b/packages/terminal/README.md index 54e658261..baef5e64e 100644 --- a/packages/terminal/README.md +++ b/packages/terminal/README.md @@ -18,7 +18,18 @@ __Note: Stripe Web SDK is beta version. So this plugin's implement is experiment ### iOS -- [iOS Configure your app](https://stripe.com/docs/terminal/payments/setup-integration?terminal-sdk-platform=ios#configure) +Stripe Terminal require development target 14.0 or later. Change Podfile( `ios/App/Podfile` ) like below: + +```diff + require_relative '../../node_modules/@capacitor/ios/scripts/pods_helpers' + +- platform :ios, '13.0' ++ platform :ios, '14.0' +``` + +Follow Stripe's documentation for other configuration items. + +- [Stripe - iOS Configure your app](https://stripe.com/docs/terminal/payments/setup-integration?terminal-sdk-platform=ios#configure) ### Android From 9086a223a84400d8722bd6234f532df898d139f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A6=8A=E5=8E=9F=E6=98=8C=E5=BD=A6?= Date: Thu, 5 Dec 2024 10:07:41 +0900 Subject: [PATCH 41/41] chore(): remove next tag --- release.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release.js b/release.js index f1424c41d..52c4f21d6 100644 --- a/release.js +++ b/release.js @@ -8,7 +8,7 @@ const workspaces = ['packages/payment', 'packages/identity', 'packages/terminal' workspaces.forEach(async (workspace) => { const releasePackagePath = path.resolve('./' + workspace); await updatePackage(releasePackagePath + '/package.json', { version: pkg.version }); - exec(`cd ${releasePackagePath} && npm install && npm run build && npm publish --tag next`, (err, stdout, stderr) => { + exec(`cd ${releasePackagePath} && npm install && npm run build && npm publish`, (err, stdout, stderr) => { if (err) { console.error(err); return;