From a100a81acdf669b75333e1bbc97f0011b9745b9d Mon Sep 17 00:00:00 2001 From: Hugo Pointcheval Date: Wed, 3 May 2023 15:45:05 +0200 Subject: [PATCH 1/4] feat(app): upgrade app template --- .../starting_template/.env.example | 0 .../starting_template/README.md | 77 +- .../starting_template/analysis_options.yaml | 4 +- .../starting_template/automation/build.yml | 4 +- .../automation/generator.yml | 7 - .../starting_template/automation/run.yml | 33 +- .../starting_template/config.json | 8 + .../starting_template/lib/bootstrap.dart | 5 +- .../lib/core/constants/emulator.dart | 12 +- .../lib/core/dependency_injection/get_it.dart | 40 +- .../lib/core/enums/build_mode.dart | 31 + .../lib/core/enums/dev_mode.dart | 9 +- .../lib/core/enums/page_protection.dart | 26 + .../core/extensions/go_route_extension.dart | 53 + .../lib/core/flavors/flavor.dart | 62 +- .../core/routes/go_router_refresh_stream.dart | 40 + .../lib/core/routes/router.dart | 65 +- .../lib/core/utils/firebase_emulator.dart | 61 + .../data/models/integer_model.freezed.dart | 5 - .../starting_template/lib/gen/assets.gen.dart | 13 +- .../starting_template/lib/gen/colors.gen.dart | 2 +- .../lib/main_development.dart | 2 +- .../lib/main_production.dart | 2 +- .../starting_template/lib/main_staging.dart | 2 +- .../lib/presentation/features/app/app.dart | 74 +- .../shared/widgets/flavor_banner.dart | 73 + .../starting_template/package-lock.json | 6524 ----------------- .../starting_template/package.json | 5 - .../starting_template/pubspec.yaml | 118 +- .../starting_template/trapeze.yaml | 36 - 30 files changed, 546 insertions(+), 6847 deletions(-) delete mode 100644 apps/wyatt_app_template/starting_template/.env.example create mode 100644 apps/wyatt_app_template/starting_template/config.json create mode 100644 apps/wyatt_app_template/starting_template/lib/core/enums/build_mode.dart create mode 100644 apps/wyatt_app_template/starting_template/lib/core/enums/page_protection.dart create mode 100644 apps/wyatt_app_template/starting_template/lib/core/extensions/go_route_extension.dart create mode 100644 apps/wyatt_app_template/starting_template/lib/core/routes/go_router_refresh_stream.dart create mode 100644 apps/wyatt_app_template/starting_template/lib/core/utils/firebase_emulator.dart create mode 100644 apps/wyatt_app_template/starting_template/lib/presentation/shared/widgets/flavor_banner.dart delete mode 100644 apps/wyatt_app_template/starting_template/package-lock.json delete mode 100644 apps/wyatt_app_template/starting_template/package.json delete mode 100644 apps/wyatt_app_template/starting_template/trapeze.yaml diff --git a/apps/wyatt_app_template/starting_template/.env.example b/apps/wyatt_app_template/starting_template/.env.example deleted file mode 100644 index e69de29..0000000 diff --git a/apps/wyatt_app_template/starting_template/README.md b/apps/wyatt_app_template/starting_template/README.md index 971d825..334a6ea 100644 --- a/apps/wyatt_app_template/starting_template/README.md +++ b/apps/wyatt_app_template/starting_template/README.md @@ -6,54 +6,55 @@ A short project description * Flutter * Taskfile -* Trapeze (with `npm install` thanks to `package.json`) ### Configuration -Create `.env` file with +At the build time, the app will read the environment variables from `config.json` file. -```sh -cp .env.example .env +The important variable is `DEV_MODE` which can be `mock` , `local` or `real` . + +```json +{ + "DEV_MODE": "local" +} ``` +> **Note** `local` can refer to a local server or a local emulator. + ### Taskfile Available tasks: -| Command | Description | Aliases | -|----|-----|-----| -| `clean` | Cleans the environment.| `cl` | -| `format` |Formats the code.| `fmt` | -| `help` |Help dialog.| `h, default` | -| `lint` |Lints the code.| `l` | -| `start-emulators` | Start needed emulators.| `emu` | -| `build:android` | Building Android APK| `build:a` | -| `build:ios` | Building iOS IPA| `build:i` | -| `gen:build` | Running build runner| `gen:b` | -| `gen:build-delete` |Running build runner with deletion of conflicting outputs| `gen:d` | -| `gen:clean` | Cleaning build runner| `gen:c` | -| `gen:intl` |Generating internationalization file| `gen:i` | -| `gen:trapeze` | Running Trapeze config| `gen:t` | -| `gen:watch` | Running build runner in watch mode| `gen:w` | -| `pub:get` | Getting latest dependencies| `pub:g` | -| `pub:outdated` |Checking for outdated dependencies| `pub:o` | -| `pub:upgrade` | Upgrading dependencies| `pub:u` | -| `pub:upgrade-major` | Upgrading dependencies| `pub:um` | -| `pub:validate` |Running dependency validator| `pub:v` | -| `run:dev` | Run app in development environment| `run:d` | -| `run:emu` | Run app in development with emulated environment| `run:e` | -| `run:logs` |Show log output for running Flutter apps| `run:l` | -| `run:mock` |Run app in development environment with mocks| `run:m` | -| `run:prod` |Run app in production environment| `run:p` | -| `run:release` | Run app in production environment and in release mode| `run:r` | -| `run:staging` | Run app in staging environment| `run:s` | +| Commande | Description | Alias | +| --- | --- | --- | +| clean | Nettoie l'environnement de travail | cl | +| format | Formate le code | fmt | +| help | Affiche la boîte de dialogue d'aide | h, default | +| lint | Vérifie la qualité du code | l | +| start-emulators | Démarre les émulateurs nécessaires | emu | +| build:android | Construit le fichier APK pour Android | build:a | +| build:ios | Construit le fichier IPA pour iOS | build:i | +| gen:build | Exécute le générateur de build | gen:b | +| gen:build-delete | Exécute le générateur de build et supprime les sorties en conflit | gen:d | +| gen:clean | Nettoie le générateur de build | gen:c | +| gen:intl | Génère un fichier d'internationalisation | gen:i | +| gen:watch | Exécute le générateur de build en mode surveillance | gen:w | +| pub:get | Obtient les dernières dépendances | pub:g | +| pub:outdated | Vérifie les dépendances obsolètes | pub:o | +| pub:upgrade | Met à jour les dépendances | pub:u | +| pub:upgrade-major | Met à jour les dépendances majeures | pub:um | +| pub:validate | Exécute le validateur de dépendances | pub:v | +| run:dev | Lance l'application en environnement de développement | run:d | +| run:logs | Affiche la sortie de journalisation pour les applications Flutter en cours d'exécution | run:l | +| run:prod | Lance l'application en environnement de production | run:p | +| run:staging | Lance l'application en environnement de pré-production | run:s | -### Flavors +### Parameters -| Flavor | Details | -|-------|--------| -| Development | Use `--dart-define="dev_mode="` to choose between `mock` , `emulator` and `real` | -| Staging | With a green banner. Only `real` mode available (remote data sources) | -| Production | Only `real` mode available (remote data sources) | +You can pass flutter options to the build and run commands. -> In `lib/core/flavors/flavor.dart` you can customize flavors. +```sh +task run:staging -- -d chrome +``` + +> **Note** The `--` is required to pass options to the command. diff --git a/apps/wyatt_app_template/starting_template/analysis_options.yaml b/apps/wyatt_app_template/starting_template/analysis_options.yaml index 6b75b4c..96780ca 100644 --- a/apps/wyatt_app_template/starting_template/analysis_options.yaml +++ b/apps/wyatt_app_template/starting_template/analysis_options.yaml @@ -11,8 +11,8 @@ dart_code_metrics: metrics: cyclomatic-complexity: 20 maximum-nesting-level: 5 - number-of-parameters: 4 - source-lines-of-code: 50 + number-of-parameters: 5 + source-lines-of-code: 250 metrics-exclude: - test/** rules: diff --git a/apps/wyatt_app_template/starting_template/automation/build.yml b/apps/wyatt_app_template/starting_template/automation/build.yml index 7dbc051..21e22ca 100644 --- a/apps/wyatt_app_template/starting_template/automation/build.yml +++ b/apps/wyatt_app_template/starting_template/automation/build.yml @@ -27,7 +27,7 @@ tasks: aliases: [a] cmds: - echo -e "{{.GREEN}}{{.PREFIX}} Building Android APK...{{.COLOROFF}}" - - flutter build lib/main_production apk --no-pub --no-shrink + - flutter build apk --target=lib/main_production --no-pub --no-shrink ios: desc: Building iOS IPA @@ -35,4 +35,4 @@ tasks: aliases: [i] cmds: - echo -e "{{.GREEN}}{{.PREFIX}} Building iOS IPA...{{.COLOROFF}}" - - flutter build lib/main_production ipa --no-pub \ No newline at end of file + - flutter build ipa --target=lib/main_production --no-pub diff --git a/apps/wyatt_app_template/starting_template/automation/generator.yml b/apps/wyatt_app_template/starting_template/automation/generator.yml index 33cd1ea..6c86a1a 100644 --- a/apps/wyatt_app_template/starting_template/automation/generator.yml +++ b/apps/wyatt_app_template/starting_template/automation/generator.yml @@ -54,10 +54,3 @@ tasks: cmds: - echo -e "{{.GREEN}}{{.PREFIX}} Running build runner in watch mode...{{.COLOROFF}}" - flutter pub run build_runner watch - - trapeze: - desc: Running Trapeze config - aliases: [t] - cmds: - - echo -e "{{.GREEN}}{{.PREFIX}} Running Trapeze config...{{.COLOROFF}}" - - npx trapeze run trapeze.yaml --android-project android --ios-project ios diff --git a/apps/wyatt_app_template/starting_template/automation/run.yml b/apps/wyatt_app_template/starting_template/automation/run.yml index 3b1eb77..0ddc9c4 100644 --- a/apps/wyatt_app_template/starting_template/automation/run.yml +++ b/apps/wyatt_app_template/starting_template/automation/run.yml @@ -16,44 +16,23 @@ tasks: - echo -e "{{.GREEN}}{{.PREFIX}} Showing log output for running Flutter apps...{{.COLOROFF}}" - flutter logs - mock: - desc: Run app in development environment with mocks - aliases: [m] - cmds: - - echo -e "{{.GREEN}}{{.PREFIX}} Running the app (development/debug:mocks)...{{.COLOROFF}}" - - flutter run --target lib/main_development.dart --dart-define="dev_mode=mock" - - emu: - desc: Run app in development with emulated environment - aliases: [e] - cmds: - - echo -e "{{.GREEN}}{{.PREFIX}} Running the app (development/debug:emulator)...{{.COLOROFF}}" - - flutter run --target lib/main_development.dart --dart-define="dev_mode=emulator" - dev: desc: Run app in development environment aliases: [d] cmds: - - echo -e "{{.GREEN}}{{.PREFIX}} Running the app (development/debug:real)...{{.COLOROFF}}" - - flutter run --target lib/main_development.dart --dart-define="dev_mode=real" + - echo -e "{{.GREEN}}{{.PREFIX}} Running the app (development)...{{.COLOROFF}}" + - flutter run --target lib/main_development.dart --dart-define-from-file=config.json {{.CLI_ARGS}} staging: desc: Run app in staging environment aliases: [s] cmds: - - echo -e "{{.GREEN}}{{.PREFIX}} Running the app (staging/debug)...{{.COLOROFF}}" - - flutter run --target lib/main_staging.dart + - echo -e "{{.GREEN}}{{.PREFIX}} Running the app (staging)...{{.COLOROFF}}" + - flutter run --target lib/main_staging.dart --dart-define-from-file=config.json {{.CLI_ARGS}} prod: desc: Run app in production environment aliases: [p] cmds: - - echo -e "{{.GREEN}}{{.PREFIX}} Running the app (production/debug)...{{.COLOROFF}}" - - flutter run --target lib/main_production.dart - - release: - desc: Run app in production environment and in release mode - aliases: [r] - cmds: - - echo -e "{{.GREEN}}{{.PREFIX}} Running the app (production/release)...{{.COLOROFF}}" - - flutter run --target lib/main_production.dart --release + - echo -e "{{.GREEN}}{{.PREFIX}} Running the app (production)...{{.COLOROFF}}" + - flutter run --target lib/main_production.dart --dart-define-from-file=config.json {{.CLI_ARGS}} diff --git a/apps/wyatt_app_template/starting_template/config.json b/apps/wyatt_app_template/starting_template/config.json new file mode 100644 index 0000000..356801b --- /dev/null +++ b/apps/wyatt_app_template/starting_template/config.json @@ -0,0 +1,8 @@ +{ + "FIREBASE_EMULATOR_CLOUD_FUNCTION_PORT": 5001, + "FIREBASE_EMULATOR_FIRESTORE_PORT": 8080, + "FIREBASE_EMULATOR_AUTH_PORT": 9099, + "FIREBASE_EMULATOR_STORAGE_PORT": 919911, + "FIREBASE_EMULATOR_HOST": "localhost", + "DEV_MODE": "local" +} diff --git a/apps/wyatt_app_template/starting_template/lib/bootstrap.dart b/apps/wyatt_app_template/starting_template/lib/bootstrap.dart index d709aee..e8a35ff 100644 --- a/apps/wyatt_app_template/starting_template/lib/bootstrap.dart +++ b/apps/wyatt_app_template/starting_template/lib/bootstrap.dart @@ -7,12 +7,11 @@ import 'package:starting_template/core/flavors/flavor.dart'; import 'package:starting_template/core/utils/app_bloc_observer.dart'; Future bootstrap(FutureOr Function() builder) async { - final widgetsBinding = WidgetsFlutterBinding.ensureInitialized(); - // FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding); + WidgetsFlutterBinding.ensureInitialized(); Bloc.observer = AppBlocObserver(); - debugPrint('Flavor: ${Flavor.get()}'); + debugPrint('${Flavor.instance}'); await GetItInitializer.init(); diff --git a/apps/wyatt_app_template/starting_template/lib/core/constants/emulator.dart b/apps/wyatt_app_template/starting_template/lib/core/constants/emulator.dart index 00258ff..0097c95 100644 --- a/apps/wyatt_app_template/starting_template/lib/core/constants/emulator.dart +++ b/apps/wyatt_app_template/starting_template/lib/core/constants/emulator.dart @@ -1,14 +1,14 @@ /// Firebase Emulator constants. -/// +/// /// If you don't use Firebase, it can be safely deleted. abstract class Emulator { static const String firebaseCloudFunctionEnvKey = - 'EMULATOR_FIREBASE_CLOUD_FUNCTION_PORT'; + 'FIREBASE_EMULATOR_CLOUD_FUNCTION_PORT'; static const String firebaseFirestoreEnvKey = - 'EMULATOR_FIREBASE_FIRESTORE_PORT'; - static const String firebaseAuthEnvKey = 'EMULATOR_FIREBASE_AUTH_PORT'; - static const String firebaseStorageEnvKey = 'EMULATOR_FIREBASE_STORAGE_PORT'; - static const String hostEnvKey = 'EMULATOR_HOST'; + 'FIREBASE_EMULATOR_FIRESTORE_PORT'; + static const String firebaseAuthEnvKey = 'FIREBASE_EMULATOR_AUTH_PORT'; + static const String firebaseStorageEnvKey = 'FIREBASE_EMULATOR_STORAGE_PORT'; + static const String hostEnvKey = 'FIREBASE_EMULATOR_HOST'; static const int defaultFirebaseCloudFunctionPort = 5001; static const int defaultFirebaseFirestorePort = 8080; diff --git a/apps/wyatt_app_template/starting_template/lib/core/dependency_injection/get_it.dart b/apps/wyatt_app_template/starting_template/lib/core/dependency_injection/get_it.dart index 9541bce..ea82681 100644 --- a/apps/wyatt_app_template/starting_template/lib/core/dependency_injection/get_it.dart +++ b/apps/wyatt_app_template/starting_template/lib/core/dependency_injection/get_it.dart @@ -1,38 +1,50 @@ import 'dart:async'; +import 'package:flutter/foundation.dart'; import 'package:get_it/get_it.dart'; import 'package:starting_template/core/enums/dev_mode.dart'; import 'package:starting_template/core/flavors/flavor.dart'; -import 'package:starting_template/data/data_sources/local/counter_data_source_impl.dart'; -import 'package:starting_template/domain/data_sources/local/counter_data_source.dart'; +import 'package:starting_template/core/utils/firebase_emulator.dart'; final getIt = GetIt.I; /// Service and Data Source locator abstract class GetItInitializer { static FutureOr _initCommon() async { - // Initialize common sources/services - getIt.registerLazySingleton( - CounterDataSourceImpl.new, - ); + // TODO(wyatt): Initialize common sources/services } - static FutureOr _initMocks() async { - // Initialize mocked sources/services. + static FutureOr _initMock() async { + // TODO(wyatt): Initialize mocked sources/services. + } + + static FutureOr _initLocal() async { + // TODO(wyatt): Initialize local sources/services. + final emulator = FirebaseEmulator.fromEnv(); + debugPrint('Firebase Emulator: $emulator'); } static FutureOr _initReal() async { - // Initialize real sources/services + // TODO(wyatt): Initialize real sources/services } static FutureOr init() async { + // Initialize common sources/services await _initCommon(); - final flavor = Flavor.get(); - if (flavor.devMode == DevMode.mock) { - await _initMocks(); - } else { - await _initReal(); + // Initialize sources/services based on flavor + switch (Flavor.instance.devMode) { + case DevMode.mock: + await _initMock(); + break; + case DevMode.local: + await _initLocal(); + break; + case DevMode.real: + await _initReal(); + break; + case null: + throw Exception('DevMode not initialized!'); } await getIt.allReady(); diff --git a/apps/wyatt_app_template/starting_template/lib/core/enums/build_mode.dart b/apps/wyatt_app_template/starting_template/lib/core/enums/build_mode.dart new file mode 100644 index 0000000..0aa4421 --- /dev/null +++ b/apps/wyatt_app_template/starting_template/lib/core/enums/build_mode.dart @@ -0,0 +1,31 @@ +enum BuildMode { + /// Debug build mode. Pass `--debug` to `flutter run` or `flutter build` to + /// use this mode. + debug, + + /// Release build mode. Pass `--profile` to `flutter run` or `flutter build` + /// to use this mode. + profile, + + /// Release build mode. Pass `--release` to `flutter run` or `flutter build` + /// to use this mode. + release; + + @override + String toString() => name; + + /// Tries to parse String and returns mode. Fallback is returned if there + /// is an error during parsing. + static BuildMode fromString( + String? mode, { + BuildMode fallback = BuildMode.debug, + }) { + for (final m in values) { + if (m.name == mode) { + return m; + } + } + + return fallback; + } +} diff --git a/apps/wyatt_app_template/starting_template/lib/core/enums/dev_mode.dart b/apps/wyatt_app_template/starting_template/lib/core/enums/dev_mode.dart index bd4ad84..3a628f9 100644 --- a/apps/wyatt_app_template/starting_template/lib/core/enums/dev_mode.dart +++ b/apps/wyatt_app_template/starting_template/lib/core/enums/dev_mode.dart @@ -1,12 +1,17 @@ enum DevMode { + /// Mocked data sources and services mock, - emulator, + + /// Local data sources and services, like local database, or firebase emulator + local, + + /// Real data sources and services, like firebase or other cloud services real; @override String toString() => name; - /// Tries to parse String and returns mode. Fallback is returned if there + /// Tries to parse String and returns mode. Fallback is returned if there /// is an error during parsing. static DevMode fromString(String? mode, {DevMode fallback = DevMode.mock}) { for (final m in values) { diff --git a/apps/wyatt_app_template/starting_template/lib/core/enums/page_protection.dart b/apps/wyatt_app_template/starting_template/lib/core/enums/page_protection.dart new file mode 100644 index 0000000..63a846d --- /dev/null +++ b/apps/wyatt_app_template/starting_template/lib/core/enums/page_protection.dart @@ -0,0 +1,26 @@ +// Copyright (C) 2023 WYATT GROUP +// Please see the AUTHORS file for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +enum PageProtection { + /// The page can be accessed without authentication. + public, + + /// The page can only be accessed with authentication. + protected, + + /// The page protection is unknown, and the default one should be used. + none, +} diff --git a/apps/wyatt_app_template/starting_template/lib/core/extensions/go_route_extension.dart b/apps/wyatt_app_template/starting_template/lib/core/extensions/go_route_extension.dart new file mode 100644 index 0000000..b5ec8f3 --- /dev/null +++ b/apps/wyatt_app_template/starting_template/lib/core/extensions/go_route_extension.dart @@ -0,0 +1,53 @@ +// Copyright (C) 2023 WYATT GROUP +// Please see the AUTHORS file for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +import 'package:go_router/go_router.dart'; +import 'package:starting_template/core/enums/page_protection.dart'; + +/// Defines if a GoRoute is public or not. +/// +/// By default, all routes are in the [PageProtection.none] state. +extension GoRouteGuard on GoRoute { + static final _guard = Expando(); + + /// Returns `true` if the route is public. + bool get isPublic => _guard[this] == PageProtection.public; + + /// Returns `true` if the route is protected. + bool get isProtected => _guard[this] == PageProtection.protected; + + /// Returns `true` if the route is neither public nor protected. + /// This is the default state. + bool get isNone => _guard[this] == PageProtection.none; + + /// Sets the route to be public. + /// This is useful for routes that should be accessible + /// without authentication. + /// ```dart + /// GoRoute( + /// path: '/sign_in', + /// ... + /// )..setPublic(), + /// ``` + void setPublic() => _guard[this] = PageProtection.public; + + /// Sets the route to be protected. + /// This is useful for routes that should only be accessible + /// with authentication. + void setProtected() => _guard[this] = PageProtection.protected; + + PageProtection get guard => _guard[this] ?? PageProtection.none; +} diff --git a/apps/wyatt_app_template/starting_template/lib/core/flavors/flavor.dart b/apps/wyatt_app_template/starting_template/lib/core/flavors/flavor.dart index 6041145..0207819 100644 --- a/apps/wyatt_app_template/starting_template/lib/core/flavors/flavor.dart +++ b/apps/wyatt_app_template/starting_template/lib/core/flavors/flavor.dart @@ -1,23 +1,38 @@ +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:starting_template/core/enums/build_mode.dart'; import 'package:starting_template/core/enums/dev_mode.dart'; -abstract class Flavor { +class Flavor { Flavor._({ - this.banner, - this.bannerColor = Colors.red, - this.devMode, + this.flavorName, + this.bannerColor, }) { + // Determine build mode + buildMode = kReleaseMode + ? BuildMode.release + : kProfileMode + ? BuildMode.profile + : BuildMode.debug; + + // Retrieve dev mode, fallback to mock + devMode = DevMode.fromString( + const String.fromEnvironment('DEV_MODE', defaultValue: 'mock'), + ); + _instance = this; } static Flavor? _instance; - final String? banner; - final Color bannerColor; - final DevMode? devMode; + final String? flavorName; + final Color? bannerColor; + + late final DevMode? devMode; + late final BuildMode? buildMode; /// Returns [Flavor] instance. - static Flavor get() { + static Flavor get instance { if (_instance == null) { throw Exception('Flavor not initialized!'); } @@ -25,33 +40,26 @@ abstract class Flavor { return _instance!; } + String get name => flavorName ?? 'Unknown'; + Color get color => bannerColor ?? Colors.grey; + + static bool shouldShowBanner() => instance.buildMode != BuildMode.release; + @override - String toString() => runtimeType.toString().replaceAll('Flavor', ''); + String toString() => + 'Flavor: $flavorName, DevMode: $devMode, BuildMode: $buildMode'; } class DevelopmentFlavor extends Flavor { - factory DevelopmentFlavor() { - const modeString = String.fromEnvironment('dev_mode', defaultValue: 'mock'); - final mode = DevMode.fromString(modeString); - - return DevelopmentFlavor._(devMode: mode); - } - DevelopmentFlavor._({ - required DevMode devMode, - }) : super._( - banner: 'Dev', - devMode: devMode, - ); + DevelopmentFlavor() + : super._(flavorName: 'Development', bannerColor: Colors.red); } class StagingFlavor extends Flavor { - StagingFlavor() - : super._( - banner: 'Staging', - bannerColor: Colors.green, - ); + StagingFlavor() : super._(flavorName: 'Staging', bannerColor: Colors.orange); } class ProductionFlavor extends Flavor { - ProductionFlavor() : super._(); + ProductionFlavor() + : super._(flavorName: 'Production', bannerColor: Colors.green); } diff --git a/apps/wyatt_app_template/starting_template/lib/core/routes/go_router_refresh_stream.dart b/apps/wyatt_app_template/starting_template/lib/core/routes/go_router_refresh_stream.dart new file mode 100644 index 0000000..b37ca83 --- /dev/null +++ b/apps/wyatt_app_template/starting_template/lib/core/routes/go_router_refresh_stream.dart @@ -0,0 +1,40 @@ +// Copyright (C) 2023 WYATT GROUP +// Please see the AUTHORS file for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +import 'dart:async'; + +import 'package:flutter/foundation.dart'; + +/// {@template go_router_refresh_stream} +/// A [ChangeNotifier] that notifies its listeners when a stream emits a value. +/// {@endtemplate} +class GoRouterRefreshStream extends ChangeNotifier { + /// {@macro go_router_refresh_stream} + GoRouterRefreshStream(Stream stream) { + notifyListeners(); + _subscription = stream.asBroadcastStream().listen( + (dynamic _) => notifyListeners(), + ); + } + + late final StreamSubscription _subscription; + + @override + void dispose() { + _subscription.cancel(); + super.dispose(); + } +} diff --git a/apps/wyatt_app_template/starting_template/lib/core/routes/router.dart b/apps/wyatt_app_template/starting_template/lib/core/routes/router.dart index b652dc6..da9eada 100644 --- a/apps/wyatt_app_template/starting_template/lib/core/routes/router.dart +++ b/apps/wyatt_app_template/starting_template/lib/core/routes/router.dart @@ -1,6 +1,8 @@ import 'package:flutter/cupertino.dart'; import 'package:go_router/go_router.dart'; -import 'package:starting_template/presentation/features/counter/counter.dart'; +import 'package:starting_template/core/enums/page_protection.dart'; +import 'package:starting_template/core/extensions/go_route_extension.dart'; +import 'package:starting_template/core/routes/go_router_refresh_stream.dart'; import 'package:starting_template/presentation/features/home/home.dart'; abstract class AppRouter { @@ -10,10 +12,7 @@ abstract class AppRouter { GoRouterState state, Widget child, ) => - CupertinoPage( - key: state.pageKey, - child: child, - ); + CupertinoPage(key: state.pageKey, child: child); /// Disable transition animation static Page noTransition( @@ -21,23 +20,7 @@ abstract class AppRouter { GoRouterState state, Widget child, ) => - CustomTransitionPage( - key: state.pageKey, - transitionsBuilder: (_, __, ___, child) => child, - child: child, - ); - - /// Defines public routes (no authentication needed). - /// - /// Example: - /// ```dart - /// static final publicRoutes = [ - /// '/', - /// '/sign_in', - /// '/sign_up', - /// ]; - /// ``` - static final List publicRoutes = []; + NoTransitionPage(key: state.pageKey, child: child); /// Defines GoRoute routes. static final List routes = [ @@ -46,20 +29,32 @@ abstract class AppRouter { name: Home.pageName, pageBuilder: (context, state) => defaultTransition(context, state, const Home()), - ), - GoRoute( - path: '/counter', - name: Counter.pageName, - pageBuilder: (context, state) => - defaultTransition(context, state, const Counter()), - ), + )..setPublic(), ]; /// Router - static GoRouter router = GoRouter( - initialLocation: '/', - routes: AppRouter.routes, - debugLogDiagnostics: true, - redirect: (context, state) => null, - ); + static GoRouter routerOf(BuildContext context) => GoRouter( + initialLocation: '/', + routes: AppRouter.routes, + debugLogDiagnostics: true, + // TODO(wyatt): Add authentication logic + redirect: (context, state) { + /// Define the default guard + /// This is the guard that will be used if the route + /// does not have a guard set. (It is set to [PageProtection.none]) + const defaultGuard = PageProtection.protected; + + // Compute current route + // Compute current route + final currentRoute = AppRouter.routes.firstWhere( + (route) => route.path == state.location, + ); + + // Get the guard of the current route + final guard = currentRoute.guard; + + return null; + }, + refreshListenable: GoRouterRefreshStream(const Stream.empty()), + ); } diff --git a/apps/wyatt_app_template/starting_template/lib/core/utils/firebase_emulator.dart b/apps/wyatt_app_template/starting_template/lib/core/utils/firebase_emulator.dart new file mode 100644 index 0000000..9b9f828 --- /dev/null +++ b/apps/wyatt_app_template/starting_template/lib/core/utils/firebase_emulator.dart @@ -0,0 +1,61 @@ +// Copyright (C) 2023 WYATT GROUP +// Please see the AUTHORS file for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +import 'package:starting_template/core/constants/emulator.dart'; + +class FirebaseEmulator { + const FirebaseEmulator._({ + required this.cloudFunctionPort, + required this.firestorePort, + required this.authPort, + required this.storagePort, + required this.host, + }); + + factory FirebaseEmulator.fromEnv() => const FirebaseEmulator._( + cloudFunctionPort: int.fromEnvironment( + Emulator.firebaseCloudFunctionEnvKey, + defaultValue: Emulator.defaultFirebaseCloudFunctionPort, + ), + firestorePort: int.fromEnvironment( + Emulator.firebaseFirestoreEnvKey, + defaultValue: Emulator.defaultFirebaseFirestorePort, + ), + authPort: int.fromEnvironment( + Emulator.firebaseAuthEnvKey, + defaultValue: Emulator.defaultFirebaseAuthPort, + ), + storagePort: int.fromEnvironment( + Emulator.firebaseStorageEnvKey, + defaultValue: Emulator.defaultFirebaseStoragePort, + ), + host: String.fromEnvironment( + Emulator.hostEnvKey, + defaultValue: Emulator.defaultHost, + ), + ); + + final int cloudFunctionPort; + final int firestorePort; + final int authPort; + final int storagePort; + final String host; + + @override + String toString() => 'FirebaseEmulator(cloudFunctionPort: ' + '$cloudFunctionPort, firestorePort: $firestorePort, authPort: $authPort, ' + 'storagePort: $storagePort, host: $host)'; +} diff --git a/apps/wyatt_app_template/starting_template/lib/data/models/integer_model.freezed.dart b/apps/wyatt_app_template/starting_template/lib/data/models/integer_model.freezed.dart index bed9972..2fbb008 100644 --- a/apps/wyatt_app_template/starting_template/lib/data/models/integer_model.freezed.dart +++ b/apps/wyatt_app_template/starting_template/lib/data/models/integer_model.freezed.dart @@ -105,11 +105,6 @@ class _$_IntegerModel implements _IntegerModel { @override final int value; - @override - String toString() { - return 'IntegerModel(value: $value)'; - } - @override bool operator ==(dynamic other) { return identical(this, other) || diff --git a/apps/wyatt_app_template/starting_template/lib/gen/assets.gen.dart b/apps/wyatt_app_template/starting_template/lib/gen/assets.gen.dart index 3deea52..2bc44eb 100644 --- a/apps/wyatt_app_template/starting_template/lib/gen/assets.gen.dart +++ b/apps/wyatt_app_template/starting_template/lib/gen/assets.gen.dart @@ -5,7 +5,7 @@ // coverage:ignore-file // ignore_for_file: type=lint -// ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal +// ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal,deprecated_member_use import 'package:flutter/widgets.dart'; @@ -84,7 +84,16 @@ class AssetGenImage { ); } - ImageProvider provider() => AssetImage(_assetName); + ImageProvider provider({ + AssetBundle? bundle, + String? package, + }) { + return AssetImage( + _assetName, + bundle: bundle, + package: package, + ); + } String get path => _assetName; diff --git a/apps/wyatt_app_template/starting_template/lib/gen/colors.gen.dart b/apps/wyatt_app_template/starting_template/lib/gen/colors.gen.dart index 7140be2..9fb3e59 100644 --- a/apps/wyatt_app_template/starting_template/lib/gen/colors.gen.dart +++ b/apps/wyatt_app_template/starting_template/lib/gen/colors.gen.dart @@ -5,7 +5,7 @@ // coverage:ignore-file // ignore_for_file: type=lint -// ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal +// ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal,deprecated_member_use import 'package:flutter/painting.dart'; import 'package:flutter/material.dart'; diff --git a/apps/wyatt_app_template/starting_template/lib/main_development.dart b/apps/wyatt_app_template/starting_template/lib/main_development.dart index 96da185..bf803a1 100644 --- a/apps/wyatt_app_template/starting_template/lib/main_development.dart +++ b/apps/wyatt_app_template/starting_template/lib/main_development.dart @@ -3,7 +3,7 @@ import 'package:starting_template/core/flavors/flavor.dart'; import 'package:starting_template/presentation/features/app/app.dart'; void main(List args) { - // Define environment + // Define flavor DevelopmentFlavor(); // Initialize environment and variables diff --git a/apps/wyatt_app_template/starting_template/lib/main_production.dart b/apps/wyatt_app_template/starting_template/lib/main_production.dart index 8f861f1..b622fd6 100644 --- a/apps/wyatt_app_template/starting_template/lib/main_production.dart +++ b/apps/wyatt_app_template/starting_template/lib/main_production.dart @@ -3,7 +3,7 @@ import 'package:starting_template/core/flavors/flavor.dart'; import 'package:starting_template/presentation/features/app/app.dart'; void main(List args) { - // Define environment + // Define flavor ProductionFlavor(); // Initialize environment and variables diff --git a/apps/wyatt_app_template/starting_template/lib/main_staging.dart b/apps/wyatt_app_template/starting_template/lib/main_staging.dart index 91dff1b..a406f42 100644 --- a/apps/wyatt_app_template/starting_template/lib/main_staging.dart +++ b/apps/wyatt_app_template/starting_template/lib/main_staging.dart @@ -3,7 +3,7 @@ import 'package:starting_template/core/flavors/flavor.dart'; import 'package:starting_template/presentation/features/app/app.dart'; void main(List args) { - // Define environment + // Define flavor StagingFlavor(); // Initialize environment and variables diff --git a/apps/wyatt_app_template/starting_template/lib/presentation/features/app/app.dart b/apps/wyatt_app_template/starting_template/lib/presentation/features/app/app.dart index 8cadcfc..0d859ad 100644 --- a/apps/wyatt_app_template/starting_template/lib/presentation/features/app/app.dart +++ b/apps/wyatt_app_template/starting_template/lib/presentation/features/app/app.dart @@ -1,63 +1,47 @@ -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:starting_template/core/dependency_injection/get_it.dart'; -import 'package:starting_template/core/flavors/flavor.dart'; import 'package:starting_template/core/routes/router.dart'; import 'package:starting_template/data/repositories/counter_repository_impl.dart'; import 'package:starting_template/domain/repositories/counter_repository.dart'; import 'package:starting_template/gen/app_localizations.dart'; import 'package:starting_template/presentation/features/counter/blocs/counter_bloc/counter_bloc.dart'; +import 'package:starting_template/presentation/shared/widgets/flavor_banner.dart'; import 'package:wyatt_bloc_helper/wyatt_bloc_helper.dart'; class App extends StatelessWidget { const App({super.key}); - Widget _flavorBanner(Widget child) { - final flavor = Flavor.get(); - if (flavor.banner != null && !kReleaseMode) { - return Directionality( - textDirection: TextDirection.ltr, - child: Banner( - location: BannerLocation.topEnd, - message: flavor.banner!, - color: flavor.bannerColor, - child: child, - ), - ); - } - - return child; - } - @override Widget build(BuildContext context) => MultiProvider( - repositoryProviders: [ - RepositoryProvider( - create: (_) => CounterRepositoryImpl(counterDataSource: getIt()), + repositoryProviders: [ + RepositoryProvider( + create: (_) => CounterRepositoryImpl(counterDataSource: getIt()), + ), + ], + blocProviders: [ + BlocProvider( + create: (_) => CounterBloc(), + ), + ], + child: FlavorBanner( + child: MaterialApp.router( + title: 'Display Name', + debugShowCheckedModeBanner: false, + routerDelegate: AppRouter.routerOf(context).routerDelegate, + routeInformationParser: + AppRouter.routerOf(context).routeInformationParser, + routeInformationProvider: + AppRouter.routerOf(context).routeInformationProvider, + localizationsDelegates: const [ + AppLocalizations.delegate, + GlobalMaterialLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + ], + supportedLocales: AppLocalizations.supportedLocales, + ), ), - ], - blocProviders: [ - BlocProvider( - create: (_) => CounterBloc(), - ), - ], - child: _flavorBanner( - MaterialApp.router( - title: 'Display Name', - debugShowCheckedModeBanner: false, - routerDelegate: AppRouter.router.routerDelegate, - routeInformationParser: AppRouter.router.routeInformationParser, - routeInformationProvider: AppRouter.router.routeInformationProvider, - localizationsDelegates: const [ - AppLocalizations.delegate, - GlobalMaterialLocalizations.delegate, - GlobalWidgetsLocalizations.delegate, - GlobalCupertinoLocalizations.delegate, - ], - supportedLocales: AppLocalizations.supportedLocales, - ), - ), - ); + ); } diff --git a/apps/wyatt_app_template/starting_template/lib/presentation/shared/widgets/flavor_banner.dart b/apps/wyatt_app_template/starting_template/lib/presentation/shared/widgets/flavor_banner.dart new file mode 100644 index 0000000..1c62fc0 --- /dev/null +++ b/apps/wyatt_app_template/starting_template/lib/presentation/shared/widgets/flavor_banner.dart @@ -0,0 +1,73 @@ +// Copyright (C) 2023 WYATT GROUP +// Please see the AUTHORS file for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +import 'package:flutter/material.dart'; +import 'package:starting_template/core/flavors/flavor.dart'; + +/// {@template flavor_banner} +/// A banner that displays the current flavor. +/// This is useful for quickly identifying which flavor is currently running. +/// +/// When [Flavor.shouldShowBanner] is `false`, this widget will return [child]. +/// You can also override this behavior by setting [visible] to `true`. +/// +/// Wrap your [MaterialApp] with this widget to display the banner. +/// +/// Example: +/// +/// ```dart +/// FlavorBanner( +/// visible: true, // or null to use Flavor.shouldShowBanner() +/// child: const MaterialApp( +/// title: 'Starting Template', +/// ... +/// ), +/// ); +/// ``` +/// {@endtemplate} +class FlavorBanner extends StatelessWidget { + const FlavorBanner({ + this.child, + this.visible, + super.key, + }); + + final Widget? child; + + /// Defaults to [Flavor.shouldShowBanner]. + final bool? visible; + + @override + Widget build(BuildContext context) { + final visible = this.visible ?? Flavor.shouldShowBanner(); + + if (!visible) { + return child ?? const SizedBox.shrink(); + } + + final flavor = Flavor.instance; + + return Directionality( + textDirection: TextDirection.ltr, + child: Banner( + location: BannerLocation.topEnd, + message: flavor.name, + color: flavor.color, + child: child, + ), + ); + } +} diff --git a/apps/wyatt_app_template/starting_template/package-lock.json b/apps/wyatt_app_template/starting_template/package-lock.json deleted file mode 100644 index 8d16ba5..0000000 --- a/apps/wyatt_app_template/starting_template/package-lock.json +++ /dev/null @@ -1,6524 +0,0 @@ -{ - "name": "starting_template", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "dependencies": { - "@trapezedev/configure": "^7.0.5" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "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", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@hutson/parse-repository-url": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", - "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@ionic/cli-framework-output": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@ionic/cli-framework-output/-/cli-framework-output-2.2.5.tgz", - "integrity": "sha512-YeDLTnTaE6V4IDUxT8GDIep0GuRIFaR7YZDLANMuuWJZDmnTku6DP+MmQoltBeLmVvz1BAAZgk41xzxdq6H2FQ==", - "dependencies": { - "@ionic/utils-terminal": "2.3.3", - "debug": "^4.0.0", - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=10.3.0" - } - }, - "node_modules/@ionic/utils-array": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@ionic/utils-array/-/utils-array-2.1.5.tgz", - "integrity": "sha512-HD72a71IQVBmQckDwmA8RxNVMTbxnaLbgFOl+dO5tbvW9CkkSFCv41h6fUuNsSEVgngfkn0i98HDuZC8mk+lTA==", - "dependencies": { - "debug": "^4.0.0", - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=10.3.0" - } - }, - "node_modules/@ionic/utils-fs": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@ionic/utils-fs/-/utils-fs-3.1.6.tgz", - "integrity": "sha512-eikrNkK89CfGPmexjTfSWl4EYqsPSBh0Ka7by4F0PLc1hJZYtJxUZV3X4r5ecA8ikjicUmcbU7zJmAjmqutG/w==", - "dependencies": { - "@types/fs-extra": "^8.0.0", - "debug": "^4.0.0", - "fs-extra": "^9.0.0", - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=10.3.0" - } - }, - "node_modules/@ionic/utils-fs/node_modules/@types/fs-extra": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.2.tgz", - "integrity": "sha512-SvSrYXfWSc7R4eqnOzbQF4TZmfpNSM9FrSWLU3EUnWBuyZqNBOrv1B1JA3byUDPUl9z4Ab3jeZG2eDdySlgNMg==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@ionic/utils-object": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@ionic/utils-object/-/utils-object-2.1.5.tgz", - "integrity": "sha512-XnYNSwfewUqxq+yjER1hxTKggftpNjFLJH0s37jcrNDwbzmbpFTQTVAp4ikNK4rd9DOebX/jbeZb8jfD86IYxw==", - "dependencies": { - "debug": "^4.0.0", - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=10.3.0" - } - }, - "node_modules/@ionic/utils-process": { - "version": "2.1.10", - "resolved": "https://registry.npmjs.org/@ionic/utils-process/-/utils-process-2.1.10.tgz", - "integrity": "sha512-mZ7JEowcuGQK+SKsJXi0liYTcXd2bNMR3nE0CyTROpMECUpJeAvvaBaPGZf5ERQUPeWBVuwqAqjUmIdxhz5bxw==", - "dependencies": { - "@ionic/utils-object": "2.1.5", - "@ionic/utils-terminal": "2.3.3", - "debug": "^4.0.0", - "signal-exit": "^3.0.3", - "tree-kill": "^1.2.2", - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=10.3.0" - } - }, - "node_modules/@ionic/utils-stream": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/@ionic/utils-stream/-/utils-stream-3.1.5.tgz", - "integrity": "sha512-hkm46uHvEC05X/8PHgdJi4l4zv9VQDELZTM+Kz69odtO9zZYfnt8DkfXHJqJ+PxmtiE5mk/ehJWLnn/XAczTUw==", - "dependencies": { - "debug": "^4.0.0", - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=10.3.0" - } - }, - "node_modules/@ionic/utils-subprocess": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@ionic/utils-subprocess/-/utils-subprocess-2.1.11.tgz", - "integrity": "sha512-6zCDixNmZCbMCy5np8klSxOZF85kuDyzZSTTQKQP90ZtYNCcPYmuFSzaqDwApJT4r5L3MY3JrqK1gLkc6xiUPw==", - "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", - "cross-spawn": "^7.0.3", - "debug": "^4.0.0", - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=10.3.0" - } - }, - "node_modules/@ionic/utils-terminal": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@ionic/utils-terminal/-/utils-terminal-2.3.3.tgz", - "integrity": "sha512-RnuSfNZ5fLEyX3R5mtcMY97cGD1A0NVBbarsSQ6yMMfRJ5YHU7hHVyUfvZeClbqkBC/pAqI/rYJuXKCT9YeMCQ==", - "dependencies": { - "@types/slice-ansi": "^4.0.0", - "debug": "^4.0.0", - "signal-exit": "^3.0.3", - "slice-ansi": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "tslib": "^2.0.1", - "untildify": "^4.0.0", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=10.3.0" - } - }, - "node_modules/@ionic/utils-terminal/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==" - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "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==", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@prettier/plugin-xml": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@prettier/plugin-xml/-/plugin-xml-1.2.0.tgz", - "integrity": "sha512-bFvVAZKs59XNmntYjyefn3K4TBykS6E+d6ZW8IcylAs88ZO+TzLhp0dPpi0VKfPzq1Nb+kpDnPRTiwb4zY6NgA==", - "dependencies": { - "@xml-tools/parser": "^1.0.11", - "prettier": ">=2.3" - } - }, - "node_modules/@trapezedev/configure": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@trapezedev/configure/-/configure-7.0.5.tgz", - "integrity": "sha512-RsweaxUNf0aGzJYdaW+cMu5Pa5EetVRBUThwSdKvsZyF5fima3DMk1XUiMwVHUzRA76CHPfp54DRarzm4gVUtQ==", - "dependencies": { - "@ionic/cli-framework-output": "^2.2.2", - "@ionic/utils-fs": "^3.1.5", - "@ionic/utils-subprocess": "^2.1.8", - "@ionic/utils-terminal": "^2.3.1", - "@prettier/plugin-xml": "^1.1.0", - "@trapezedev/project": "7.0.5", - "@types/fs-extra": "^9.0.13", - "@types/jest": "^27.0.2", - "@types/lodash": "^4.14.175", - "@types/plist": "^3.0.2", - "@types/prompts": "^2.0.14", - "@types/slice-ansi": "^5.0.0", - "commander": "^8.2.0", - "conventional-changelog": "^3.1.4", - "env-paths": "^3.0.0", - "kleur": "^4.1.4", - "lodash": "^4.17.21", - "npm-watch": "^0.9.0", - "plist": "^3.0.4", - "prompts": "^2.4.2", - "replace": "^1.1.0", - "tmp": "^0.2.1", - "ts-node": "^10.2.1", - "yaml": "^1.10.2", - "yargs": "^17.2.1" - }, - "bin": { - "trapeze": "bin/trapeze" - } - }, - "node_modules/@trapezedev/gradle-parse": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@trapezedev/gradle-parse/-/gradle-parse-7.0.5.tgz", - "integrity": "sha512-j4dHM0b8/5nDi2GbuiaKUJCXP6zplIW+nO4k6m5kCBQxz1JstB5/2l86Y04ivfRe5Xg0KiSje9K8S5KA3mX5pA==" - }, - "node_modules/@trapezedev/project": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@trapezedev/project/-/project-7.0.5.tgz", - "integrity": "sha512-0NbBHHbcw8q0OKobGDtqpB9eS42gWIrpAAy6VKK2XRs8mVizMkBNxb0i1xDZ2wiLeABYoPR97suFMZwFbkYyTQ==", - "dependencies": { - "@ionic/utils-fs": "^3.1.5", - "@ionic/utils-subprocess": "^2.1.8", - "@prettier/plugin-xml": "^2.2.0", - "@trapezedev/gradle-parse": "7.0.5", - "@types/cross-spawn": "^6.0.2", - "@types/diff": "^5.0.2", - "@types/fs-extra": "^9.0.13", - "@types/ini": "^1.3.31", - "@types/jest": "^27.0.2", - "@types/lodash": "^4.14.175", - "@types/plist": "^3.0.2", - "@types/slice-ansi": "^5.0.0", - "@xmldom/xmldom": "^0.7.5", - "conventional-changelog": "^3.1.4", - "cross-fetch": "^3.1.5", - "cross-spawn": "^7.0.3", - "diff": "^5.1.0", - "env-paths": "^3.0.0", - "gradle-to-js": "^2.0.0", - "ini": "^2.0.0", - "kleur": "^4.1.5", - "lodash": "^4.17.21", - "mergexml": "^1.2.3", - "npm-watch": "^0.9.0", - "plist": "^3.0.4", - "prettier": "^2.7.1", - "prompts": "^2.4.2", - "replace": "^1.1.0", - "tempy": "^1.0.1", - "tmp": "^0.2.1", - "ts-node": "^10.2.1", - "xcode": "^3.0.1", - "xml-js": "^1.6.11", - "xpath": "^0.0.32", - "yargs": "^17.2.1" - } - }, - "node_modules/@trapezedev/project/node_modules/@prettier/plugin-xml": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@prettier/plugin-xml/-/plugin-xml-2.2.0.tgz", - "integrity": "sha512-UWRmygBsyj4bVXvDiqSccwT1kmsorcwQwaIy30yVh8T+Gspx4OlC0shX1y+ZuwXZvgnafmpRYKks0bAu9urJew==", - "dependencies": { - "@xml-tools/parser": "^1.0.11", - "prettier": ">=2.4.0" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==" - }, - "node_modules/@types/cross-spawn": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.2.tgz", - "integrity": "sha512-KuwNhp3eza+Rhu8IFI5HUXRP0LIhqH5cAjubUvGXXthh4YYBuP2ntwEX+Cz8GJoZUHlKo247wPWOfA9LYEq4cw==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/diff": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@types/diff/-/diff-5.0.2.tgz", - "integrity": "sha512-uw8eYMIReOwstQ0QKF0sICefSy8cNO/v7gOTiIy9SbwuHyEecJUm7qlgueOO5S1udZ5I/irVydHVwMchgzbKTg==" - }, - "node_modules/@types/fs-extra": { - "version": "9.0.13", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", - "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/ini": { - "version": "1.3.31", - "resolved": "https://registry.npmjs.org/@types/ini/-/ini-1.3.31.tgz", - "integrity": "sha512-8ecxxaG4AlVEM1k9+BsziMw8UsX0qy3jYI1ad/71RrDZ+rdL6aZB0wLfAuflQiDhkD5o4yJ0uPK3OSUic3fG0w==" - }, - "node_modules/@types/jest": { - "version": "27.5.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", - "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", - "dependencies": { - "jest-matcher-utils": "^27.0.0", - "pretty-format": "^27.0.0" - } - }, - "node_modules/@types/lodash": { - "version": "4.14.191", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz", - "integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==" - }, - "node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" - }, - "node_modules/@types/node": { - "version": "18.11.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", - "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" - }, - "node_modules/@types/plist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.2.tgz", - "integrity": "sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw==", - "dependencies": { - "@types/node": "*", - "xmlbuilder": ">=11.0.1" - } - }, - "node_modules/@types/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@types/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-TwNx7qsjvRIUv/BCx583tqF5IINEVjCNqg9ofKHRlSoUHE62WBHrem4B1HGXcIrG511v29d1kJ9a/t2Esz7MIg==", - "dependencies": { - "@types/node": "*", - "kleur": "^3.0.3" - } - }, - "node_modules/@types/prompts/node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "engines": { - "node": ">=6" - } - }, - "node_modules/@types/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-Bt9wdwNObyD9EQMNN2GSeutWmpsZUC1/bip6XKawJ+cAK9Vhf2EwnSgg7G9Zd7KJv0fTvEbgHFjrHnImemyYQg==" - }, - "node_modules/@xml-tools/parser": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@xml-tools/parser/-/parser-1.0.11.tgz", - "integrity": "sha512-aKqQ077XnR+oQtHJlrAflaZaL7qZsulWc/i/ZEooar5JiWj1eLt0+Wg28cpa+XLney107wXqneC+oG1IZvxkTA==", - "dependencies": { - "chevrotain": "7.1.1" - } - }, - "node_modules/@xmldom/xmldom": { - "version": "0.7.9", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.9.tgz", - "integrity": "sha512-yceMpm/xd4W2a85iqZyO09gTnHvXF6pyiWjD2jcOJs7hRoZtNNOO1eJlhHj1ixA+xip2hOyGn+LgcvLCMo5zXA==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/add-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", - "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==" - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" - }, - "node_modules/array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==" - }, - "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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "engines": { - "node": ">=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==", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/bplist-creator": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz", - "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==", - "dependencies": { - "stream-buffers": "2.2.x" - } - }, - "node_modules/bplist-parser": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", - "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==", - "dependencies": { - "big-integer": "1.6.x" - }, - "engines": { - "node": ">= 5.10.0" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chevrotain": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-7.1.1.tgz", - "integrity": "sha512-wy3mC1x4ye+O+QkEinVJkPf5u2vsrDIYW9G7ZuwFl6v/Yu0LwUuT2POsb+NUWApebyxfkQq6+yDfRExbnI5rcw==", - "dependencies": { - "regexp-to-ast": "0.5.0" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "engines": { - "node": ">= 12" - } - }, - "node_modules/compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", - "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/conventional-changelog": { - "version": "3.1.25", - "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.25.tgz", - "integrity": "sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ==", - "dependencies": { - "conventional-changelog-angular": "^5.0.12", - "conventional-changelog-atom": "^2.0.8", - "conventional-changelog-codemirror": "^2.0.8", - "conventional-changelog-conventionalcommits": "^4.5.0", - "conventional-changelog-core": "^4.2.1", - "conventional-changelog-ember": "^2.0.9", - "conventional-changelog-eslint": "^3.0.9", - "conventional-changelog-express": "^2.0.6", - "conventional-changelog-jquery": "^3.0.11", - "conventional-changelog-jshint": "^2.0.9", - "conventional-changelog-preset-loader": "^2.3.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-angular": { - "version": "5.0.13", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", - "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", - "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-atom": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz", - "integrity": "sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==", - "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-codemirror": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz", - "integrity": "sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==", - "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-conventionalcommits": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.3.tgz", - "integrity": "sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==", - "dependencies": { - "compare-func": "^2.0.0", - "lodash": "^4.17.15", - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-core": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", - "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", - "dependencies": { - "add-stream": "^1.0.0", - "conventional-changelog-writer": "^5.0.0", - "conventional-commits-parser": "^3.2.0", - "dateformat": "^3.0.0", - "get-pkg-repo": "^4.0.0", - "git-raw-commits": "^2.0.8", - "git-remote-origin-url": "^2.0.0", - "git-semver-tags": "^4.1.1", - "lodash": "^4.17.15", - "normalize-package-data": "^3.0.0", - "q": "^1.5.1", - "read-pkg": "^3.0.0", - "read-pkg-up": "^3.0.0", - "through2": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-ember": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz", - "integrity": "sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==", - "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-eslint": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz", - "integrity": "sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==", - "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-express": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz", - "integrity": "sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==", - "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-jquery": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz", - "integrity": "sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==", - "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-jshint": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz", - "integrity": "sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==", - "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-preset-loader": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", - "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-writer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", - "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", - "dependencies": { - "conventional-commits-filter": "^2.0.7", - "dateformat": "^3.0.0", - "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "semver": "^6.0.0", - "split": "^1.0.0", - "through2": "^4.0.0" - }, - "bin": { - "conventional-changelog-writer": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-commits-filter": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", - "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", - "dependencies": { - "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-commits-parser": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", - "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", - "dependencies": { - "is-text-path": "^1.0.1", - "JSONStream": "^1.0.4", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "conventional-commits-parser": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" - }, - "node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "dependencies": { - "node-fetch": "2.6.7" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/dargs": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", - "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "engines": { - "node": "*" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "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==", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dir-glob/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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==" - }, - "node_modules/env-paths": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz", - "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/formidable": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", - "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==", - "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau", - "funding": { - "url": "https://ko-fi.com/tunnckoCore/commissions" - } - }, - "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==", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "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==" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-pkg-repo": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", - "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", - "dependencies": { - "@hutson/parse-repository-url": "^3.0.0", - "hosted-git-info": "^4.0.0", - "through2": "^2.0.0", - "yargs": "^16.2.0" - }, - "bin": { - "get-pkg-repo": "src/cli.js" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-pkg-repo/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/get-pkg-repo/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/get-pkg-repo/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/get-pkg-repo/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/get-pkg-repo/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/get-pkg-repo/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/git-raw-commits": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", - "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", - "dependencies": { - "dargs": "^7.0.0", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "git-raw-commits": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/git-remote-origin-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", - "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", - "dependencies": { - "gitconfiglocal": "^1.0.0", - "pify": "^2.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/git-semver-tags": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", - "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", - "dependencies": { - "meow": "^8.0.0", - "semver": "^6.0.0" - }, - "bin": { - "git-semver-tags": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/gitconfiglocal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", - "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", - "dependencies": { - "ini": "^1.3.2" - } - }, - "node_modules/gitconfiglocal/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "node_modules/gradle-to-js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/gradle-to-js/-/gradle-to-js-2.0.1.tgz", - "integrity": "sha512-is3hDn9zb8XXnjbEeAEIqxTpLHUiGBqjegLmXPuyMBfKAggpadWFku4/AP8iYAGBX6qR9/5UIUIp47V0XI3aMw==", - "dependencies": { - "lodash.merge": "^4.6.2" - }, - "bin": { - "gradle-to-js": "cli.js" - } - }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "engines": { - "node": ">=8" - } - }, - "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==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "engines": { - "node": ">=10" - } - }, - "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==" - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "engines": { - "node": ">=6" - } - }, - "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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-text-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", - "dependencies": { - "text-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "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==" - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "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==" - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "engines": [ - "node >= 0.2.0" - ] - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "engines": { - "node": ">=6" - } - }, - "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==" - }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "engines": { - "node": ">=4" - } - }, - "node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.ismatch": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", - "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "node_modules/meow/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/meow/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==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/mergexml": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/mergexml/-/mergexml-1.2.3.tgz", - "integrity": "sha512-sNc9qswtLUoGmN0MB3dY+MCIJqCGEZZrtYp0Z5Iwsk6ELc/V96SFIuv5Y6O6tYAsFtdpJcPFV0FgOSHSciJLbA==", - "dependencies": { - "@xmldom/xmldom": "^0.7.0", - "formidable": "^1.2.1", - "xpath": "0.0.27" - } - }, - "node_modules/mergexml/node_modules/xpath": { - "version": "0.0.27", - "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.27.tgz", - "integrity": "sha512-fg03WRxtkCV6ohClePNAECYsmpKKTv5L8y/X3Dn1hQrec3POx2jHZ/0P2qQ6HvsrU1BmeqXcof3NGGueG6LxwQ==", - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/modify-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", - "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/nodemon": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz", - "integrity": "sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==", - "dependencies": { - "chokidar": "^3.5.2", - "debug": "^3.2.7", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.1.2", - "pstree.remy": "^1.1.8", - "semver": "^5.7.1", - "simple-update-notifier": "^1.0.7", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" - }, - "bin": { - "nodemon": "bin/nodemon.js" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" - } - }, - "node_modules/nodemon/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/nodemon/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/nodemon/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/nodemon/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-watch": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/npm-watch/-/npm-watch-0.9.0.tgz", - "integrity": "sha512-C5Rgh5+jvY33K1EH8Qjr1hfpH9Nhasc90QJ0W+JyKg2ogE0LOCZI4xirC8QmywW7XinyBpynwxlrN6aPfjc3Hw==", - "dependencies": { - "nodemon": "^2.0.7", - "through2": "^4.0.2" - }, - "bin": { - "npm-watch": "cli.js" - } - }, - "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==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "engines": { - "node": ">=4" - } - }, - "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "engines": { - "node": ">=4" - } - }, - "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==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-type/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "engines": { - "node": ">=4" - } - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/plist": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz", - "integrity": "sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==", - "dependencies": { - "base64-js": "^1.5.1", - "xmlbuilder": "^15.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/prettier": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz", - "integrity": "sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/prompts/node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "engines": { - "node": ">=6" - } - }, - "node_modules/pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" - }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "engines": { - "node": ">=8" - } - }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - }, - "node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", - "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/read-pkg/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/regexp-to-ast": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.5.0.tgz", - "integrity": "sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==" - }, - "node_modules/replace": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/replace/-/replace-1.2.2.tgz", - "integrity": "sha512-C4EDifm22XZM2b2JOYe6Mhn+lBsLBAvLbK8drfUQLTfD1KYl/n3VaW/CDju0Ny4w3xTtegBpg8YNSpFJPUDSjA==", - "dependencies": { - "chalk": "2.4.2", - "minimatch": "3.0.5", - "yargs": "^15.3.1" - }, - "bin": { - "replace": "bin/replace.js", - "search": "bin/search.js" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/replace/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/replace/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/replace/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/replace/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/replace/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/replace/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/replace/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/replace/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/replace/node_modules/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/replace/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/replace/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/replace/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/replace/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/replace/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/replace/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/replace/node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/replace/node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/replace/node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/replace/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" - }, - "node_modules/replace/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/replace/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "engines": { - "node": ">=8" - } - }, - "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==" - }, - "node_modules/simple-plist": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz", - "integrity": "sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==", - "dependencies": { - "bplist-creator": "0.1.0", - "bplist-parser": "0.3.1", - "plist": "^3.0.5" - } - }, - "node_modules/simple-update-notifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", - "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", - "dependencies": { - "semver": "~7.0.0" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/simple-update-notifier/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "engines": { - "node": ">=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==", - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" - }, - "node_modules/split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "dependencies": { - "through": "2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "dependencies": { - "readable-stream": "^3.0.0" - } - }, - "node_modules/stream-buffers": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", - "integrity": "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==", - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "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==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/tempy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz", - "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==", - "dependencies": { - "del": "^6.0.0", - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tempy/node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/text-extensions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", - "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } - }, - "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==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dependencies": { - "nopt": "~1.0.10" - }, - "bin": { - "nodetouch": "bin/nodetouch.js" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "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==", - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/ts-node/node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, - "node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", - "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" - }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/uuid": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", - "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" - }, - "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==", - "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/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/xcode": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz", - "integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==", - "dependencies": { - "simple-plist": "^1.1.0", - "uuid": "^7.0.3" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/xml-js": { - "version": "1.6.11", - "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", - "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", - "dependencies": { - "sax": "^1.2.4" - }, - "bin": { - "xml-js": "bin/cli.js" - } - }, - "node_modules/xmlbuilder": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", - "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", - "engines": { - "node": ">=8.0" - } - }, - "node_modules/xpath": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.32.tgz", - "integrity": "sha512-rxMJhSIoiO8vXcWvSifKqhvV96GjiD5wYb8/QHdoRyQvraTpp4IEv944nhGausZZ3u7dhQXteZuZbaqfpB7uYw==", - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "17.6.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", - "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "engines": { - "node": ">=6" - } - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "requires": { - "@jridgewell/trace-mapping": "0.3.9" - } - }, - "@hutson/parse-repository-url": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", - "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==" - }, - "@ionic/cli-framework-output": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@ionic/cli-framework-output/-/cli-framework-output-2.2.5.tgz", - "integrity": "sha512-YeDLTnTaE6V4IDUxT8GDIep0GuRIFaR7YZDLANMuuWJZDmnTku6DP+MmQoltBeLmVvz1BAAZgk41xzxdq6H2FQ==", - "requires": { - "@ionic/utils-terminal": "2.3.3", - "debug": "^4.0.0", - "tslib": "^2.0.1" - } - }, - "@ionic/utils-array": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@ionic/utils-array/-/utils-array-2.1.5.tgz", - "integrity": "sha512-HD72a71IQVBmQckDwmA8RxNVMTbxnaLbgFOl+dO5tbvW9CkkSFCv41h6fUuNsSEVgngfkn0i98HDuZC8mk+lTA==", - "requires": { - "debug": "^4.0.0", - "tslib": "^2.0.1" - } - }, - "@ionic/utils-fs": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@ionic/utils-fs/-/utils-fs-3.1.6.tgz", - "integrity": "sha512-eikrNkK89CfGPmexjTfSWl4EYqsPSBh0Ka7by4F0PLc1hJZYtJxUZV3X4r5ecA8ikjicUmcbU7zJmAjmqutG/w==", - "requires": { - "@types/fs-extra": "^8.0.0", - "debug": "^4.0.0", - "fs-extra": "^9.0.0", - "tslib": "^2.0.1" - }, - "dependencies": { - "@types/fs-extra": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.2.tgz", - "integrity": "sha512-SvSrYXfWSc7R4eqnOzbQF4TZmfpNSM9FrSWLU3EUnWBuyZqNBOrv1B1JA3byUDPUl9z4Ab3jeZG2eDdySlgNMg==", - "requires": { - "@types/node": "*" - } - } - } - }, - "@ionic/utils-object": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@ionic/utils-object/-/utils-object-2.1.5.tgz", - "integrity": "sha512-XnYNSwfewUqxq+yjER1hxTKggftpNjFLJH0s37jcrNDwbzmbpFTQTVAp4ikNK4rd9DOebX/jbeZb8jfD86IYxw==", - "requires": { - "debug": "^4.0.0", - "tslib": "^2.0.1" - } - }, - "@ionic/utils-process": { - "version": "2.1.10", - "resolved": "https://registry.npmjs.org/@ionic/utils-process/-/utils-process-2.1.10.tgz", - "integrity": "sha512-mZ7JEowcuGQK+SKsJXi0liYTcXd2bNMR3nE0CyTROpMECUpJeAvvaBaPGZf5ERQUPeWBVuwqAqjUmIdxhz5bxw==", - "requires": { - "@ionic/utils-object": "2.1.5", - "@ionic/utils-terminal": "2.3.3", - "debug": "^4.0.0", - "signal-exit": "^3.0.3", - "tree-kill": "^1.2.2", - "tslib": "^2.0.1" - } - }, - "@ionic/utils-stream": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/@ionic/utils-stream/-/utils-stream-3.1.5.tgz", - "integrity": "sha512-hkm46uHvEC05X/8PHgdJi4l4zv9VQDELZTM+Kz69odtO9zZYfnt8DkfXHJqJ+PxmtiE5mk/ehJWLnn/XAczTUw==", - "requires": { - "debug": "^4.0.0", - "tslib": "^2.0.1" - } - }, - "@ionic/utils-subprocess": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@ionic/utils-subprocess/-/utils-subprocess-2.1.11.tgz", - "integrity": "sha512-6zCDixNmZCbMCy5np8klSxOZF85kuDyzZSTTQKQP90ZtYNCcPYmuFSzaqDwApJT4r5L3MY3JrqK1gLkc6xiUPw==", - "requires": { - "@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", - "cross-spawn": "^7.0.3", - "debug": "^4.0.0", - "tslib": "^2.0.1" - } - }, - "@ionic/utils-terminal": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@ionic/utils-terminal/-/utils-terminal-2.3.3.tgz", - "integrity": "sha512-RnuSfNZ5fLEyX3R5mtcMY97cGD1A0NVBbarsSQ6yMMfRJ5YHU7hHVyUfvZeClbqkBC/pAqI/rYJuXKCT9YeMCQ==", - "requires": { - "@types/slice-ansi": "^4.0.0", - "debug": "^4.0.0", - "signal-exit": "^3.0.3", - "slice-ansi": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "tslib": "^2.0.1", - "untildify": "^4.0.0", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "@types/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-+OpjSaq85gvlZAYINyzKpLeiFkSC4EsC6IIiT6v6TLSU5k5U83fHGj9Lel8oKEXM0HqgrMVCjXPDPVICtxF7EQ==" - } - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - }, - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@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==", - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@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==" - }, - "@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==", - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@prettier/plugin-xml": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@prettier/plugin-xml/-/plugin-xml-1.2.0.tgz", - "integrity": "sha512-bFvVAZKs59XNmntYjyefn3K4TBykS6E+d6ZW8IcylAs88ZO+TzLhp0dPpi0VKfPzq1Nb+kpDnPRTiwb4zY6NgA==", - "requires": { - "@xml-tools/parser": "^1.0.11", - "prettier": ">=2.3" - } - }, - "@trapezedev/configure": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@trapezedev/configure/-/configure-7.0.5.tgz", - "integrity": "sha512-RsweaxUNf0aGzJYdaW+cMu5Pa5EetVRBUThwSdKvsZyF5fima3DMk1XUiMwVHUzRA76CHPfp54DRarzm4gVUtQ==", - "requires": { - "@ionic/cli-framework-output": "^2.2.2", - "@ionic/utils-fs": "^3.1.5", - "@ionic/utils-subprocess": "^2.1.8", - "@ionic/utils-terminal": "^2.3.1", - "@prettier/plugin-xml": "^1.1.0", - "@trapezedev/project": "7.0.5", - "@types/fs-extra": "^9.0.13", - "@types/jest": "^27.0.2", - "@types/lodash": "^4.14.175", - "@types/plist": "^3.0.2", - "@types/prompts": "^2.0.14", - "@types/slice-ansi": "^5.0.0", - "commander": "^8.2.0", - "conventional-changelog": "^3.1.4", - "env-paths": "^3.0.0", - "kleur": "^4.1.4", - "lodash": "^4.17.21", - "npm-watch": "^0.9.0", - "plist": "^3.0.4", - "prompts": "^2.4.2", - "replace": "^1.1.0", - "tmp": "^0.2.1", - "ts-node": "^10.2.1", - "yaml": "^1.10.2", - "yargs": "^17.2.1" - } - }, - "@trapezedev/gradle-parse": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@trapezedev/gradle-parse/-/gradle-parse-7.0.5.tgz", - "integrity": "sha512-j4dHM0b8/5nDi2GbuiaKUJCXP6zplIW+nO4k6m5kCBQxz1JstB5/2l86Y04ivfRe5Xg0KiSje9K8S5KA3mX5pA==" - }, - "@trapezedev/project": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@trapezedev/project/-/project-7.0.5.tgz", - "integrity": "sha512-0NbBHHbcw8q0OKobGDtqpB9eS42gWIrpAAy6VKK2XRs8mVizMkBNxb0i1xDZ2wiLeABYoPR97suFMZwFbkYyTQ==", - "requires": { - "@ionic/utils-fs": "^3.1.5", - "@ionic/utils-subprocess": "^2.1.8", - "@prettier/plugin-xml": "^2.2.0", - "@trapezedev/gradle-parse": "7.0.5", - "@types/cross-spawn": "^6.0.2", - "@types/diff": "^5.0.2", - "@types/fs-extra": "^9.0.13", - "@types/ini": "^1.3.31", - "@types/jest": "^27.0.2", - "@types/lodash": "^4.14.175", - "@types/plist": "^3.0.2", - "@types/slice-ansi": "^5.0.0", - "@xmldom/xmldom": "^0.7.5", - "conventional-changelog": "^3.1.4", - "cross-fetch": "^3.1.5", - "cross-spawn": "^7.0.3", - "diff": "^5.1.0", - "env-paths": "^3.0.0", - "gradle-to-js": "^2.0.0", - "ini": "^2.0.0", - "kleur": "^4.1.5", - "lodash": "^4.17.21", - "mergexml": "^1.2.3", - "npm-watch": "^0.9.0", - "plist": "^3.0.4", - "prettier": "^2.7.1", - "prompts": "^2.4.2", - "replace": "^1.1.0", - "tempy": "^1.0.1", - "tmp": "^0.2.1", - "ts-node": "^10.2.1", - "xcode": "^3.0.1", - "xml-js": "^1.6.11", - "xpath": "^0.0.32", - "yargs": "^17.2.1" - }, - "dependencies": { - "@prettier/plugin-xml": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@prettier/plugin-xml/-/plugin-xml-2.2.0.tgz", - "integrity": "sha512-UWRmygBsyj4bVXvDiqSccwT1kmsorcwQwaIy30yVh8T+Gspx4OlC0shX1y+ZuwXZvgnafmpRYKks0bAu9urJew==", - "requires": { - "@xml-tools/parser": "^1.0.11", - "prettier": ">=2.4.0" - } - } - } - }, - "@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" - }, - "@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" - }, - "@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" - }, - "@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==" - }, - "@types/cross-spawn": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.2.tgz", - "integrity": "sha512-KuwNhp3eza+Rhu8IFI5HUXRP0LIhqH5cAjubUvGXXthh4YYBuP2ntwEX+Cz8GJoZUHlKo247wPWOfA9LYEq4cw==", - "requires": { - "@types/node": "*" - } - }, - "@types/diff": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@types/diff/-/diff-5.0.2.tgz", - "integrity": "sha512-uw8eYMIReOwstQ0QKF0sICefSy8cNO/v7gOTiIy9SbwuHyEecJUm7qlgueOO5S1udZ5I/irVydHVwMchgzbKTg==" - }, - "@types/fs-extra": { - "version": "9.0.13", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", - "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", - "requires": { - "@types/node": "*" - } - }, - "@types/ini": { - "version": "1.3.31", - "resolved": "https://registry.npmjs.org/@types/ini/-/ini-1.3.31.tgz", - "integrity": "sha512-8ecxxaG4AlVEM1k9+BsziMw8UsX0qy3jYI1ad/71RrDZ+rdL6aZB0wLfAuflQiDhkD5o4yJ0uPK3OSUic3fG0w==" - }, - "@types/jest": { - "version": "27.5.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", - "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", - "requires": { - "jest-matcher-utils": "^27.0.0", - "pretty-format": "^27.0.0" - } - }, - "@types/lodash": { - "version": "4.14.191", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz", - "integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==" - }, - "@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" - }, - "@types/node": { - "version": "18.11.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", - "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" - }, - "@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" - }, - "@types/plist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.2.tgz", - "integrity": "sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw==", - "requires": { - "@types/node": "*", - "xmlbuilder": ">=11.0.1" - } - }, - "@types/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@types/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-TwNx7qsjvRIUv/BCx583tqF5IINEVjCNqg9ofKHRlSoUHE62WBHrem4B1HGXcIrG511v29d1kJ9a/t2Esz7MIg==", - "requires": { - "@types/node": "*", - "kleur": "^3.0.3" - }, - "dependencies": { - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" - } - } - }, - "@types/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-Bt9wdwNObyD9EQMNN2GSeutWmpsZUC1/bip6XKawJ+cAK9Vhf2EwnSgg7G9Zd7KJv0fTvEbgHFjrHnImemyYQg==" - }, - "@xml-tools/parser": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@xml-tools/parser/-/parser-1.0.11.tgz", - "integrity": "sha512-aKqQ077XnR+oQtHJlrAflaZaL7qZsulWc/i/ZEooar5JiWj1eLt0+Wg28cpa+XLney107wXqneC+oG1IZvxkTA==", - "requires": { - "chevrotain": "7.1.1" - } - }, - "@xmldom/xmldom": { - "version": "0.7.9", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.9.tgz", - "integrity": "sha512-yceMpm/xd4W2a85iqZyO09gTnHvXF6pyiWjD2jcOJs7hRoZtNNOO1eJlhHj1ixA+xip2hOyGn+LgcvLCMo5zXA==" - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" - }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" - }, - "add-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", - "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==" - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" - }, - "array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==" - }, - "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==" - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==" - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" - }, - "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==" - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==" - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - }, - "bplist-creator": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz", - "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==", - "requires": { - "stream-buffers": "2.2.x" - } - }, - "bplist-parser": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", - "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==", - "requires": { - "big-integer": "1.6.x" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - }, - "camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "requires": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chevrotain": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-7.1.1.tgz", - "integrity": "sha512-wy3mC1x4ye+O+QkEinVJkPf5u2vsrDIYW9G7ZuwFl6v/Yu0LwUuT2POsb+NUWApebyxfkQq6+yDfRExbnI5rcw==", - "requires": { - "regexp-to-ast": "0.5.0" - } - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" - }, - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" - }, - "compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", - "requires": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "conventional-changelog": { - "version": "3.1.25", - "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.25.tgz", - "integrity": "sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ==", - "requires": { - "conventional-changelog-angular": "^5.0.12", - "conventional-changelog-atom": "^2.0.8", - "conventional-changelog-codemirror": "^2.0.8", - "conventional-changelog-conventionalcommits": "^4.5.0", - "conventional-changelog-core": "^4.2.1", - "conventional-changelog-ember": "^2.0.9", - "conventional-changelog-eslint": "^3.0.9", - "conventional-changelog-express": "^2.0.6", - "conventional-changelog-jquery": "^3.0.11", - "conventional-changelog-jshint": "^2.0.9", - "conventional-changelog-preset-loader": "^2.3.4" - } - }, - "conventional-changelog-angular": { - "version": "5.0.13", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", - "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", - "requires": { - "compare-func": "^2.0.0", - "q": "^1.5.1" - } - }, - "conventional-changelog-atom": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz", - "integrity": "sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==", - "requires": { - "q": "^1.5.1" - } - }, - "conventional-changelog-codemirror": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz", - "integrity": "sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==", - "requires": { - "q": "^1.5.1" - } - }, - "conventional-changelog-conventionalcommits": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.3.tgz", - "integrity": "sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==", - "requires": { - "compare-func": "^2.0.0", - "lodash": "^4.17.15", - "q": "^1.5.1" - } - }, - "conventional-changelog-core": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", - "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", - "requires": { - "add-stream": "^1.0.0", - "conventional-changelog-writer": "^5.0.0", - "conventional-commits-parser": "^3.2.0", - "dateformat": "^3.0.0", - "get-pkg-repo": "^4.0.0", - "git-raw-commits": "^2.0.8", - "git-remote-origin-url": "^2.0.0", - "git-semver-tags": "^4.1.1", - "lodash": "^4.17.15", - "normalize-package-data": "^3.0.0", - "q": "^1.5.1", - "read-pkg": "^3.0.0", - "read-pkg-up": "^3.0.0", - "through2": "^4.0.0" - } - }, - "conventional-changelog-ember": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz", - "integrity": "sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==", - "requires": { - "q": "^1.5.1" - } - }, - "conventional-changelog-eslint": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz", - "integrity": "sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==", - "requires": { - "q": "^1.5.1" - } - }, - "conventional-changelog-express": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz", - "integrity": "sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==", - "requires": { - "q": "^1.5.1" - } - }, - "conventional-changelog-jquery": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz", - "integrity": "sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==", - "requires": { - "q": "^1.5.1" - } - }, - "conventional-changelog-jshint": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz", - "integrity": "sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==", - "requires": { - "compare-func": "^2.0.0", - "q": "^1.5.1" - } - }, - "conventional-changelog-preset-loader": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", - "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==" - }, - "conventional-changelog-writer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", - "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", - "requires": { - "conventional-commits-filter": "^2.0.7", - "dateformat": "^3.0.0", - "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "semver": "^6.0.0", - "split": "^1.0.0", - "through2": "^4.0.0" - } - }, - "conventional-commits-filter": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", - "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", - "requires": { - "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.0" - } - }, - "conventional-commits-parser": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", - "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", - "requires": { - "is-text-path": "^1.0.1", - "JSONStream": "^1.0.4", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - } - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" - }, - "cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "requires": { - "node-fetch": "2.6.7" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" - }, - "dargs": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", - "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==" - }, - "dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==" - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" - }, - "decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==" - } - } - }, - "del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "requires": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - } - }, - "diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==" - }, - "diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==" - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "requires": { - "path-type": "^4.0.0" - }, - "dependencies": { - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - } - } - }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "requires": { - "is-obj": "^2.0.0" - } - }, - "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==" - }, - "env-paths": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz", - "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==" - }, - "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==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - }, - "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "requires": { - "reusify": "^1.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "requires": { - "locate-path": "^2.0.0" - } - }, - "formidable": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", - "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==" - }, - "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==", - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - }, - "get-pkg-repo": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", - "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", - "requires": { - "@hutson/parse-repository-url": "^3.0.0", - "hosted-git-info": "^4.0.0", - "through2": "^2.0.0", - "yargs": "^16.2.0" - }, - "dependencies": { - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - } - } - }, - "git-raw-commits": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", - "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", - "requires": { - "dargs": "^7.0.0", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - } - }, - "git-remote-origin-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", - "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", - "requires": { - "gitconfiglocal": "^1.0.0", - "pify": "^2.3.0" - } - }, - "git-semver-tags": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", - "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", - "requires": { - "meow": "^8.0.0", - "semver": "^6.0.0" - } - }, - "gitconfiglocal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", - "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", - "requires": { - "ini": "^1.3.2" - }, - "dependencies": { - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - } - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "requires": { - "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" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "gradle-to-js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/gradle-to-js/-/gradle-to-js-2.0.1.tgz", - "integrity": "sha512-is3hDn9zb8XXnjbEeAEIqxTpLHUiGBqjegLmXPuyMBfKAggpadWFku4/AP8iYAGBX6qR9/5UIUIp47V0XI3aMw==", - "requires": { - "lodash.merge": "^4.6.2" - } - }, - "handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "requires": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" - } - }, - "hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==" - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" - }, - "ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "requires": { - "has": "^1.0.3" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" - }, - "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==" - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" - }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" - }, - "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==" - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==" - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - }, - "is-text-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", - "requires": { - "text-extensions": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - } - }, - "jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==" - }, - "jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "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==" - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==" - }, - "JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - }, - "kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==" - }, - "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==" - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" - } - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.ismatch": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", - "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==" - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - }, - "map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==" - }, - "meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", - "requires": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - }, - "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==", - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "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==" - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "dependencies": { - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" - } - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - }, - "mergexml": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/mergexml/-/mergexml-1.2.3.tgz", - "integrity": "sha512-sNc9qswtLUoGmN0MB3dY+MCIJqCGEZZrtYp0Z5Iwsk6ELc/V96SFIuv5Y6O6tYAsFtdpJcPFV0FgOSHSciJLbA==", - "requires": { - "@xmldom/xmldom": "^0.7.0", - "formidable": "^1.2.1", - "xpath": "0.0.27" - }, - "dependencies": { - "xpath": { - "version": "0.0.27", - "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.27.tgz", - "integrity": "sha512-fg03WRxtkCV6ohClePNAECYsmpKKTv5L8y/X3Dn1hQrec3POx2jHZ/0P2qQ6HvsrU1BmeqXcof3NGGueG6LxwQ==" - } - } - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" - }, - "minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - } - }, - "modify-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", - "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "nodemon": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz", - "integrity": "sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==", - "requires": { - "chokidar": "^3.5.2", - "debug": "^3.2.7", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.1.2", - "pstree.remy": "^1.1.8", - "semver": "^5.7.1", - "simple-update-notifier": "^1.0.7", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "npm-watch": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/npm-watch/-/npm-watch-0.9.0.tgz", - "integrity": "sha512-C5Rgh5+jvY33K1EH8Qjr1hfpH9Nhasc90QJ0W+JyKg2ogE0LOCZI4xirC8QmywW7XinyBpynwxlrN6aPfjc3Hw==", - "requires": { - "nodemon": "^2.0.7", - "through2": "^4.0.2" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==" - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" - }, - "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==" - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" - } - } - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" - }, - "plist": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz", - "integrity": "sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==", - "requires": { - "base64-js": "^1.5.1", - "xmlbuilder": "^15.1.1" - } - }, - "prettier": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz", - "integrity": "sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==" - }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" - } - } - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "dependencies": { - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" - } - } - }, - "pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - }, - "quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==" - }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "dependencies": { - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "requires": { - "picomatch": "^2.2.1" - } - }, - "redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "requires": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - } - }, - "regexp-to-ast": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.5.0.tgz", - "integrity": "sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==" - }, - "replace": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/replace/-/replace-1.2.2.tgz", - "integrity": "sha512-C4EDifm22XZM2b2JOYe6Mhn+lBsLBAvLbK8drfUQLTfD1KYl/n3VaW/CDju0Ny4w3xTtegBpg8YNSpFJPUDSjA==", - "requires": { - "chalk": "2.4.2", - "minimatch": "3.0.5", - "yargs": "^15.3.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.0" - } - }, - "minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - }, - "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==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - } - } - }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - }, - "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==", - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - }, - "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==" - }, - "simple-plist": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz", - "integrity": "sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==", - "requires": { - "bplist-creator": "0.1.0", - "bplist-parser": "0.3.1", - "plist": "^3.0.5" - } - }, - "simple-update-notifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", - "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", - "requires": { - "semver": "~7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" - } - } - }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" - }, - "split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "requires": { - "through": "2" - } - }, - "split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "requires": { - "readable-stream": "^3.0.0" - } - }, - "stream-buffers": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", - "integrity": "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==" - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "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==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" - }, - "strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "requires": { - "min-indent": "^1.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - }, - "temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==" - }, - "tempy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz", - "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==", - "requires": { - "del": "^6.0.0", - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, - "dependencies": { - "type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==" - } - } - }, - "text-extensions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", - "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==" - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "requires": { - "readable-stream": "3" - } - }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "requires": { - "rimraf": "^3.0.0" - } - }, - "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==", - "requires": { - "is-number": "^7.0.0" - } - }, - "touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "requires": { - "nopt": "~1.0.10" - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "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==" - }, - "trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==" - }, - "ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "requires": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "dependencies": { - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" - } - } - }, - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, - "type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==" - }, - "typescript": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", - "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", - "peer": true - }, - "uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", - "optional": true - }, - "undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" - }, - "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "requires": { - "crypto-random-string": "^2.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - }, - "untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==" - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "uuid": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", - "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==" - }, - "v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" - }, - "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==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "xcode": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz", - "integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==", - "requires": { - "simple-plist": "^1.1.0", - "uuid": "^7.0.3" - } - }, - "xml-js": { - "version": "1.6.11", - "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", - "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", - "requires": { - "sax": "^1.2.4" - } - }, - "xmlbuilder": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", - "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==" - }, - "xpath": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.32.tgz", - "integrity": "sha512-rxMJhSIoiO8vXcWvSifKqhvV96GjiD5wYb8/QHdoRyQvraTpp4IEv944nhGausZZ3u7dhQXteZuZbaqfpB7uYw==" - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" - }, - "yargs": { - "version": "17.6.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", - "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", - "requires": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "dependencies": { - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" - } - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" - } - } -} diff --git a/apps/wyatt_app_template/starting_template/package.json b/apps/wyatt_app_template/starting_template/package.json deleted file mode 100644 index 3c8f622..0000000 --- a/apps/wyatt_app_template/starting_template/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "dependencies": { - "@trapezedev/configure": "^7.0.5" - } -} diff --git a/apps/wyatt_app_template/starting_template/pubspec.yaml b/apps/wyatt_app_template/starting_template/pubspec.yaml index 33b4bf8..dc7f50f 100644 --- a/apps/wyatt_app_template/starting_template/pubspec.yaml +++ b/apps/wyatt_app_template/starting_template/pubspec.yaml @@ -1,90 +1,82 @@ name: starting_template -description: A short project description - -publish_to: "none" - version: 1.0.0+1 - -environment: - sdk: ">=2.18.0 <3.0.0" - flutter: ">=3.0.0" - -dependencies: - flutter: { sdk: flutter } - flutter_localizations: { sdk: flutter } - intl: ^0.17.0 - go_router: ^6.0.1 - equatable: ^2.0.5 - freezed_annotation: ^2.2.0 - json_annotation: ^4.8.0 +publish_to: none +description: A short project description +environment: + sdk: '>=2.18.0 <3.0.0' + flutter: '>=3.0.0' +dependencies: cupertino_icons: ^1.0.5 - get_it: ^7.2.0 - flutter_dotenv: ^5.0.2 - gap: ^2.0.1 + equatable: ^2.0.5 flutter_bloc: ^8.1.1 + flutter_native_splash: ^2.2.15 + freezed_annotation: ^2.2.0 + gap: ^2.0.1 + get_it: ^7.2.0 + go_router: ^6.0.1 + intl: ^0.17.0 + json_annotation: ^4.8.0 url_launcher: ^6.1.7 uuid: ^3.0.7 - flutter_native_splash: ^2.2.15 - wyatt_architecture: - hosted: - url: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/ + flutter: + sdk: flutter + flutter_localizations: + sdk: flutter + wyatt_architecture: + version: ^0.2.0 + hosted: name: wyatt_architecture - version: 0.1.0+1 - wyatt_bloc_helper: - hosted: url: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/ + wyatt_bloc_helper: + version: ^2.0.1 + hosted: name: wyatt_bloc_helper - version: 2.0.0 - wyatt_type_utils: - hosted: url: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/ + wyatt_type_utils: + version: ^0.0.5 + hosted: name: wyatt_type_utils - version: 0.0.4 - -dev_dependencies: - flutter_test: { sdk: flutter } - dependency_validator: ^3.2.2 + url: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/ +dev_dependencies: build_runner: ^2.3.3 + dart_code_metrics: ^5.4.0 + dependency_validator: ^3.2.2 flutter_gen_runner: ^5.1.0+1 + flutter_launcher_icons: ^0.11.0 freezed: ^2.3.2 json_serializable: ^6.6.0 - flutter_launcher_icons: ^0.11.0 - dart_code_metrics: ^5.4.0 + pubspec_dependency_sorter: ^1.0.3 rename: ^2.1.1 - wyatt_analysis: - hosted: - url: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/ + flutter_test: + sdk: flutter + wyatt_analysis: + version: ^2.5.0 + hosted: name: wyatt_analysis - version: 2.4.1 - -flutter: - uses-material-design: true - generate: true - assets: - - .env + url: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/ +flutter: + assets: - assets/images/ - -flutter_gen: + uses-material-design: true +flutter_gen: output: lib/gen/ - integrations: + integrations: flutter_svg: true flare_flutter: true rive: true lottie: true - colors: - inputs: + colors: + inputs: - assets/colors.xml - -flutter_icons: - android: "launcher_icon" - ios: true - image_path: "assets/images/wyatt_logo.jpeg" - adaptive_icon_background: "#FFFFFF" - -flutter_native_splash: - image: "assets/images/wyatt_logo.jpeg" - color: "#FFFFFF" - android: true +flutter_icons: + android: launcher_icon + image_path: assets/images/wyatt_logo.jpeg + adaptive_icon_background: '#FFFFFF' ios: true +flutter_native_splash: + image: assets/images/wyatt_logo.jpeg + color: '#FFFFFF' android_gravity: fill ios_content_mode: scaleAspectFit + android: true + ios: true diff --git a/apps/wyatt_app_template/starting_template/trapeze.yaml b/apps/wyatt_app_template/starting_template/trapeze.yaml deleted file mode 100644 index 9eb7ea8..0000000 --- a/apps/wyatt_app_template/starting_template/trapeze.yaml +++ /dev/null @@ -1,36 +0,0 @@ -vars: - PACKAGE_NAME: - default: starting_template - BUNDLE_ID: - default: io.wyattapp.start - APP_NAME: - default: Display Name - -platforms: - android: - appName: $APP_NAME - packageName: $BUNDLE_ID - # Uncomment to add some permissions - # manifest: - # - file: AndroidManifest.xml - # target: manifest/application - # inject: - # - ios: - targets: - Runner: - bundleId: $BUNDLE_ID - productName: $APP_NAME - displayName: $APP_NAME - entitlements: - replace: true - # Workaround for https://stackoverflow.com/questions/55167611/flutter-ios-app-submission-issue-warning-missing-push-notification-entitlement - entries: - - aps-environment: development - # Uncomment to add some permissions - # plist: - # - replace: true - # entries: - # - UISupportedInterfaceOrientations: - # - UIInterfaceOrientationPortrait - -- 2.47.2 From fbf62ffe16faba6e67c029175869259cf4e77fe7 Mon Sep 17 00:00:00 2001 From: Hugo Pointcheval Date: Wed, 3 May 2023 15:45:13 +0200 Subject: [PATCH 2/4] docs: change icon --- resources/wyatt-studio-logo.png | Bin 11611 -> 31329 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/resources/wyatt-studio-logo.png b/resources/wyatt-studio-logo.png index 322633e83a745133b19a6feb60ac34ddcdd83f33..8292626e5f6cf344a96f565c4270d7af21b0b192 100644 GIT binary patch literal 31329 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

-or}93CXx@|LO*)x&#M| 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%0AFsY?F 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 literal 11611 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 CYmw>z -- 2.47.2 From 21e304e77605b36b1dd53d2b14b16091e5ca3e21 Mon Sep 17 00:00:00 2001 From: Hugo Pointcheval Date: Wed, 3 May 2023 15:47:20 +0200 Subject: [PATCH 3/4] feat(app): upgrade app brick --- .../wyatt_app_template/__brick__/.env.example | 0 bricks/wyatt_app_template/__brick__/README.md | 77 ++++++------ .../__brick__/analysis_options.yaml | 4 +- .../__brick__/automation/build.yml | 4 +- .../__brick__/automation/generator.yml | 7 -- .../__brick__/automation/run.yml | 33 +---- .../wyatt_app_template/__brick__/config.json | 8 ++ .../__brick__/lib/bootstrap.dart | 5 +- .../lib/core/constants/emulator.dart | 12 +- .../lib/core/dependency_injection/get_it.dart | 40 +++--- .../__brick__/lib/core/enums/build_mode.dart | 31 +++++ .../__brick__/lib/core/enums/dev_mode.dart | 9 +- .../lib/core/enums/page_protection.dart | 26 ++++ .../core/extensions/go_route_extension.dart | 53 ++++++++ .../__brick__/lib/core/flavors/flavor.dart | 62 +++++---- .../core/routes/go_router_refresh_stream.dart | 40 ++++++ .../__brick__/lib/core/routes/router.dart | 65 +++++----- .../lib/core/utils/firebase_emulator.dart | 61 +++++++++ .../data/models/integer_model.freezed.dart | 5 - .../__brick__/lib/gen/assets.gen.dart | 13 +- .../__brick__/lib/gen/colors.gen.dart | 2 +- .../__brick__/lib/main_development.dart | 2 +- .../__brick__/lib/main_production.dart | 2 +- .../__brick__/lib/main_staging.dart | 2 +- .../lib/presentation/features/app/app.dart | 74 +++++------ .../shared/widgets/flavor_banner.dart | 73 +++++++++++ .../wyatt_app_template/__brick__/package.json | 5 - .../wyatt_app_template/__brick__/pubspec.yaml | 118 ++++++++---------- .../wyatt_app_template/__brick__/trapeze.yaml | 36 ------ 29 files changed, 546 insertions(+), 323 deletions(-) delete mode 100644 bricks/wyatt_app_template/__brick__/.env.example create mode 100644 bricks/wyatt_app_template/__brick__/config.json create mode 100644 bricks/wyatt_app_template/__brick__/lib/core/enums/build_mode.dart create mode 100644 bricks/wyatt_app_template/__brick__/lib/core/enums/page_protection.dart create mode 100644 bricks/wyatt_app_template/__brick__/lib/core/extensions/go_route_extension.dart create mode 100644 bricks/wyatt_app_template/__brick__/lib/core/routes/go_router_refresh_stream.dart create mode 100644 bricks/wyatt_app_template/__brick__/lib/core/utils/firebase_emulator.dart create mode 100644 bricks/wyatt_app_template/__brick__/lib/presentation/shared/widgets/flavor_banner.dart delete mode 100644 bricks/wyatt_app_template/__brick__/package.json delete mode 100644 bricks/wyatt_app_template/__brick__/trapeze.yaml diff --git a/bricks/wyatt_app_template/__brick__/.env.example b/bricks/wyatt_app_template/__brick__/.env.example deleted file mode 100644 index e69de29..0000000 diff --git a/bricks/wyatt_app_template/__brick__/README.md b/bricks/wyatt_app_template/__brick__/README.md index 7bdb1d6..e6f9a20 100644 --- a/bricks/wyatt_app_template/__brick__/README.md +++ b/bricks/wyatt_app_template/__brick__/README.md @@ -6,54 +6,55 @@ * Flutter * Taskfile -* Trapeze (with `npm install` thanks to `package.json`) ### Configuration -Create `.env` file with +At the build time, the app will read the environment variables from `config.json` file. -```sh -cp .env.example .env +The important variable is `DEV_MODE` which can be `mock` , `local` or `real` . + +```json +{ + "DEV_MODE": "local" +} ``` +> **Note** `local` can refer to a local server or a local emulator. + ### Taskfile Available tasks: -| Command | Description | Aliases | -|----|-----|-----| -| `clean` | Cleans the environment.| `cl` | -| `format` |Formats the code.| `fmt` | -| `help` |Help dialog.| `h, default` | -| `lint` |Lints the code.| `l` | -| `start-emulators` | Start needed emulators.| `emu` | -| `build:android` | Building Android APK| `build:a` | -| `build:ios` | Building iOS IPA| `build:i` | -| `gen:build` | Running build runner| `gen:b` | -| `gen:build-delete` |Running build runner with deletion of conflicting outputs| `gen:d` | -| `gen:clean` | Cleaning build runner| `gen:c` | -| `gen:intl` |Generating internationalization file| `gen:i` | -| `gen:trapeze` | Running Trapeze config| `gen:t` | -| `gen:watch` | Running build runner in watch mode| `gen:w` | -| `pub:get` | Getting latest dependencies| `pub:g` | -| `pub:outdated` |Checking for outdated dependencies| `pub:o` | -| `pub:upgrade` | Upgrading dependencies| `pub:u` | -| `pub:upgrade-major` | Upgrading dependencies| `pub:um` | -| `pub:validate` |Running dependency validator| `pub:v` | -| `run:dev` | Run app in development environment| `run:d` | -| `run:emu` | Run app in development with emulated environment| `run:e` | -| `run:logs` |Show log output for running Flutter apps| `run:l` | -| `run:mock` |Run app in development environment with mocks| `run:m` | -| `run:prod` |Run app in production environment| `run:p` | -| `run:release` | Run app in production environment and in release mode| `run:r` | -| `run:staging` | Run app in staging environment| `run:s` | +| Commande | Description | Alias | +| --- | --- | --- | +| clean | Nettoie l'environnement de travail | cl | +| format | Formate le code | fmt | +| help | Affiche la boîte de dialogue d'aide | h, default | +| lint | Vérifie la qualité du code | l | +| start-emulators | Démarre les émulateurs nécessaires | emu | +| build:android | Construit le fichier APK pour Android | build:a | +| build:ios | Construit le fichier IPA pour iOS | build:i | +| gen:build | Exécute le générateur de build | gen:b | +| gen:build-delete | Exécute le générateur de build et supprime les sorties en conflit | gen:d | +| gen:clean | Nettoie le générateur de build | gen:c | +| gen:intl | Génère un fichier d'internationalisation | gen:i | +| gen:watch | Exécute le générateur de build en mode surveillance | gen:w | +| pub:get | Obtient les dernières dépendances | pub:g | +| pub:outdated | Vérifie les dépendances obsolètes | pub:o | +| pub:upgrade | Met à jour les dépendances | pub:u | +| pub:upgrade-major | Met à jour les dépendances majeures | pub:um | +| pub:validate | Exécute le validateur de dépendances | pub:v | +| run:dev | Lance l'application en environnement de développement | run:d | +| run:logs | Affiche la sortie de journalisation pour les applications Flutter en cours d'exécution | run:l | +| run:prod | Lance l'application en environnement de production | run:p | +| run:staging | Lance l'application en environnement de pré-production | run:s | -### Flavors +### Parameters -| Flavor | Details | -|-------|--------| -| Development | Use `--dart-define="dev_mode="` to choose between `mock` , `emulator` and `real` | -| Staging | With a green banner. Only `real` mode available (remote data sources) | -| Production | Only `real` mode available (remote data sources) | +You can pass flutter options to the build and run commands. -> In `lib/core/flavors/flavor.dart` you can customize flavors. +```sh +task run:staging -- -d chrome +``` + +> **Note** The `--` is required to pass options to the command. diff --git a/bricks/wyatt_app_template/__brick__/analysis_options.yaml b/bricks/wyatt_app_template/__brick__/analysis_options.yaml index 6b75b4c..96780ca 100644 --- a/bricks/wyatt_app_template/__brick__/analysis_options.yaml +++ b/bricks/wyatt_app_template/__brick__/analysis_options.yaml @@ -11,8 +11,8 @@ dart_code_metrics: metrics: cyclomatic-complexity: 20 maximum-nesting-level: 5 - number-of-parameters: 4 - source-lines-of-code: 50 + number-of-parameters: 5 + source-lines-of-code: 250 metrics-exclude: - test/** rules: diff --git a/bricks/wyatt_app_template/__brick__/automation/build.yml b/bricks/wyatt_app_template/__brick__/automation/build.yml index 7dbc051..21e22ca 100644 --- a/bricks/wyatt_app_template/__brick__/automation/build.yml +++ b/bricks/wyatt_app_template/__brick__/automation/build.yml @@ -27,7 +27,7 @@ tasks: aliases: [a] cmds: - echo -e "{{.GREEN}}{{.PREFIX}} Building Android APK...{{.COLOROFF}}" - - flutter build lib/main_production apk --no-pub --no-shrink + - flutter build apk --target=lib/main_production --no-pub --no-shrink ios: desc: Building iOS IPA @@ -35,4 +35,4 @@ tasks: aliases: [i] cmds: - echo -e "{{.GREEN}}{{.PREFIX}} Building iOS IPA...{{.COLOROFF}}" - - flutter build lib/main_production ipa --no-pub \ No newline at end of file + - flutter build ipa --target=lib/main_production --no-pub diff --git a/bricks/wyatt_app_template/__brick__/automation/generator.yml b/bricks/wyatt_app_template/__brick__/automation/generator.yml index 33cd1ea..6c86a1a 100644 --- a/bricks/wyatt_app_template/__brick__/automation/generator.yml +++ b/bricks/wyatt_app_template/__brick__/automation/generator.yml @@ -54,10 +54,3 @@ tasks: cmds: - echo -e "{{.GREEN}}{{.PREFIX}} Running build runner in watch mode...{{.COLOROFF}}" - flutter pub run build_runner watch - - trapeze: - desc: Running Trapeze config - aliases: [t] - cmds: - - echo -e "{{.GREEN}}{{.PREFIX}} Running Trapeze config...{{.COLOROFF}}" - - npx trapeze run trapeze.yaml --android-project android --ios-project ios diff --git a/bricks/wyatt_app_template/__brick__/automation/run.yml b/bricks/wyatt_app_template/__brick__/automation/run.yml index 3b1eb77..0ddc9c4 100644 --- a/bricks/wyatt_app_template/__brick__/automation/run.yml +++ b/bricks/wyatt_app_template/__brick__/automation/run.yml @@ -16,44 +16,23 @@ tasks: - echo -e "{{.GREEN}}{{.PREFIX}} Showing log output for running Flutter apps...{{.COLOROFF}}" - flutter logs - mock: - desc: Run app in development environment with mocks - aliases: [m] - cmds: - - echo -e "{{.GREEN}}{{.PREFIX}} Running the app (development/debug:mocks)...{{.COLOROFF}}" - - flutter run --target lib/main_development.dart --dart-define="dev_mode=mock" - - emu: - desc: Run app in development with emulated environment - aliases: [e] - cmds: - - echo -e "{{.GREEN}}{{.PREFIX}} Running the app (development/debug:emulator)...{{.COLOROFF}}" - - flutter run --target lib/main_development.dart --dart-define="dev_mode=emulator" - dev: desc: Run app in development environment aliases: [d] cmds: - - echo -e "{{.GREEN}}{{.PREFIX}} Running the app (development/debug:real)...{{.COLOROFF}}" - - flutter run --target lib/main_development.dart --dart-define="dev_mode=real" + - echo -e "{{.GREEN}}{{.PREFIX}} Running the app (development)...{{.COLOROFF}}" + - flutter run --target lib/main_development.dart --dart-define-from-file=config.json {{.CLI_ARGS}} staging: desc: Run app in staging environment aliases: [s] cmds: - - echo -e "{{.GREEN}}{{.PREFIX}} Running the app (staging/debug)...{{.COLOROFF}}" - - flutter run --target lib/main_staging.dart + - echo -e "{{.GREEN}}{{.PREFIX}} Running the app (staging)...{{.COLOROFF}}" + - flutter run --target lib/main_staging.dart --dart-define-from-file=config.json {{.CLI_ARGS}} prod: desc: Run app in production environment aliases: [p] cmds: - - echo -e "{{.GREEN}}{{.PREFIX}} Running the app (production/debug)...{{.COLOROFF}}" - - flutter run --target lib/main_production.dart - - release: - desc: Run app in production environment and in release mode - aliases: [r] - cmds: - - echo -e "{{.GREEN}}{{.PREFIX}} Running the app (production/release)...{{.COLOROFF}}" - - flutter run --target lib/main_production.dart --release + - echo -e "{{.GREEN}}{{.PREFIX}} Running the app (production)...{{.COLOROFF}}" + - flutter run --target lib/main_production.dart --dart-define-from-file=config.json {{.CLI_ARGS}} diff --git a/bricks/wyatt_app_template/__brick__/config.json b/bricks/wyatt_app_template/__brick__/config.json new file mode 100644 index 0000000..356801b --- /dev/null +++ b/bricks/wyatt_app_template/__brick__/config.json @@ -0,0 +1,8 @@ +{ + "FIREBASE_EMULATOR_CLOUD_FUNCTION_PORT": 5001, + "FIREBASE_EMULATOR_FIRESTORE_PORT": 8080, + "FIREBASE_EMULATOR_AUTH_PORT": 9099, + "FIREBASE_EMULATOR_STORAGE_PORT": 919911, + "FIREBASE_EMULATOR_HOST": "localhost", + "DEV_MODE": "local" +} diff --git a/bricks/wyatt_app_template/__brick__/lib/bootstrap.dart b/bricks/wyatt_app_template/__brick__/lib/bootstrap.dart index 7f454b7..38f7462 100644 --- a/bricks/wyatt_app_template/__brick__/lib/bootstrap.dart +++ b/bricks/wyatt_app_template/__brick__/lib/bootstrap.dart @@ -7,12 +7,11 @@ import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/flavors/flavor import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/utils/app_bloc_observer.dart'; Future bootstrap(FutureOr Function() builder) async { - final widgetsBinding = WidgetsFlutterBinding.ensureInitialized(); - // FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding); + WidgetsFlutterBinding.ensureInitialized(); Bloc.observer = AppBlocObserver(); - debugPrint('Flavor: ${Flavor.get()}'); + debugPrint('${Flavor.instance}'); await GetItInitializer.init(); diff --git a/bricks/wyatt_app_template/__brick__/lib/core/constants/emulator.dart b/bricks/wyatt_app_template/__brick__/lib/core/constants/emulator.dart index 00258ff..0097c95 100644 --- a/bricks/wyatt_app_template/__brick__/lib/core/constants/emulator.dart +++ b/bricks/wyatt_app_template/__brick__/lib/core/constants/emulator.dart @@ -1,14 +1,14 @@ /// Firebase Emulator constants. -/// +/// /// If you don't use Firebase, it can be safely deleted. abstract class Emulator { static const String firebaseCloudFunctionEnvKey = - 'EMULATOR_FIREBASE_CLOUD_FUNCTION_PORT'; + 'FIREBASE_EMULATOR_CLOUD_FUNCTION_PORT'; static const String firebaseFirestoreEnvKey = - 'EMULATOR_FIREBASE_FIRESTORE_PORT'; - static const String firebaseAuthEnvKey = 'EMULATOR_FIREBASE_AUTH_PORT'; - static const String firebaseStorageEnvKey = 'EMULATOR_FIREBASE_STORAGE_PORT'; - static const String hostEnvKey = 'EMULATOR_HOST'; + 'FIREBASE_EMULATOR_FIRESTORE_PORT'; + static const String firebaseAuthEnvKey = 'FIREBASE_EMULATOR_AUTH_PORT'; + static const String firebaseStorageEnvKey = 'FIREBASE_EMULATOR_STORAGE_PORT'; + static const String hostEnvKey = 'FIREBASE_EMULATOR_HOST'; static const int defaultFirebaseCloudFunctionPort = 5001; static const int defaultFirebaseFirestorePort = 8080; diff --git a/bricks/wyatt_app_template/__brick__/lib/core/dependency_injection/get_it.dart b/bricks/wyatt_app_template/__brick__/lib/core/dependency_injection/get_it.dart index 3ed791e..5c1103c 100644 --- a/bricks/wyatt_app_template/__brick__/lib/core/dependency_injection/get_it.dart +++ b/bricks/wyatt_app_template/__brick__/lib/core/dependency_injection/get_it.dart @@ -1,38 +1,50 @@ import 'dart:async'; +import 'package:flutter/foundation.dart'; import 'package:get_it/get_it.dart'; import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/enums/dev_mode.dart'; import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/flavors/flavor.dart'; -import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/data/data_sources/local/counter_data_source_impl.dart'; -import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/domain/data_sources/local/counter_data_source.dart'; +import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/utils/firebase_emulator.dart'; final getIt = GetIt.I; /// Service and Data Source locator abstract class GetItInitializer { static FutureOr _initCommon() async { - // Initialize common sources/services - getIt.registerLazySingleton( - CounterDataSourceImpl.new, - ); + // TODO(wyatt): Initialize common sources/services } - static FutureOr _initMocks() async { - // Initialize mocked sources/services. + static FutureOr _initMock() async { + // TODO(wyatt): Initialize mocked sources/services. + } + + static FutureOr _initLocal() async { + // TODO(wyatt): Initialize local sources/services. + final emulator = FirebaseEmulator.fromEnv(); + debugPrint('Firebase Emulator: $emulator'); } static FutureOr _initReal() async { - // Initialize real sources/services + // TODO(wyatt): Initialize real sources/services } static FutureOr init() async { + // Initialize common sources/services await _initCommon(); - final flavor = Flavor.get(); - if (flavor.devMode == DevMode.mock) { - await _initMocks(); - } else { - await _initReal(); + // Initialize sources/services based on flavor + switch (Flavor.instance.devMode) { + case DevMode.mock: + await _initMock(); + break; + case DevMode.local: + await _initLocal(); + break; + case DevMode.real: + await _initReal(); + break; + case null: + throw Exception('DevMode not initialized!'); } await getIt.allReady(); diff --git a/bricks/wyatt_app_template/__brick__/lib/core/enums/build_mode.dart b/bricks/wyatt_app_template/__brick__/lib/core/enums/build_mode.dart new file mode 100644 index 0000000..0aa4421 --- /dev/null +++ b/bricks/wyatt_app_template/__brick__/lib/core/enums/build_mode.dart @@ -0,0 +1,31 @@ +enum BuildMode { + /// Debug build mode. Pass `--debug` to `flutter run` or `flutter build` to + /// use this mode. + debug, + + /// Release build mode. Pass `--profile` to `flutter run` or `flutter build` + /// to use this mode. + profile, + + /// Release build mode. Pass `--release` to `flutter run` or `flutter build` + /// to use this mode. + release; + + @override + String toString() => name; + + /// Tries to parse String and returns mode. Fallback is returned if there + /// is an error during parsing. + static BuildMode fromString( + String? mode, { + BuildMode fallback = BuildMode.debug, + }) { + for (final m in values) { + if (m.name == mode) { + return m; + } + } + + return fallback; + } +} diff --git a/bricks/wyatt_app_template/__brick__/lib/core/enums/dev_mode.dart b/bricks/wyatt_app_template/__brick__/lib/core/enums/dev_mode.dart index bd4ad84..3a628f9 100644 --- a/bricks/wyatt_app_template/__brick__/lib/core/enums/dev_mode.dart +++ b/bricks/wyatt_app_template/__brick__/lib/core/enums/dev_mode.dart @@ -1,12 +1,17 @@ enum DevMode { + /// Mocked data sources and services mock, - emulator, + + /// Local data sources and services, like local database, or firebase emulator + local, + + /// Real data sources and services, like firebase or other cloud services real; @override String toString() => name; - /// Tries to parse String and returns mode. Fallback is returned if there + /// Tries to parse String and returns mode. Fallback is returned if there /// is an error during parsing. static DevMode fromString(String? mode, {DevMode fallback = DevMode.mock}) { for (final m in values) { diff --git a/bricks/wyatt_app_template/__brick__/lib/core/enums/page_protection.dart b/bricks/wyatt_app_template/__brick__/lib/core/enums/page_protection.dart new file mode 100644 index 0000000..63a846d --- /dev/null +++ b/bricks/wyatt_app_template/__brick__/lib/core/enums/page_protection.dart @@ -0,0 +1,26 @@ +// Copyright (C) 2023 WYATT GROUP +// Please see the AUTHORS file for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +enum PageProtection { + /// The page can be accessed without authentication. + public, + + /// The page can only be accessed with authentication. + protected, + + /// The page protection is unknown, and the default one should be used. + none, +} diff --git a/bricks/wyatt_app_template/__brick__/lib/core/extensions/go_route_extension.dart b/bricks/wyatt_app_template/__brick__/lib/core/extensions/go_route_extension.dart new file mode 100644 index 0000000..98361cc --- /dev/null +++ b/bricks/wyatt_app_template/__brick__/lib/core/extensions/go_route_extension.dart @@ -0,0 +1,53 @@ +// Copyright (C) 2023 WYATT GROUP +// Please see the AUTHORS file for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +import 'package:go_router/go_router.dart'; +import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/enums/page_protection.dart'; + +/// Defines if a GoRoute is public or not. +/// +/// By default, all routes are in the [PageProtection.none] state. +extension GoRouteGuard on GoRoute { + static final _guard = Expando(); + + /// Returns `true` if the route is public. + bool get isPublic => _guard[this] == PageProtection.public; + + /// Returns `true` if the route is protected. + bool get isProtected => _guard[this] == PageProtection.protected; + + /// Returns `true` if the route is neither public nor protected. + /// This is the default state. + bool get isNone => _guard[this] == PageProtection.none; + + /// Sets the route to be public. + /// This is useful for routes that should be accessible + /// without authentication. + /// ```dart + /// GoRoute( + /// path: '/sign_in', + /// ... + /// )..setPublic(), + /// ``` + void setPublic() => _guard[this] = PageProtection.public; + + /// Sets the route to be protected. + /// This is useful for routes that should only be accessible + /// with authentication. + void setProtected() => _guard[this] = PageProtection.protected; + + PageProtection get guard => _guard[this] ?? PageProtection.none; +} diff --git a/bricks/wyatt_app_template/__brick__/lib/core/flavors/flavor.dart b/bricks/wyatt_app_template/__brick__/lib/core/flavors/flavor.dart index 60f1f8c..dcb29a3 100644 --- a/bricks/wyatt_app_template/__brick__/lib/core/flavors/flavor.dart +++ b/bricks/wyatt_app_template/__brick__/lib/core/flavors/flavor.dart @@ -1,23 +1,38 @@ +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/enums/build_mode.dart'; import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/enums/dev_mode.dart'; -abstract class Flavor { +class Flavor { Flavor._({ - this.banner, - this.bannerColor = Colors.red, - this.devMode, + this.flavorName, + this.bannerColor, }) { + // Determine build mode + buildMode = kReleaseMode + ? BuildMode.release + : kProfileMode + ? BuildMode.profile + : BuildMode.debug; + + // Retrieve dev mode, fallback to mock + devMode = DevMode.fromString( + const String.fromEnvironment('DEV_MODE', defaultValue: 'mock'), + ); + _instance = this; } static Flavor? _instance; - final String? banner; - final Color bannerColor; - final DevMode? devMode; + final String? flavorName; + final Color? bannerColor; + + late final DevMode? devMode; + late final BuildMode? buildMode; /// Returns [Flavor] instance. - static Flavor get() { + static Flavor get instance { if (_instance == null) { throw Exception('Flavor not initialized!'); } @@ -25,33 +40,26 @@ abstract class Flavor { return _instance!; } + String get name => flavorName ?? 'Unknown'; + Color get color => bannerColor ?? Colors.grey; + + static bool shouldShowBanner() => instance.buildMode != BuildMode.release; + @override - String toString() => runtimeType.toString().replaceAll('Flavor', ''); + String toString() => + 'Flavor: $flavorName, DevMode: $devMode, BuildMode: $buildMode'; } class DevelopmentFlavor extends Flavor { - factory DevelopmentFlavor() { - const modeString = String.fromEnvironment('dev_mode', defaultValue: 'mock'); - final mode = DevMode.fromString(modeString); - - return DevelopmentFlavor._(devMode: mode); - } - DevelopmentFlavor._({ - required DevMode devMode, - }) : super._( - banner: 'Dev', - devMode: devMode, - ); + DevelopmentFlavor() + : super._(flavorName: 'Development', bannerColor: Colors.red); } class StagingFlavor extends Flavor { - StagingFlavor() - : super._( - banner: 'Staging', - bannerColor: Colors.green, - ); + StagingFlavor() : super._(flavorName: 'Staging', bannerColor: Colors.orange); } class ProductionFlavor extends Flavor { - ProductionFlavor() : super._(); + ProductionFlavor() + : super._(flavorName: 'Production', bannerColor: Colors.green); } diff --git a/bricks/wyatt_app_template/__brick__/lib/core/routes/go_router_refresh_stream.dart b/bricks/wyatt_app_template/__brick__/lib/core/routes/go_router_refresh_stream.dart new file mode 100644 index 0000000..b37ca83 --- /dev/null +++ b/bricks/wyatt_app_template/__brick__/lib/core/routes/go_router_refresh_stream.dart @@ -0,0 +1,40 @@ +// Copyright (C) 2023 WYATT GROUP +// Please see the AUTHORS file for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +import 'dart:async'; + +import 'package:flutter/foundation.dart'; + +/// {@template go_router_refresh_stream} +/// A [ChangeNotifier] that notifies its listeners when a stream emits a value. +/// {@endtemplate} +class GoRouterRefreshStream extends ChangeNotifier { + /// {@macro go_router_refresh_stream} + GoRouterRefreshStream(Stream stream) { + notifyListeners(); + _subscription = stream.asBroadcastStream().listen( + (dynamic _) => notifyListeners(), + ); + } + + late final StreamSubscription _subscription; + + @override + void dispose() { + _subscription.cancel(); + super.dispose(); + } +} diff --git a/bricks/wyatt_app_template/__brick__/lib/core/routes/router.dart b/bricks/wyatt_app_template/__brick__/lib/core/routes/router.dart index 49679ce..014a959 100644 --- a/bricks/wyatt_app_template/__brick__/lib/core/routes/router.dart +++ b/bricks/wyatt_app_template/__brick__/lib/core/routes/router.dart @@ -1,6 +1,8 @@ import 'package:flutter/cupertino.dart'; import 'package:go_router/go_router.dart'; -import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/presentation/features/counter/counter.dart'; +import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/enums/page_protection.dart'; +import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/extensions/go_route_extension.dart'; +import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/routes/go_router_refresh_stream.dart'; import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/presentation/features/home/home.dart'; abstract class AppRouter { @@ -10,10 +12,7 @@ abstract class AppRouter { GoRouterState state, Widget child, ) => - CupertinoPage( - key: state.pageKey, - child: child, - ); + CupertinoPage(key: state.pageKey, child: child); /// Disable transition animation static Page noTransition( @@ -21,23 +20,7 @@ abstract class AppRouter { GoRouterState state, Widget child, ) => - CustomTransitionPage( - key: state.pageKey, - transitionsBuilder: (_, __, ___, child) => child, - child: child, - ); - - /// Defines public routes (no authentication needed). - /// - /// Example: - /// ```dart - /// static final publicRoutes = [ - /// '/', - /// '/sign_in', - /// '/sign_up', - /// ]; - /// ``` - static final List publicRoutes = []; + NoTransitionPage(key: state.pageKey, child: child); /// Defines GoRoute routes. static final List routes = [ @@ -46,20 +29,32 @@ abstract class AppRouter { name: Home.pageName, pageBuilder: (context, state) => defaultTransition(context, state, const Home()), - ), - GoRoute( - path: '/counter', - name: Counter.pageName, - pageBuilder: (context, state) => - defaultTransition(context, state, const Counter()), - ), + )..setPublic(), ]; /// Router - static GoRouter router = GoRouter( - initialLocation: '/', - routes: AppRouter.routes, - debugLogDiagnostics: true, - redirect: (context, state) => null, - ); + static GoRouter routerOf(BuildContext context) => GoRouter( + initialLocation: '/', + routes: AppRouter.routes, + debugLogDiagnostics: true, + // TODO(wyatt): Add authentication logic + redirect: (context, state) { + /// Define the default guard + /// This is the guard that will be used if the route + /// does not have a guard set. (It is set to [PageProtection.none]) + const defaultGuard = PageProtection.protected; + + // Compute current route + // Compute current route + final currentRoute = AppRouter.routes.firstWhere( + (route) => route.path == state.location, + ); + + // Get the guard of the current route + final guard = currentRoute.guard; + + return null; + }, + refreshListenable: GoRouterRefreshStream(const Stream.empty()), + ); } diff --git a/bricks/wyatt_app_template/__brick__/lib/core/utils/firebase_emulator.dart b/bricks/wyatt_app_template/__brick__/lib/core/utils/firebase_emulator.dart new file mode 100644 index 0000000..157880d --- /dev/null +++ b/bricks/wyatt_app_template/__brick__/lib/core/utils/firebase_emulator.dart @@ -0,0 +1,61 @@ +// Copyright (C) 2023 WYATT GROUP +// Please see the AUTHORS file for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/constants/emulator.dart'; + +class FirebaseEmulator { + const FirebaseEmulator._({ + required this.cloudFunctionPort, + required this.firestorePort, + required this.authPort, + required this.storagePort, + required this.host, + }); + + factory FirebaseEmulator.fromEnv() => const FirebaseEmulator._( + cloudFunctionPort: int.fromEnvironment( + Emulator.firebaseCloudFunctionEnvKey, + defaultValue: Emulator.defaultFirebaseCloudFunctionPort, + ), + firestorePort: int.fromEnvironment( + Emulator.firebaseFirestoreEnvKey, + defaultValue: Emulator.defaultFirebaseFirestorePort, + ), + authPort: int.fromEnvironment( + Emulator.firebaseAuthEnvKey, + defaultValue: Emulator.defaultFirebaseAuthPort, + ), + storagePort: int.fromEnvironment( + Emulator.firebaseStorageEnvKey, + defaultValue: Emulator.defaultFirebaseStoragePort, + ), + host: String.fromEnvironment( + Emulator.hostEnvKey, + defaultValue: Emulator.defaultHost, + ), + ); + + final int cloudFunctionPort; + final int firestorePort; + final int authPort; + final int storagePort; + final String host; + + @override + String toString() => 'FirebaseEmulator(cloudFunctionPort: ' + '$cloudFunctionPort, firestorePort: $firestorePort, authPort: $authPort, ' + 'storagePort: $storagePort, host: $host)'; +} diff --git a/bricks/wyatt_app_template/__brick__/lib/data/models/integer_model.freezed.dart b/bricks/wyatt_app_template/__brick__/lib/data/models/integer_model.freezed.dart index bed9972..2fbb008 100644 --- a/bricks/wyatt_app_template/__brick__/lib/data/models/integer_model.freezed.dart +++ b/bricks/wyatt_app_template/__brick__/lib/data/models/integer_model.freezed.dart @@ -105,11 +105,6 @@ class _$_IntegerModel implements _IntegerModel { @override final int value; - @override - String toString() { - return 'IntegerModel(value: $value)'; - } - @override bool operator ==(dynamic other) { return identical(this, other) || diff --git a/bricks/wyatt_app_template/__brick__/lib/gen/assets.gen.dart b/bricks/wyatt_app_template/__brick__/lib/gen/assets.gen.dart index 3deea52..2bc44eb 100644 --- a/bricks/wyatt_app_template/__brick__/lib/gen/assets.gen.dart +++ b/bricks/wyatt_app_template/__brick__/lib/gen/assets.gen.dart @@ -5,7 +5,7 @@ // coverage:ignore-file // ignore_for_file: type=lint -// ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal +// ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal,deprecated_member_use import 'package:flutter/widgets.dart'; @@ -84,7 +84,16 @@ class AssetGenImage { ); } - ImageProvider provider() => AssetImage(_assetName); + ImageProvider provider({ + AssetBundle? bundle, + String? package, + }) { + return AssetImage( + _assetName, + bundle: bundle, + package: package, + ); + } String get path => _assetName; diff --git a/bricks/wyatt_app_template/__brick__/lib/gen/colors.gen.dart b/bricks/wyatt_app_template/__brick__/lib/gen/colors.gen.dart index 7140be2..9fb3e59 100644 --- a/bricks/wyatt_app_template/__brick__/lib/gen/colors.gen.dart +++ b/bricks/wyatt_app_template/__brick__/lib/gen/colors.gen.dart @@ -5,7 +5,7 @@ // coverage:ignore-file // ignore_for_file: type=lint -// ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal +// ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal,deprecated_member_use import 'package:flutter/painting.dart'; import 'package:flutter/material.dart'; diff --git a/bricks/wyatt_app_template/__brick__/lib/main_development.dart b/bricks/wyatt_app_template/__brick__/lib/main_development.dart index d327e4d..602ad95 100644 --- a/bricks/wyatt_app_template/__brick__/lib/main_development.dart +++ b/bricks/wyatt_app_template/__brick__/lib/main_development.dart @@ -3,7 +3,7 @@ import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/flavors/flavor import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/presentation/features/app/app.dart'; void main(List args) { - // Define environment + // Define flavor DevelopmentFlavor(); // Initialize environment and variables diff --git a/bricks/wyatt_app_template/__brick__/lib/main_production.dart b/bricks/wyatt_app_template/__brick__/lib/main_production.dart index f5f0bb4..4d355ab 100644 --- a/bricks/wyatt_app_template/__brick__/lib/main_production.dart +++ b/bricks/wyatt_app_template/__brick__/lib/main_production.dart @@ -3,7 +3,7 @@ import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/flavors/flavor import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/presentation/features/app/app.dart'; void main(List args) { - // Define environment + // Define flavor ProductionFlavor(); // Initialize environment and variables diff --git a/bricks/wyatt_app_template/__brick__/lib/main_staging.dart b/bricks/wyatt_app_template/__brick__/lib/main_staging.dart index d2d8017..9e8a7d4 100644 --- a/bricks/wyatt_app_template/__brick__/lib/main_staging.dart +++ b/bricks/wyatt_app_template/__brick__/lib/main_staging.dart @@ -3,7 +3,7 @@ import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/flavors/flavor import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/presentation/features/app/app.dart'; void main(List args) { - // Define environment + // Define flavor StagingFlavor(); // Initialize environment and variables diff --git a/bricks/wyatt_app_template/__brick__/lib/presentation/features/app/app.dart b/bricks/wyatt_app_template/__brick__/lib/presentation/features/app/app.dart index 510bf9c..917a6d5 100644 --- a/bricks/wyatt_app_template/__brick__/lib/presentation/features/app/app.dart +++ b/bricks/wyatt_app_template/__brick__/lib/presentation/features/app/app.dart @@ -1,63 +1,47 @@ -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/dependency_injection/get_it.dart'; -import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/flavors/flavor.dart'; import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/routes/router.dart'; import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/data/repositories/counter_repository_impl.dart'; import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/domain/repositories/counter_repository.dart'; import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/gen/app_localizations.dart'; import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/presentation/features/counter/blocs/counter_bloc/counter_bloc.dart'; +import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/presentation/shared/widgets/flavor_banner.dart'; import 'package:wyatt_bloc_helper/wyatt_bloc_helper.dart'; class App extends StatelessWidget { const App({super.key}); - Widget _flavorBanner(Widget child) { - final flavor = Flavor.get(); - if (flavor.banner != null && !kReleaseMode) { - return Directionality( - textDirection: TextDirection.ltr, - child: Banner( - location: BannerLocation.topEnd, - message: flavor.banner!, - color: flavor.bannerColor, - child: child, - ), - ); - } - - return child; - } - @override Widget build(BuildContext context) => MultiProvider( - repositoryProviders: [ - RepositoryProvider( - create: (_) => CounterRepositoryImpl(counterDataSource: getIt()), + repositoryProviders: [ + RepositoryProvider( + create: (_) => CounterRepositoryImpl(counterDataSource: getIt()), + ), + ], + blocProviders: [ + BlocProvider( + create: (_) => CounterBloc(), + ), + ], + child: FlavorBanner( + child: MaterialApp.router( + title: '{{#titleCase}}{{display_name}}{{/titleCase}}', + debugShowCheckedModeBanner: false, + routerDelegate: AppRouter.routerOf(context).routerDelegate, + routeInformationParser: + AppRouter.routerOf(context).routeInformationParser, + routeInformationProvider: + AppRouter.routerOf(context).routeInformationProvider, + localizationsDelegates: const [ + AppLocalizations.delegate, + GlobalMaterialLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + ], + supportedLocales: AppLocalizations.supportedLocales, + ), ), - ], - blocProviders: [ - BlocProvider( - create: (_) => CounterBloc(), - ), - ], - child: _flavorBanner( - MaterialApp.router( - title: '{{#titleCase}}{{display_name}}{{/titleCase}}', - debugShowCheckedModeBanner: false, - routerDelegate: AppRouter.router.routerDelegate, - routeInformationParser: AppRouter.router.routeInformationParser, - routeInformationProvider: AppRouter.router.routeInformationProvider, - localizationsDelegates: const [ - AppLocalizations.delegate, - GlobalMaterialLocalizations.delegate, - GlobalWidgetsLocalizations.delegate, - GlobalCupertinoLocalizations.delegate, - ], - supportedLocales: AppLocalizations.supportedLocales, - ), - ), - ); + ); } diff --git a/bricks/wyatt_app_template/__brick__/lib/presentation/shared/widgets/flavor_banner.dart b/bricks/wyatt_app_template/__brick__/lib/presentation/shared/widgets/flavor_banner.dart new file mode 100644 index 0000000..e3b85c6 --- /dev/null +++ b/bricks/wyatt_app_template/__brick__/lib/presentation/shared/widgets/flavor_banner.dart @@ -0,0 +1,73 @@ +// Copyright (C) 2023 WYATT GROUP +// Please see the AUTHORS file for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +import 'package:flutter/material.dart'; +import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/flavors/flavor.dart'; + +/// {@template flavor_banner} +/// A banner that displays the current flavor. +/// This is useful for quickly identifying which flavor is currently running. +/// +/// When [Flavor.shouldShowBanner] is `false`, this widget will return [child]. +/// You can also override this behavior by setting [visible] to `true`. +/// +/// Wrap your [MaterialApp] with this widget to display the banner. +/// +/// Example: +/// +/// ```dart +/// FlavorBanner( +/// visible: true, // or null to use Flavor.shouldShowBanner() +/// child: const MaterialApp( +/// title: 'Starting Template', +/// ... +/// ), +/// ); +/// ``` +/// {@endtemplate} +class FlavorBanner extends StatelessWidget { + const FlavorBanner({ + this.child, + this.visible, + super.key, + }); + + final Widget? child; + + /// Defaults to [Flavor.shouldShowBanner]. + final bool? visible; + + @override + Widget build(BuildContext context) { + final visible = this.visible ?? Flavor.shouldShowBanner(); + + if (!visible) { + return child ?? const SizedBox.shrink(); + } + + final flavor = Flavor.instance; + + return Directionality( + textDirection: TextDirection.ltr, + child: Banner( + location: BannerLocation.topEnd, + message: flavor.name, + color: flavor.color, + child: child, + ), + ); + } +} diff --git a/bricks/wyatt_app_template/__brick__/package.json b/bricks/wyatt_app_template/__brick__/package.json deleted file mode 100644 index 3c8f622..0000000 --- a/bricks/wyatt_app_template/__brick__/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "dependencies": { - "@trapezedev/configure": "^7.0.5" - } -} diff --git a/bricks/wyatt_app_template/__brick__/pubspec.yaml b/bricks/wyatt_app_template/__brick__/pubspec.yaml index b96a2a5..55cdb5c 100644 --- a/bricks/wyatt_app_template/__brick__/pubspec.yaml +++ b/bricks/wyatt_app_template/__brick__/pubspec.yaml @@ -1,90 +1,82 @@ name: {{#snakeCase}}{{project_name}}{{/snakeCase}} -description: {{#sentenceCase}}{{description}}{{/sentenceCase}} - -publish_to: "none" - version: 1.0.0+1 - -environment: - sdk: ">=2.18.0 <3.0.0" - flutter: ">=3.0.0" - -dependencies: - flutter: { sdk: flutter } - flutter_localizations: { sdk: flutter } - intl: ^0.17.0 - go_router: ^6.0.1 - equatable: ^2.0.5 - freezed_annotation: ^2.2.0 - json_annotation: ^4.8.0 +publish_to: none +description: {{#sentenceCase}}{{description}}{{/sentenceCase}} +environment: + sdk: '>=2.18.0 <3.0.0' + flutter: '>=3.0.0' +dependencies: cupertino_icons: ^1.0.5 - get_it: ^7.2.0 - flutter_dotenv: ^5.0.2 - gap: ^2.0.1 + equatable: ^2.0.5 flutter_bloc: ^8.1.1 + flutter_native_splash: ^2.2.15 + freezed_annotation: ^2.2.0 + gap: ^2.0.1 + get_it: ^7.2.0 + go_router: ^6.0.1 + intl: ^0.17.0 + json_annotation: ^4.8.0 url_launcher: ^6.1.7 uuid: ^3.0.7 - flutter_native_splash: ^2.2.15 - wyatt_architecture: - hosted: - url: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/ + flutter: + sdk: flutter + flutter_localizations: + sdk: flutter + wyatt_architecture: + version: ^0.2.0 + hosted: name: wyatt_architecture - version: 0.1.0+1 - wyatt_bloc_helper: - hosted: url: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/ + wyatt_bloc_helper: + version: ^2.0.1 + hosted: name: wyatt_bloc_helper - version: 2.0.0 - wyatt_type_utils: - hosted: url: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/ + wyatt_type_utils: + version: ^0.0.5 + hosted: name: wyatt_type_utils - version: 0.0.4 - -dev_dependencies: - flutter_test: { sdk: flutter } - dependency_validator: ^3.2.2 + url: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/ +dev_dependencies: build_runner: ^2.3.3 + dart_code_metrics: ^5.4.0 + dependency_validator: ^3.2.2 flutter_gen_runner: ^5.1.0+1 + flutter_launcher_icons: ^0.11.0 freezed: ^2.3.2 json_serializable: ^6.6.0 - flutter_launcher_icons: ^0.11.0 - dart_code_metrics: ^5.4.0 + pubspec_dependency_sorter: ^1.0.3 rename: ^2.1.1 - wyatt_analysis: - hosted: - url: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/ + flutter_test: + sdk: flutter + wyatt_analysis: + version: ^2.5.0 + hosted: name: wyatt_analysis - version: 2.4.1 - -flutter: - uses-material-design: true - generate: true - assets: - - .env + url: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/ +flutter: + assets: - assets/images/ - -flutter_gen: + uses-material-design: true +flutter_gen: output: lib/gen/ - integrations: + integrations: flutter_svg: true flare_flutter: true rive: true lottie: true - colors: - inputs: + colors: + inputs: - assets/colors.xml - -flutter_icons: - android: "launcher_icon" - ios: true - image_path: "assets/images/wyatt_logo.jpeg" - adaptive_icon_background: "#FFFFFF" - -flutter_native_splash: - image: "assets/images/wyatt_logo.jpeg" - color: "#FFFFFF" - android: true +flutter_icons: + android: launcher_icon + image_path: assets/images/wyatt_logo.jpeg + adaptive_icon_background: '#FFFFFF' ios: true +flutter_native_splash: + image: assets/images/wyatt_logo.jpeg + color: '#FFFFFF' android_gravity: fill ios_content_mode: scaleAspectFit + android: true + ios: true diff --git a/bricks/wyatt_app_template/__brick__/trapeze.yaml b/bricks/wyatt_app_template/__brick__/trapeze.yaml deleted file mode 100644 index 2177b57..0000000 --- a/bricks/wyatt_app_template/__brick__/trapeze.yaml +++ /dev/null @@ -1,36 +0,0 @@ -vars: - PACKAGE_NAME: - default: {{#snakeCase}}{{project_name}}{{/snakeCase}} - BUNDLE_ID: - default: {{#dotCase}}{{bundle_id}}{{/dotCase}} - APP_NAME: - default: {{#titleCase}}{{display_name}}{{/titleCase}} - -platforms: - android: - appName: $APP_NAME - packageName: $BUNDLE_ID - # Uncomment to add some permissions - # manifest: - # - file: AndroidManifest.xml - # target: manifest/application - # inject: - # - ios: - targets: - Runner: - bundleId: $BUNDLE_ID - productName: $APP_NAME - displayName: $APP_NAME - entitlements: - replace: true - # Workaround for https://stackoverflow.com/questions/55167611/flutter-ios-app-submission-issue-warning-missing-push-notification-entitlement - entries: - - aps-environment: development - # Uncomment to add some permissions - # plist: - # - replace: true - # entries: - # - UISupportedInterfaceOrientations: - # - UIInterfaceOrientationPortrait - -- 2.47.2 From b92d2a588deac2db9d811e4e928a02720cecd1a9 Mon Sep 17 00:00:00 2001 From: Hugo Pointcheval Date: Wed, 3 May 2023 15:59:06 +0200 Subject: [PATCH 4/4] build(app): bump version identifier --- bricks/wyatt_app_template/brick.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bricks/wyatt_app_template/brick.yaml b/bricks/wyatt_app_template/brick.yaml index d78f1af..284d3e3 100644 --- a/bricks/wyatt_app_template/brick.yaml +++ b/bricks/wyatt_app_template/brick.yaml @@ -1,7 +1,7 @@ name: wyatt_app_template description: New app template for Wyatt Studio projects. -version: 0.1.2 +version: 0.2.0 vars: display_name: -- 2.47.2