From 62d970c37a730c85ee5f3fdb3abea96eb35913b1 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Mon, 23 Oct 2023 19:48:18 -0300 Subject: [PATCH 001/159] fixed MainActivity --- android/app/src/main/java/com/mobilepos/MainActivity.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/android/app/src/main/java/com/mobilepos/MainActivity.java b/android/app/src/main/java/com/mobilepos/MainActivity.java index 3ce85ab..2cb2ad8 100644 --- a/android/app/src/main/java/com/mobilepos/MainActivity.java +++ b/android/app/src/main/java/com/mobilepos/MainActivity.java @@ -1,5 +1,7 @@ package com.mobilepos; +import android.os.Bundle; // required for onCreate parameter + import com.facebook.react.ReactActivity; import com.facebook.react.ReactActivityDelegate; import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; From 1d41c6de6614194a8108c1cff977398312ab6490 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Mon, 23 Oct 2023 19:48:33 -0300 Subject: [PATCH 002/159] added @react-native-community/cli-platform-android --- package.json | 5 +- yarn.lock | 423 ++++++++++++++++++++++++++++----------------------- 2 files changed, 237 insertions(+), 191 deletions(-) diff --git a/package.json b/package.json index 5c47eb0..fb81a3b 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "@bitcoin-design/bitcoin-icons-react": "^0.1.9", "@expo/vector-icons": "^13.0.0", "@react-native-async-storage/async-storage": "^1.19.3", + "@react-native-community/cli-platform-android": "^11.3.9", "@react-navigation/native": "^6.1.8", "@react-navigation/native-stack": "^6.9.14", "expo-checkbox": "^2.5.0", @@ -43,9 +44,9 @@ "prettier": "^2.4.1", "react-native-svg-transformer": "^1.1.0", "react-test-renderer": "18.2.0", - "typescript": "4.8.4" + "typescript": "4.9.5" }, "engines": { "node": ">=16" } -} \ No newline at end of file +} diff --git a/yarn.lock b/yarn.lock index 36dd5cd..094ce9f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1152,9 +1152,9 @@ integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== "@bitcoin-design/bitcoin-icons-react@^0.1.9": - version "0.1.9" - resolved "https://registry.yarnpkg.com/@bitcoin-design/bitcoin-icons-react/-/bitcoin-icons-react-0.1.9.tgz#25c18808f167e242cd15ba27c185d785f2728980" - integrity sha512-nJvTD1+zG/ffHdMeGQ39vdsmEFo9WcCIP1RlR7ZpZoP2H+IgKwzwow8VSY6ebroLoCT7WWtUPJQSbgQwgWYrFg== + version "0.1.10" + resolved "https://registry.yarnpkg.com/@bitcoin-design/bitcoin-icons-react/-/bitcoin-icons-react-0.1.10.tgz#11acf1d386c1094d3eff673ca236345860762f64" + integrity sha512-f7GSutKHa4EK4LWI/phnGCJsN8fzFbVAVQ4F1MYxiza34LVmXmbgHUmdP/BR8ZeQSIbZLt19inpJZDBtQvYe4Q== "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" @@ -1183,10 +1183,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.51.0": - version "8.51.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.51.0.tgz#6d419c240cfb2b66da37df230f7e7eef801c32fa" - integrity sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg== +"@eslint/js@8.52.0": + version "8.52.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.52.0.tgz#78fe5f117840f69dc4a353adf9b9cd926353378c" + integrity sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA== "@expo/vector-icons@^13.0.0": version "13.0.0" @@ -1205,12 +1205,12 @@ dependencies: "@hapi/hoek" "^9.0.0" -"@humanwhocodes/config-array@^0.11.11": - version "0.11.11" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.11.tgz#88a04c570dbbc7dd943e4712429c3df09bc32844" - integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA== +"@humanwhocodes/config-array@^0.11.13": + version "0.11.13" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" + integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== dependencies: - "@humanwhocodes/object-schema" "^1.2.1" + "@humanwhocodes/object-schema" "^2.0.1" debug "^4.1.1" minimatch "^3.0.5" @@ -1219,10 +1219,10 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@humanwhocodes/object-schema@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" + integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" @@ -1494,9 +1494,9 @@ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.19" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" - integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -1611,6 +1611,17 @@ glob "^7.1.3" logkitty "^0.7.1" +"@react-native-community/cli-platform-android@^11.3.9": + version "11.3.9" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-11.3.9.tgz#578d6519750dcf2e554a774145e198de45affa97" + integrity sha512-bAwvwibTMw9njM2Wdnl1uvREhhZFEVJ9o5TfL+4gMimAi7Jo7c3ex1i1G/dac5mvUZgUSmmvfbx9N4qUrJPX5A== + dependencies: + "@react-native-community/cli-tools" "11.3.9" + chalk "^4.1.2" + execa "^5.0.0" + glob "^7.1.3" + logkitty "^0.7.1" + "@react-native-community/cli-platform-ios@11.3.7": version "11.3.7" resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-11.3.7.tgz#87478f907634713b7236c77870446a5ca1f35ff1" @@ -1670,6 +1681,21 @@ semver "^7.5.2" shell-quote "^1.7.3" +"@react-native-community/cli-tools@11.3.9": + version "11.3.9" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-11.3.9.tgz#5e20610dcb0a381947a35eabd8ffa5d936590eb6" + integrity sha512-qWEUo/HQll/aj5xHYCw6itXGkPgultxTHa4UYSaBIRSfU15aSiwonJ/JP7fe+fHKbaFh6IdhaaRhj4ArfEOxuQ== + dependencies: + appdirsjs "^1.2.4" + chalk "^4.1.2" + find-up "^5.0.0" + mime "^2.4.1" + node-fetch "^2.6.0" + open "^6.2.0" + ora "^5.4.1" + semver "^7.5.2" + shell-quote "^1.7.3" + "@react-native-community/cli-types@11.3.7": version "11.3.7" resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-11.3.7.tgz#12fe7cff3da08bd27e11116531b2e001939854b9" @@ -1777,37 +1803,37 @@ invariant "^2.2.4" nullthrows "^1.1.1" -"@react-navigation/core@^6.4.9": - version "6.4.9" - resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-6.4.9.tgz#aa09ce534f5393427cb993cf242abdbd848fb2c7" - integrity sha512-G9GH7bP9x0qqupxZnkSftnkn4JoXancElTvFc8FVGfEvxnxP+gBo3wqcknyBi7M5Vad4qecsYjCOa9wqsftv9g== +"@react-navigation/core@^6.4.10": + version "6.4.10" + resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-6.4.10.tgz#0c52621968b35e3a75e189e823d3b9e3bad77aff" + integrity sha512-oYhqxETRHNHKsipm/BtGL0LI43Hs2VSFoWMbBdHK9OqgQPjTVUitslgLcPpo4zApCcmBWoOLX2qPxhsBda644A== dependencies: "@react-navigation/routers" "^6.1.9" escape-string-regexp "^4.0.0" nanoid "^3.1.23" query-string "^7.1.3" react-is "^16.13.0" - use-latest-callback "^0.1.5" + use-latest-callback "^0.1.7" -"@react-navigation/elements@^1.3.19": - version "1.3.19" - resolved "https://registry.yarnpkg.com/@react-navigation/elements/-/elements-1.3.19.tgz#18a4a754836af19c20d987e8ffc4f8b0ee2cbece" - integrity sha512-7hLvSYKPuDS070pza5gd43WDX7QgfuEmuTWNbCJhKdWlLudYmq3qzxGCBwCfO2dEI6+p8tla5wruaWiGKAbTYw== +"@react-navigation/elements@^1.3.21": + version "1.3.21" + resolved "https://registry.yarnpkg.com/@react-navigation/elements/-/elements-1.3.21.tgz#debac6becc6b6692da09ec30e705e476a780dfe1" + integrity sha512-eyS2C6McNR8ihUoYfc166O1D8VYVh9KIl0UQPI8/ZJVsStlfSTgeEEh+WXge6+7SFPnZ4ewzEJdSAHH+jzcEfg== "@react-navigation/native-stack@^6.9.14": - version "6.9.14" - resolved "https://registry.yarnpkg.com/@react-navigation/native-stack/-/native-stack-6.9.14.tgz#6c3baf9d308e9e07c4f2feafb722d57c5b156936" - integrity sha512-7RiZkvMFN6f0kmANc63B/0m9ttQ2JpDIPWQwPU93FP698s19KTOyu7uxgl7Oi3bvsqHFO5JfiR7B+4h8lh9dxw== + version "6.9.16" + resolved "https://registry.yarnpkg.com/@react-navigation/native-stack/-/native-stack-6.9.16.tgz#d3dfc1ebe51da34eff36d5475d7b33d982a59758" + integrity sha512-SrmBGr5YvRxDtdTacOkA/wvqwpt9kt+AsYpmt82hKMPKpu0v98WONedTXDzi6whhY3jeT2GZkwF8hyrJ+wDbTA== dependencies: - "@react-navigation/elements" "^1.3.19" + "@react-navigation/elements" "^1.3.21" warn-once "^0.1.0" "@react-navigation/native@^6.1.8": - version "6.1.8" - resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-6.1.8.tgz#2a451fc8e2eff667007feb25d75e1d2b87e5460d" - integrity sha512-0alti852nV+8oCVm9H80G6kZvrHoy51+rXBvVCRUs2rNDDozC/xPZs8tyeCJkqdw3cpxZDK8ndXF22uWq28+0Q== + version "6.1.9" + resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-6.1.9.tgz#8ef87095cd9c2ed094308c726157c7f6fc28796e" + integrity sha512-AMuJDpwXE7UlfyhIXaUCCynXmv69Kb8NzKgKJO7v0k0L+u6xUTbt6xvshmJ79vsvaFyaEH9Jg5FMzek5/S5qNw== dependencies: - "@react-navigation/core" "^6.4.9" + "@react-navigation/core" "^6.4.10" escape-string-regexp "^4.0.0" fast-deep-equal "^3.1.3" nanoid "^3.1.23" @@ -1958,9 +1984,9 @@ integrity sha512-F7IoHEqf741lut4Z2K+IkWQRvXAhBiZMeY5L7BysG7Z2Z3MlIyFR+AagD8jQ/CqC1vowGnRwfLjeuwIpaeoJxA== "@types/babel__core@^7.1.14": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.2.tgz#215db4f4a35d710256579784a548907237728756" - integrity sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.3.tgz#d5625a50b6f18244425a1359a858c73d70340778" + integrity sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA== dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -1969,124 +1995,124 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.5" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.5.tgz#281f4764bcbbbc51fdded0f25aa587b4ce14da95" - integrity sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w== + version "7.6.6" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.6.tgz#676f89f67dc8ddaae923f70ebc5f1fa800c031a8" + integrity sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.2.tgz#843e9f1f47c957553b0c374481dc4772921d6a6b" - integrity sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ== + version "7.4.3" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.3.tgz#db9ac539a2fe05cfe9e168b24f360701bde41f5f" + integrity sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.2.tgz#4ddf99d95cfdd946ff35d2b65c978d9c9bf2645d" - integrity sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.3.tgz#a971aa47441b28ef17884ff945d0551265a2d058" + integrity sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw== dependencies: "@babel/types" "^7.20.7" "@types/graceful-fs@^4.1.3": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.7.tgz#30443a2e64fd51113bc3e2ba0914d47109695e2a" - integrity sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw== + version "4.1.8" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.8.tgz#417e461e4dc79d957dc3107f45fe4973b09c2915" + integrity sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#fdfdd69fa16d530047d9963635bd77c71a08c068" + integrity sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ== "@types/istanbul-lib-report@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#412e0725ef41cde73bfa03e0e833eaff41e0fd63" - integrity sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz#394798d5f727402eb5ec99eb9618ffcd2b7645a1" + integrity sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz#edc8e421991a3b4df875036d381fc0a5a982f549" - integrity sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz#0313e2608e6d6955d195f55361ddeebd4b74c6e7" + integrity sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg== dependencies: "@types/istanbul-lib-report" "*" "@types/json-schema@^7.0.9": - version "7.0.13" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85" - integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ== + version "7.0.14" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.14.tgz#74a97a5573980802f32c8e47b663530ab3b6b7d1" + integrity sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw== "@types/node@*": - version "20.8.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.6.tgz#0dbd4ebcc82ad0128df05d0e6f57e05359ee47fa" - integrity sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ== + version "20.8.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.7.tgz#ad23827850843de973096edfc5abc9e922492a25" + integrity sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ== dependencies: undici-types "~5.25.1" "@types/prop-types@*": - version "15.7.8" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.8.tgz#805eae6e8f41bd19e88917d2ea200dc992f405d3" - integrity sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ== + version "15.7.9" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.9.tgz#b6f785caa7ea1fe4414d9df42ee0ab67f23d8a6d" + integrity sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g== "@types/react-test-renderer@^18.0.0": - version "18.0.3" - resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-18.0.3.tgz#67922bf5e5f0096581b1efd67dcdeabdd400cfea" - integrity sha512-4wcNLnY6nIT+L6g94CpzL4CXX2P18JvKPU9CDlaHr3DnbP3GiaQLhDotJqjWlVqOcE4UhLRjp0MtxqwuNKONnA== + version "18.0.5" + resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-18.0.5.tgz#b67a6ff37acd93d1b971ec4c838f69d52e772db0" + integrity sha512-PsnmF4Hpi61PTRX+dTxkjgDdtZ09kFFgPXczoF+yBfOVxn7xBLPvKP1BUrSasYHmerj33rhoJuvpIMsJuyRqHw== dependencies: "@types/react" "*" "@types/react@*", "@types/react@^18.0.24": - version "18.2.28" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.28.tgz#86877465c0fcf751659a36c769ecedfcfacee332" - integrity sha512-ad4aa/RaaJS3hyGz0BGegdnSRXQBkd1CCYDCdNjBPg90UUpLgo+WlJqb9fMYUxtehmzF3PJaTWqRZjko6BRzBg== + version "18.2.31" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.31.tgz#74ae2630e4aa9af599584157abd3b95d96fb9b40" + integrity sha512-c2UnPv548q+5DFh03y8lEDeMfDwBn9G3dRwfkrxQMo/dOtRHUUO57k6pHvBIfH/VF4Nh+98mZ5aaSe+2echD5g== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" csstype "^3.0.2" "@types/scheduler@*": - version "0.16.4" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.4.tgz#fedc3e5b15c26dc18faae96bf1317487cb3658cf" - integrity sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ== + version "0.16.5" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.5.tgz#4751153abbf8d6199babb345a52e1eb4167d64af" + integrity sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw== "@types/semver@^7.3.12": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04" - integrity sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw== + version "7.5.4" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.4.tgz#0a41252ad431c473158b22f9bfb9a63df7541cff" + integrity sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ== "@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.2.tgz#01284dde9ef4e6d8cef6422798d9a3ad18a66f8b" + integrity sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw== "@types/yargs-parser@*": - version "21.0.1" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.1.tgz#07773d7160494d56aa882d7531aac7319ea67c3b" - integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ== + version "21.0.2" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.2.tgz#7bd04c5da378496ef1695a1008bf8f71847a8b8b" + integrity sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw== "@types/yargs@^15.0.0": - version "15.0.16" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.16.tgz#258009dc52907e8f03041eb64ffdac297ba4b208" - integrity sha512-2FeD5qezW3FvLpZ0JpfuaEWepgNLl9b2gQYiz/ce0NhoB1W/D+VZu98phITXkADYerfr/jb7JcDcVhITsc9bwg== + version "15.0.17" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.17.tgz#bea870ba551b43831bfaa75de2e4a3849c39322b" + integrity sha512-cj53I8GUcWJIgWVTSVe2L7NJAB5XWGdsoMosVvUgv1jEnMbAcsbaCzt1coUcyi8Sda5PgTWAooG8jNyDTD+CWA== dependencies: "@types/yargs-parser" "*" "@types/yargs@^16.0.0": - version "16.0.6" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.6.tgz#cc0c63684d68d23498cf0b5f32aa4c3fb437c638" - integrity sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A== + version "16.0.7" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.7.tgz#b0d0502cb5f6c17994df72a600049f10bbf17203" + integrity sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg== dependencies: "@types/yargs-parser" "*" "@types/yargs@^17.0.8": - version "17.0.28" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.28.tgz#d106e4301fbacde3d1796ab27374dd16588ec851" - integrity sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw== + version "17.0.29" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.29.tgz#06aabc72497b798c643c812a8b561537fea760cf" + integrity sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA== dependencies: "@types/yargs-parser" "*" @@ -2174,6 +2200,11 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" @@ -2440,12 +2471,12 @@ babel-plugin-polyfill-corejs2@^0.4.6: semver "^6.3.1" babel-plugin-polyfill-corejs3@^0.8.5: - version "0.8.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz#a75fa1b0c3fc5bd6837f9ec465c0f48031b8cab1" - integrity sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA== + version "0.8.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz#25c2d20002da91fe328ff89095c85a391d6856cf" + integrity sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ== dependencies: "@babel/helper-define-polyfill-provider" "^0.4.3" - core-js-compat "^3.32.2" + core-js-compat "^3.33.1" babel-plugin-polyfill-regenerator@^0.5.3: version "0.5.3" @@ -2599,13 +2630,14 @@ bytes@3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" caller-callsite@^2.0.0: version "2.0.0" @@ -2642,9 +2674,9 @@ camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001541: - version "1.0.30001549" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz#7d1a3dce7ea78c06ed72c32c2743ea364b3615aa" - integrity sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA== + version "1.0.30001553" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001553.tgz#e64e7dc8fd4885cd246bb476471420beb5e474b5" + integrity sha512-N0ttd6TrFfuqKNi+pMgWJTb9qrdJu4JSpgPFLe/lrD19ugC6fZgF0pUewRowDwzdDnb9V41mFcdlYgl/PyKf4A== chalk@^2.4.2: version "2.4.2" @@ -2841,10 +2873,10 @@ convert-source-map@^2.0.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -core-js-compat@^3.31.0, core-js-compat@^3.32.2: - version "3.33.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.0.tgz#24aa230b228406450b2277b7c8bfebae932df966" - integrity sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw== +core-js-compat@^3.31.0, core-js-compat@^3.33.1: + version "3.33.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.1.tgz#debe80464107d75419e00c2ee29f35982118ff84" + integrity sha512-6pYKNOgD/j/bkC5xS5IIg6bncid3rfrI42oBH1SQJbsmYPKF7rhzcFzYCcxYMmNQQ0rCEB8WqpW7QHndOggaeQ== dependencies: browserslist "^4.22.1" @@ -2998,7 +3030,7 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -define-data-property@^1.0.1: +define-data-property@^1.0.1, define-data-property@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== @@ -3120,9 +3152,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.535: - version "1.4.556" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.556.tgz#97385917eb6ea3ac6a3378cf87bb39ee1db96e76" - integrity sha512-6RPN0hHfzDU8D56E72YkDvnLw5Cj2NMXZGg3UkgyoHxjVhG99KZpsKgBWMmTy0Ei89xwan+rbRsVB9yzATmYzQ== + version "1.4.565" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.565.tgz#205f3746a759ec3c43bce98b9eef5445f2721ea9" + integrity sha512-XbMoT6yIvg2xzcbs5hCADi0dXBh4//En3oFXmtPX+jiyyiCTiM9DGFT2SLottjpEs9Z8Mh8SqahbR96MaHfuSg== emittery@^0.13.1: version "0.13.1" @@ -3177,25 +3209,25 @@ errorhandler@^1.5.1: escape-html "~1.0.3" es-abstract@^1.22.1: - version "1.22.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.2.tgz#90f7282d91d0ad577f505e423e52d4c1d93c1b8a" - integrity sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA== + version "1.22.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" + integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== dependencies: array-buffer-byte-length "^1.0.0" arraybuffer.prototype.slice "^1.0.2" available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.5" es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" function.prototype.name "^1.1.6" - get-intrinsic "^1.2.1" + get-intrinsic "^1.2.2" get-symbol-description "^1.0.0" globalthis "^1.0.3" gopd "^1.0.1" - has "^1.0.3" has-property-descriptors "^1.0.0" has-proto "^1.0.1" has-symbols "^1.0.3" + hasown "^2.0.0" internal-slot "^1.0.5" is-array-buffer "^3.0.2" is-callable "^1.2.7" @@ -3205,7 +3237,7 @@ es-abstract@^1.22.1: is-string "^1.0.7" is-typed-array "^1.1.12" is-weakref "^1.0.2" - object-inspect "^1.12.3" + object-inspect "^1.13.1" object-keys "^1.1.1" object.assign "^4.1.4" regexp.prototype.flags "^1.5.1" @@ -3219,7 +3251,7 @@ es-abstract@^1.22.1: typed-array-byte-offset "^1.0.0" typed-array-length "^1.0.4" unbox-primitive "^1.0.2" - which-typed-array "^1.1.11" + which-typed-array "^1.1.13" es-iterator-helpers@^1.0.12: version "1.0.15" @@ -3242,20 +3274,20 @@ es-iterator-helpers@^1.0.12: safe-array-concat "^1.0.1" es-set-tostringtag@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" - integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + version "2.0.2" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" + integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== dependencies: - get-intrinsic "^1.1.3" - has "^1.0.3" + get-intrinsic "^1.2.2" has-tostringtag "^1.0.0" + hasown "^2.0.0" es-shim-unscopables@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" - integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== dependencies: - has "^1.0.3" + hasown "^2.0.0" es-to-primitive@^1.2.1: version "1.2.1" @@ -3392,17 +3424,18 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== eslint@^8.19.0: - version "8.51.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.51.0.tgz#4a82dae60d209ac89a5cff1604fea978ba4950f3" - integrity sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA== + version "8.52.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.52.0.tgz#d0cd4a1fac06427a61ef9242b9353f36ea7062fc" + integrity sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" "@eslint/eslintrc" "^2.1.2" - "@eslint/js" "8.51.0" - "@humanwhocodes/config-array" "^0.11.11" + "@eslint/js" "8.52.0" + "@humanwhocodes/config-array" "^0.11.13" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" @@ -3679,9 +3712,9 @@ flow-enums-runtime@^0.0.5: integrity sha512-PSZF9ZuaZD03sT9YaIs0FrGJ7lSUw7rHZIex+73UYVXg46eL/wxN5PaVcPJFudE2cJu5f0fezitV5aBkLHPUOQ== flow-parser@0.*: - version "0.218.1" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.218.1.tgz#a4a5d14c2cfd40dc76649b23f48fb4facd9156f9" - integrity sha512-46xpXyI4Bh3K2ej+NF3V5+pAsDlB5P0DWpgIIy/0/R7ujK0syfI/xfKDCOlq2sxtfUyPrr4rxfS2Da7yWdTdwg== + version "0.219.3" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.219.3.tgz#f817121332acb168f4a71ba2dfa7bce8c2723aa1" + integrity sha512-dyPC0+TwAcBMQ1IZhSpj91mxZ31AI9FJ3q/ZMt8kdKaITnDCGmyUyWOwUfAKBVLrUTkdaTfpla0muhwOGY+dXw== flow-parser@^0.206.0: version "0.206.0" @@ -3724,7 +3757,7 @@ fsevents@^2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1: +function-bind@^1.1.1, function-bind@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== @@ -3754,15 +3787,15 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" - integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== dependencies: - function-bind "^1.1.1" - has "^1.0.3" + function-bind "^1.1.2" has-proto "^1.0.1" has-symbols "^1.0.3" + hasown "^2.0.0" get-package-type@^0.1.0: version "0.1.0" @@ -3872,11 +3905,11 @@ has-flag@^4.0.0: integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" + integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== dependencies: - get-intrinsic "^1.1.1" + get-intrinsic "^1.2.2" has-proto@^1.0.1: version "1.0.1" @@ -3895,10 +3928,12 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" -has@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" - integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" hermes-estree@0.12.0: version "0.12.0" @@ -4000,12 +4035,12 @@ inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== internal-slot@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" - integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + version "1.0.6" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" + integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== dependencies: - get-intrinsic "^1.2.0" - has "^1.0.3" + get-intrinsic "^1.2.2" + hasown "^2.0.0" side-channel "^1.0.4" invariant@*, invariant@^2.2.4: @@ -4062,11 +4097,11 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== is-core-module@^2.13.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" - integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: - has "^1.0.3" + hasown "^2.0.0" is-date-object@^1.0.1, is-date-object@^1.0.5: version "1.0.5" @@ -5454,10 +5489,10 @@ object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -object-inspect@^1.12.3, object-inspect@^1.9.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.0.tgz#42695d3879e1cd5bda6df5062164d80c996e23e2" - integrity sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g== +object-inspect@^1.13.1, object-inspect@^1.9.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-keys@^1.1.1: version "1.1.1" @@ -5882,14 +5917,14 @@ react-native-qrcode-svg@^6.2.0: qrcode "^1.5.1" react-native-safe-area-context@^4.7.2: - version "4.7.2" - resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-4.7.2.tgz#1673aa99b6a9235e7faaf5a248e69795d6e54e07" - integrity sha512-5fy/hRNJ7bI/U2SliOeKf0D80J4lXPc1NsRiNS7Xaz8YTnqlzWib1ViItkwKPfufe54YKzVBMmM32RpdzvO2gg== + version "4.7.3" + resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-4.7.3.tgz#149542a05fa68b2892568e8b338bc1e4e005cd0d" + integrity sha512-Z+oldEQ/tHRU5X++ePdIGosPT9Fa93Mtky/Ptdh7qei4HqBUOcMnIj0KKCJGPRYyvN7j/63Ix0YqqYyVUEof5g== react-native-screens@^3.25.0: - version "3.25.0" - resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-3.25.0.tgz#cf45e271ce733c9cf782fef8c9b3eb9e53faf01d" - integrity sha512-TSC2Ad0hh763I8QT6XxMsPXAagQ+RawDSdFtKRvIz9fCYr96AjRwwaqmYivbqlDywOgcRBkIVynkFtp0ThmlYw== + version "3.27.0" + resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-3.27.0.tgz#2ac39f78dee27df97d3b6fb11ebf8e5751aa986a" + integrity sha512-FzSUygZ7yLQyhDJZsl7wU68LwRpVtVdqOPWribmEU3Tf26FohFGGcfJx1D8lf2V2Teb8tI+IaLnXCKbyh2xffA== dependencies: react-freeze "^1.0.0" warn-once "^0.1.0" @@ -6277,6 +6312,16 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + set-function-name@^2.0.0, set-function-name@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" @@ -6750,10 +6795,10 @@ typed-array-length@^1.0.4: for-each "^0.3.3" is-typed-array "^1.1.9" -typescript@4.8.4: - version "4.8.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" - integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== +typescript@4.9.5: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== uglify-es@^3.1.9: version "3.3.9" @@ -6826,10 +6871,10 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -use-latest-callback@^0.1.5: - version "0.1.6" - resolved "https://registry.yarnpkg.com/use-latest-callback/-/use-latest-callback-0.1.6.tgz#3fa6e7babbb5f9bfa24b5094b22939e1e92ebcf6" - integrity sha512-VO/P91A/PmKH9bcN9a7O3duSuxe6M14ZoYXgA6a8dab8doWNdhiIHzEkX/jFeTTRBsX0Ubk6nG4q2NIjNsj+bg== +use-latest-callback@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/use-latest-callback/-/use-latest-callback-0.1.7.tgz#f189fa4e58ee18c7a2d9de53f92210e118d1b14f" + integrity sha512-Hlrl0lskgZZpo2vIpZ4rA7qA/rAGn2PcDvDH1M47AogqMPB0qlGEdsa66AVkIUiEEDpfxA9/N6hY6MqtaNoqWA== use-sync-external-store@^1.0.0: version "1.2.0" @@ -6946,13 +6991,13 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== -which-typed-array@^1.1.11, which-typed-array@^1.1.9: - version "1.1.11" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" - integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== +which-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.9: + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== dependencies: available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.4" for-each "^0.3.3" gopd "^1.0.1" has-tostringtag "^1.0.0" From b79f173b18cb0bed0970c4107bb17059eb7f3386 Mon Sep 17 00:00:00 2001 From: Jona Date: Wed, 25 Oct 2023 03:59:38 -0300 Subject: [PATCH 003/159] chore: removed base project --- .eslintrc.js | 4 - .gitignore | 66 - .prettierrc.js | 7 - .watchmanconfig | 1 - App.tsx | 48 - Gemfile | 7 - Gemfile.lock | 101 - LICENSE | 674 -- README.md | 79 - __tests__/App.test.tsx | 17 - android/app/build.gradle | 123 - android/app/debug.keystore | Bin 2257 -> 0 bytes android/app/proguard-rules.pro | 10 - android/app/src/debug/AndroidManifest.xml | 13 - .../com/mobilepos/ReactNativeFlipper.java | 75 - android/app/src/main/AndroidManifest.xml | 25 - .../main/java/com/mobilepos/MainActivity.java | 43 - .../java/com/mobilepos/MainApplication.java | 62 - .../res/drawable/rn_edit_text_material.xml | 36 - .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 3056 -> 0 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 5024 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 2096 -> 0 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 2858 -> 0 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 4569 -> 0 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 7098 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 6464 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 10676 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 9250 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 15523 -> 0 bytes android/app/src/main/res/values/strings.xml | 3 - android/app/src/main/res/values/styles.xml | 9 - .../com/mobilepos/ReactNativeFlipper.java | 20 - android/build.gradle | 21 - android/gradle.properties | 44 - android/gradle/wrapper/gradle-wrapper.jar | Bin 61574 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - android/gradlew | 244 - android/gradlew.bat | 92 - android/settings.gradle | 4 - app.json | 4 - assets/adaptive-icon.png | Bin 17547 -> 0 bytes assets/battery.png | Bin 23567 -> 0 bytes assets/favicon.png | Bin 1466 -> 0 bytes assets/icon.png | Bin 32887 -> 0 bytes assets/logo-dark.png | Bin 6781 -> 0 bytes assets/logo-light.png | Bin 8039 -> 0 bytes assets/splash.png | Bin 10201 -> 0 bytes babel.config.js | 3 - index.js | 9 - ios/.xcode.env | 11 - ios/Podfile | 62 - ios/Podfile.lock | 738 -- ios/mobilePos.xcodeproj/project.pbxproj | 719 -- .../xcshareddata/xcschemes/mobilePos.xcscheme | 88 - .../contents.xcworkspacedata | 10 - ios/mobilePos/AppDelegate.h | 6 - ios/mobilePos/AppDelegate.mm | 26 - .../AppIcon.appiconset/Contents.json | 53 - ios/mobilePos/Images.xcassets/Contents.json | 6 - ios/mobilePos/Info.plist | 55 - ios/mobilePos/LaunchScreen.storyboard | 47 - ios/mobilePos/main.m | 10 - ios/mobilePosTests/Info.plist | 24 - ios/mobilePosTests/mobilePosTests.m | 66 - jest.config.js | 3 - metro.config.js | 11 - package.json | 52 - src/components/AmountKeyboard.tsx | 19 - src/components/LoginKeyboard.tsx | 15 - src/components/PasswordKeyboard.tsx | 18 - src/components/SeedPhraseForm.tsx | 184 - src/components/SeedPhrasePreview.tsx | 198 - src/components/Slides/Pagination.tsx | 78 - src/components/Slides/index.tsx | 57 - src/components/index.tsx | 6 - src/context/authentication.tsx | 55 - src/features/components/CreatePassword.tsx | 40 - src/features/components/ValidatePassword.tsx | 38 - src/features/components/index.ts | 2 - src/hooks/index.ts | 3 - src/hooks/useColors.tsx | 15 - src/hooks/useDeviceDimensions.tsx | 14 - src/hooks/useNavigate.tsx | 16 - src/navigators/AppStack.tsx | 77 - src/navigators/AuthStack.tsx | 20 - src/navigators/Router.tsx | 21 - src/navigators/routes.ts | 20 - src/screens/app/CheckSeedScreen.tsx | 76 - src/screens/app/CheckSeedSuccessScreen.tsx | 63 - src/screens/app/DashboardScreen.tsx | 123 - src/screens/app/ReceiveScreen.tsx | 60 - src/screens/app/SecurityOnboardingScreen.tsx | 98 - src/screens/app/SeedPreviewScreen.tsx | 81 - src/screens/app/TransferAmmountScreen.tsx | 65 - src/screens/app/TransferScreen.tsx | 118 - src/screens/app/TransferSuccessScreen.tsx | 138 - src/screens/app/TransferSummaryScreen.tsx | 98 - src/screens/app/_DashboardScreen.tsx | 131 - src/screens/app/_ReceiveScreen.tsx | 51 - src/screens/auth/IntroScreen.tsx | 81 - src/screens/auth/SignupPasswordScreen.tsx | 116 - src/screens/auth/SignupSeedScreen.tsx | 64 - src/settings/Colors.ts | 101 - src/settings/Themes.ts | 22 - src/ui/AutoFlex.tsx | 23 - src/ui/Button.tsx | 107 - src/ui/ButtonCircle.tsx | 73 - src/ui/Card.tsx | 38 - src/ui/CheckCard.tsx | 44 - src/ui/Checkbox.tsx | 33 - src/ui/Container.tsx | 25 - src/ui/CustomText.tsx | 51 - src/ui/Divider.tsx | 13 - src/ui/Flex.tsx | 95 - src/ui/Header.tsx | 61 - src/ui/Heading.tsx | 66 - src/ui/Icons/Card.tsx | 17 - src/ui/Icons/QR.tsx | 16 - src/ui/Icons/Trash.tsx | 13 - src/ui/Icons/index.ts | 3 - src/ui/Input.tsx | 89 - src/ui/InputValue.tsx | 91 - src/ui/Keyboard.tsx | 148 - src/ui/LoadingView.tsx | 14 - src/ui/Logo.tsx | 13 - src/ui/NumericInput.tsx | 59 - src/ui/PasswordPoint.tsx | 40 - src/ui/QRCode.tsx | 39 - src/ui/ScreenScrollView.tsx | 38 - src/ui/ScreenView.tsx | 34 - src/ui/SeedInput.tsx | 88 - src/ui/index.ts | 23 - src/utils/passwordArrayMethods.ts | 28 - tsconfig.json | 3 - yarn.lock | 7140 ----------------- 135 files changed, 14744 deletions(-) delete mode 100644 .eslintrc.js delete mode 100644 .gitignore delete mode 100644 .prettierrc.js delete mode 100644 .watchmanconfig delete mode 100644 App.tsx delete mode 100644 Gemfile delete mode 100644 Gemfile.lock delete mode 100644 LICENSE delete mode 100644 README.md delete mode 100644 __tests__/App.test.tsx delete mode 100644 android/app/build.gradle delete mode 100644 android/app/debug.keystore delete mode 100644 android/app/proguard-rules.pro delete mode 100644 android/app/src/debug/AndroidManifest.xml delete mode 100644 android/app/src/debug/java/com/mobilepos/ReactNativeFlipper.java delete mode 100644 android/app/src/main/AndroidManifest.xml delete mode 100644 android/app/src/main/java/com/mobilepos/MainActivity.java delete mode 100644 android/app/src/main/java/com/mobilepos/MainApplication.java delete mode 100644 android/app/src/main/res/drawable/rn_edit_text_material.xml delete mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png delete mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png delete mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png delete mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png delete mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png delete mode 100644 android/app/src/main/res/values/strings.xml delete mode 100644 android/app/src/main/res/values/styles.xml delete mode 100644 android/app/src/release/java/com/mobilepos/ReactNativeFlipper.java delete mode 100644 android/build.gradle delete mode 100644 android/gradle.properties delete mode 100644 android/gradle/wrapper/gradle-wrapper.jar delete mode 100644 android/gradle/wrapper/gradle-wrapper.properties delete mode 100755 android/gradlew delete mode 100644 android/gradlew.bat delete mode 100644 android/settings.gradle delete mode 100644 app.json delete mode 100644 assets/adaptive-icon.png delete mode 100644 assets/battery.png delete mode 100644 assets/favicon.png delete mode 100644 assets/icon.png delete mode 100644 assets/logo-dark.png delete mode 100644 assets/logo-light.png delete mode 100644 assets/splash.png delete mode 100644 babel.config.js delete mode 100644 index.js delete mode 100644 ios/.xcode.env delete mode 100644 ios/Podfile delete mode 100644 ios/Podfile.lock delete mode 100644 ios/mobilePos.xcodeproj/project.pbxproj delete mode 100644 ios/mobilePos.xcodeproj/xcshareddata/xcschemes/mobilePos.xcscheme delete mode 100644 ios/mobilePos.xcworkspace/contents.xcworkspacedata delete mode 100644 ios/mobilePos/AppDelegate.h delete mode 100644 ios/mobilePos/AppDelegate.mm delete mode 100644 ios/mobilePos/Images.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 ios/mobilePos/Images.xcassets/Contents.json delete mode 100644 ios/mobilePos/Info.plist delete mode 100644 ios/mobilePos/LaunchScreen.storyboard delete mode 100644 ios/mobilePos/main.m delete mode 100644 ios/mobilePosTests/Info.plist delete mode 100644 ios/mobilePosTests/mobilePosTests.m delete mode 100644 jest.config.js delete mode 100644 metro.config.js delete mode 100644 package.json delete mode 100644 src/components/AmountKeyboard.tsx delete mode 100644 src/components/LoginKeyboard.tsx delete mode 100644 src/components/PasswordKeyboard.tsx delete mode 100644 src/components/SeedPhraseForm.tsx delete mode 100644 src/components/SeedPhrasePreview.tsx delete mode 100644 src/components/Slides/Pagination.tsx delete mode 100644 src/components/Slides/index.tsx delete mode 100644 src/components/index.tsx delete mode 100644 src/context/authentication.tsx delete mode 100644 src/features/components/CreatePassword.tsx delete mode 100644 src/features/components/ValidatePassword.tsx delete mode 100644 src/features/components/index.ts delete mode 100644 src/hooks/index.ts delete mode 100644 src/hooks/useColors.tsx delete mode 100644 src/hooks/useDeviceDimensions.tsx delete mode 100644 src/hooks/useNavigate.tsx delete mode 100644 src/navigators/AppStack.tsx delete mode 100644 src/navigators/AuthStack.tsx delete mode 100644 src/navigators/Router.tsx delete mode 100644 src/navigators/routes.ts delete mode 100644 src/screens/app/CheckSeedScreen.tsx delete mode 100644 src/screens/app/CheckSeedSuccessScreen.tsx delete mode 100644 src/screens/app/DashboardScreen.tsx delete mode 100644 src/screens/app/ReceiveScreen.tsx delete mode 100644 src/screens/app/SecurityOnboardingScreen.tsx delete mode 100644 src/screens/app/SeedPreviewScreen.tsx delete mode 100644 src/screens/app/TransferAmmountScreen.tsx delete mode 100644 src/screens/app/TransferScreen.tsx delete mode 100644 src/screens/app/TransferSuccessScreen.tsx delete mode 100644 src/screens/app/TransferSummaryScreen.tsx delete mode 100644 src/screens/app/_DashboardScreen.tsx delete mode 100644 src/screens/app/_ReceiveScreen.tsx delete mode 100644 src/screens/auth/IntroScreen.tsx delete mode 100644 src/screens/auth/SignupPasswordScreen.tsx delete mode 100644 src/screens/auth/SignupSeedScreen.tsx delete mode 100644 src/settings/Colors.ts delete mode 100644 src/settings/Themes.ts delete mode 100644 src/ui/AutoFlex.tsx delete mode 100644 src/ui/Button.tsx delete mode 100644 src/ui/ButtonCircle.tsx delete mode 100644 src/ui/Card.tsx delete mode 100644 src/ui/CheckCard.tsx delete mode 100644 src/ui/Checkbox.tsx delete mode 100644 src/ui/Container.tsx delete mode 100644 src/ui/CustomText.tsx delete mode 100644 src/ui/Divider.tsx delete mode 100644 src/ui/Flex.tsx delete mode 100644 src/ui/Header.tsx delete mode 100644 src/ui/Heading.tsx delete mode 100644 src/ui/Icons/Card.tsx delete mode 100644 src/ui/Icons/QR.tsx delete mode 100644 src/ui/Icons/Trash.tsx delete mode 100644 src/ui/Icons/index.ts delete mode 100644 src/ui/Input.tsx delete mode 100644 src/ui/InputValue.tsx delete mode 100644 src/ui/Keyboard.tsx delete mode 100644 src/ui/LoadingView.tsx delete mode 100644 src/ui/Logo.tsx delete mode 100644 src/ui/NumericInput.tsx delete mode 100644 src/ui/PasswordPoint.tsx delete mode 100644 src/ui/QRCode.tsx delete mode 100644 src/ui/ScreenScrollView.tsx delete mode 100644 src/ui/ScreenView.tsx delete mode 100644 src/ui/SeedInput.tsx delete mode 100644 src/ui/index.ts delete mode 100644 src/utils/passwordArrayMethods.ts delete mode 100644 tsconfig.json delete mode 100644 yarn.lock diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 187894b..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - root: true, - extends: '@react-native', -}; diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 0cab2ac..0000000 --- a/.gitignore +++ /dev/null @@ -1,66 +0,0 @@ -# OSX -# -.DS_Store - -# Xcode -# -build/ -*.pbxuser -!default.pbxuser -*.mode1v3 -!default.mode1v3 -*.mode2v3 -!default.mode2v3 -*.perspectivev3 -!default.perspectivev3 -xcuserdata -*.xccheckout -*.moved-aside -DerivedData -*.hmap -*.ipa -*.xcuserstate -ios/.xcode.env.local - -# Android/IntelliJ -# -build/ -.idea -.gradle -local.properties -*.iml -*.hprof -.cxx/ -*.keystore -!debug.keystore - -# node.js -# -node_modules/ -npm-debug.log -yarn-error.log - -# fastlane -# -# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the -# screenshots whenever they are needed. -# For more information about the recommended setup visit: -# https://docs.fastlane.tools/best-practices/source-control/ - -**/fastlane/report.xml -**/fastlane/Preview.html -**/fastlane/screenshots -**/fastlane/test_output - -# Bundle artifact -*.jsbundle - -# Ruby / CocoaPods -/ios/Pods/ -/vendor/bundle/ - -# Temporary files created by Metro to check the health of the file watcher -.metro-health-check* - -# testing -/coverage diff --git a/.prettierrc.js b/.prettierrc.js deleted file mode 100644 index 2b54074..0000000 --- a/.prettierrc.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - arrowParens: 'avoid', - bracketSameLine: true, - bracketSpacing: false, - singleQuote: true, - trailingComma: 'all', -}; diff --git a/.watchmanconfig b/.watchmanconfig deleted file mode 100644 index 0967ef4..0000000 --- a/.watchmanconfig +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/App.tsx b/App.tsx deleted file mode 100644 index 348d31d..0000000 --- a/App.tsx +++ /dev/null @@ -1,48 +0,0 @@ -/** - * Sample React Native App - * https://github.com/facebook/react-native - * - * @format - */ - -import React from 'react'; -import {LogBox, StatusBar, useColorScheme} from 'react-native'; -import {NavigationContainer} from '@react-navigation/native'; - -import AuthenticationProvider from './src/context/authentication'; -import {CustomDarkTheme, CustomLightTheme} from './src/settings/Themes'; -import Router from './src/navigators/Router'; -import {useColors} from './src/hooks'; - -import {StyleSheet, View} from 'react-native'; -import {Logo} from './src/ui'; - -LogBox.ignoreAllLogs(); - -function App(): JSX.Element { - const isDarkMode = useColorScheme() === 'dark'; - const Colors = useColors(); - - const backgroundStyle = { - backgroundColor: Colors.background, - }; - - return ( - // - // - // - - - - - - - ); -} - -export default App; diff --git a/Gemfile b/Gemfile deleted file mode 100644 index 6a7d5c7..0000000 --- a/Gemfile +++ /dev/null @@ -1,7 +0,0 @@ -source 'https://rubygems.org' - -# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version -ruby ">= 2.6.10" - -gem 'cocoapods', '~> 1.13' -gem 'activesupport', '>= 6.1.7.3', '< 7.1.0' diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index bcec7e9..0000000 --- a/Gemfile.lock +++ /dev/null @@ -1,101 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - CFPropertyList (3.0.6) - rexml - activesupport (6.1.7.6) - concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 1.6, < 2) - minitest (>= 5.1) - tzinfo (~> 2.0) - zeitwerk (~> 2.3) - addressable (2.8.5) - public_suffix (>= 2.0.2, < 6.0) - algoliasearch (1.27.5) - httpclient (~> 2.8, >= 2.8.3) - json (>= 1.5.1) - atomos (0.1.3) - claide (1.1.0) - cocoapods (1.13.0) - addressable (~> 2.8) - claide (>= 1.0.2, < 2.0) - cocoapods-core (= 1.13.0) - cocoapods-deintegrate (>= 1.0.3, < 2.0) - cocoapods-downloader (>= 1.6.0, < 2.0) - cocoapods-plugins (>= 1.0.0, < 2.0) - cocoapods-search (>= 1.0.0, < 2.0) - cocoapods-trunk (>= 1.6.0, < 2.0) - cocoapods-try (>= 1.1.0, < 2.0) - colored2 (~> 3.1) - escape (~> 0.0.4) - fourflusher (>= 2.3.0, < 3.0) - gh_inspector (~> 1.0) - molinillo (~> 0.8.0) - nap (~> 1.0) - ruby-macho (>= 2.3.0, < 3.0) - xcodeproj (>= 1.23.0, < 2.0) - cocoapods-core (1.13.0) - activesupport (>= 5.0, < 8) - addressable (~> 2.8) - algoliasearch (~> 1.0) - concurrent-ruby (~> 1.1) - fuzzy_match (~> 2.0.4) - nap (~> 1.0) - netrc (~> 0.11) - public_suffix (~> 4.0) - typhoeus (~> 1.0) - cocoapods-deintegrate (1.0.5) - cocoapods-downloader (1.6.3) - cocoapods-plugins (1.0.0) - nap - cocoapods-search (1.0.1) - cocoapods-trunk (1.6.0) - nap (>= 0.8, < 2.0) - netrc (~> 0.11) - cocoapods-try (1.2.0) - colored2 (3.1.2) - concurrent-ruby (1.2.2) - escape (0.0.4) - ethon (0.16.0) - ffi (>= 1.15.0) - ffi (1.16.3) - fourflusher (2.3.1) - fuzzy_match (2.0.4) - gh_inspector (1.1.3) - httpclient (2.8.3) - i18n (1.14.1) - concurrent-ruby (~> 1.0) - json (2.6.3) - minitest (5.20.0) - molinillo (0.8.0) - nanaimo (0.3.0) - nap (1.1.0) - netrc (0.11.0) - public_suffix (4.0.7) - rexml (3.2.6) - ruby-macho (2.5.1) - typhoeus (1.4.0) - ethon (>= 0.9.0) - tzinfo (2.0.6) - concurrent-ruby (~> 1.0) - xcodeproj (1.23.0) - CFPropertyList (>= 2.3.3, < 4.0) - atomos (~> 0.1.3) - claide (>= 1.0.2, < 2.0) - colored2 (~> 3.1) - nanaimo (~> 0.3.0) - rexml (~> 3.2.4) - zeitwerk (2.6.12) - -PLATFORMS - ruby - -DEPENDENCIES - activesupport (>= 6.1.7.3, < 7.1.0) - cocoapods (~> 1.13) - -RUBY VERSION - ruby 2.6.10p210 - -BUNDLED WITH - 1.17.2 diff --git a/LICENSE b/LICENSE deleted file mode 100644 index f288702..0000000 --- a/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - 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 - (at your option) 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 . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/README.md b/README.md deleted file mode 100644 index 12470c3..0000000 --- a/README.md +++ /dev/null @@ -1,79 +0,0 @@ -This is a new [**React Native**](https://reactnative.dev) project, bootstrapped using [`@react-native-community/cli`](https://github.com/react-native-community/cli). - -# Getting Started - ->**Note**: Make sure you have completed the [React Native - Environment Setup](https://reactnative.dev/docs/environment-setup) instructions till "Creating a new application" step, before proceeding. - -## Step 1: Start the Metro Server - -First, you will need to start **Metro**, the JavaScript _bundler_ that ships _with_ React Native. - -To start Metro, run the following command from the _root_ of your React Native project: - -```bash -# using npm -npm start - -# OR using Yarn -yarn start -``` - -## Step 2: Start your Application - -Let Metro Bundler run in its _own_ terminal. Open a _new_ terminal from the _root_ of your React Native project. Run the following command to start your _Android_ or _iOS_ app: - -### For Android - -```bash -# using npm -npm run android - -# OR using Yarn -yarn android -``` - -### For iOS - -```bash -# using npm -npm run ios - -# OR using Yarn -yarn ios -``` - -If everything is set up _correctly_, you should see your new app running in your _Android Emulator_ or _iOS Simulator_ shortly provided you have set up your emulator/simulator correctly. - -This is one way to run your app — you can also run it directly from within Android Studio and Xcode respectively. - -## Step 3: Modifying your App - -Now that you have successfully run the app, let's modify it. - -1. Open `App.tsx` in your text editor of choice and edit some lines. -2. For **Android**: Press the R key twice or select **"Reload"** from the **Developer Menu** (Ctrl + M (on Window and Linux) or Cmd ⌘ + M (on macOS)) to see your changes! - - For **iOS**: Hit Cmd ⌘ + R in your iOS Simulator to reload the app and see your changes! - -## Congratulations! :tada: - -You've successfully run and modified your React Native App. :partying_face: - -### Now what? - -- If you want to add this new React Native code to an existing application, check out the [Integration guide](https://reactnative.dev/docs/integration-with-existing-apps). -- If you're curious to learn more about React Native, check out the [Introduction to React Native](https://reactnative.dev/docs/getting-started). - -# Troubleshooting - -If you can't get this to work, see the [Troubleshooting](https://reactnative.dev/docs/troubleshooting) page. - -# Learn More - -To learn more about React Native, take a look at the following resources: - -- [React Native Website](https://reactnative.dev) - learn more about React Native. -- [Getting Started](https://reactnative.dev/docs/environment-setup) - an **overview** of React Native and how setup your environment. -- [Learn the Basics](https://reactnative.dev/docs/getting-started) - a **guided tour** of the React Native **basics**. -- [Blog](https://reactnative.dev/blog) - read the latest official React Native **Blog** posts. -- [`@facebook/react-native`](https://github.com/facebook/react-native) - the Open Source; GitHub **repository** for React Native. diff --git a/__tests__/App.test.tsx b/__tests__/App.test.tsx deleted file mode 100644 index 3413ac1..0000000 --- a/__tests__/App.test.tsx +++ /dev/null @@ -1,17 +0,0 @@ -/** - * @format - */ - -import 'react-native'; -import React from 'react'; -import App from '../App'; - -// Note: import explicitly to use the types shiped with jest. -import {it} from '@jest/globals'; - -// Note: test renderer must be required after react-native. -import renderer from 'react-test-renderer'; - -it('renders correctly', () => { - renderer.create(); -}); diff --git a/android/app/build.gradle b/android/app/build.gradle deleted file mode 100644 index e791973..0000000 --- a/android/app/build.gradle +++ /dev/null @@ -1,123 +0,0 @@ -apply plugin: "com.android.application" -apply plugin: "com.facebook.react" - -/** - * This is the configuration block to customize your React Native Android app. - * By default you don't need to apply any configuration, just uncomment the lines you need. - */ -react { - /* Folders */ - // The root of your project, i.e. where "package.json" lives. Default is '..' - // root = file("../") - // The folder where the react-native NPM package is. Default is ../node_modules/react-native - // reactNativeDir = file("../node_modules/react-native") - // The folder where the react-native Codegen package is. Default is ../node_modules/@react-native/codegen - // codegenDir = file("../node_modules/@react-native/codegen") - // The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js - // cliFile = file("../node_modules/react-native/cli.js") - - /* Variants */ - // The list of variants to that are debuggable. For those we're going to - // skip the bundling of the JS bundle and the assets. By default is just 'debug'. - // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants. - // debuggableVariants = ["liteDebug", "prodDebug"] - - /* Bundling */ - // A list containing the node command and its flags. Default is just 'node'. - // nodeExecutableAndArgs = ["node"] - // - // The command to run when bundling. By default is 'bundle' - // bundleCommand = "ram-bundle" - // - // The path to the CLI configuration file. Default is empty. - // bundleConfig = file(../rn-cli.config.js) - // - // The name of the generated asset file containing your JS bundle - // bundleAssetName = "MyApplication.android.bundle" - // - // The entry file for bundle generation. Default is 'index.android.js' or 'index.js' - // entryFile = file("../js/MyApplication.android.js") - // - // A list of extra flags to pass to the 'bundle' commands. - // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle - // extraPackagerArgs = [] - - /* Hermes Commands */ - // The hermes compiler command to run. By default it is 'hermesc' - // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc" - // - // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" - // hermesFlags = ["-O", "-output-source-map"] -} - -/** - * Set this to true to Run Proguard on Release builds to minify the Java bytecode. - */ -def enableProguardInReleaseBuilds = false - -/** - * The preferred build flavor of JavaScriptCore (JSC) - * - * For example, to use the international variant, you can use: - * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` - * - * The international variant includes ICU i18n library and necessary data - * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that - * give correct results when using with locales other than en-US. Note that - * this variant is about 6MiB larger per architecture than default. - */ -def jscFlavor = 'org.webkit:android-jsc:+' - -android { - ndkVersion rootProject.ext.ndkVersion - - compileSdkVersion rootProject.ext.compileSdkVersion - - namespace "com.mobilepos" - defaultConfig { - applicationId "com.mobilepos" - minSdkVersion rootProject.ext.minSdkVersion - targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 1 - versionName "1.0" - } - signingConfigs { - debug { - storeFile file('debug.keystore') - storePassword 'android' - keyAlias 'androiddebugkey' - keyPassword 'android' - } - } - buildTypes { - debug { - signingConfig signingConfigs.debug - } - release { - // Caution! In production, you need to generate your own keystore file. - // see https://reactnative.dev/docs/signed-apk-android. - signingConfig signingConfigs.debug - minifyEnabled enableProguardInReleaseBuilds - proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" - } - } -} - -dependencies { - // The version of react-native is set by the React Native Gradle Plugin - implementation("com.facebook.react:react-android") - - debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") - debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") { - exclude group:'com.squareup.okhttp3', module:'okhttp' - } - - debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") - if (hermesEnabled.toBoolean()) { - implementation("com.facebook.react:hermes-android") - } else { - implementation jscFlavor - } -} - -apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) diff --git a/android/app/debug.keystore b/android/app/debug.keystore deleted file mode 100644 index 364e105ed39fbfd62001429a68140672b06ec0de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2257 zcmchYXEfYt8;7T1^dLH$VOTZ%2NOdOH5j5LYLtZ0q7x-V8_6gU5)#7dkq{HTmsfNq zB3ZqcAxeY^G10@?efK?Q&)M(qInVv!xjx+IKEL}p*K@LYvIzo#AZG>st5|P)KF1_Z;y){W{<7K{nl!CPuE z_^(!C(Ol0n8 zK13*rzAtW>(wULKPRYLd7G18F8#1P`V*9`(Poj26eOXYyBVZPno~Cvvhx7vPjAuZo zF?VD!zB~QG(!zbw#qsxT8%BSpqMZ4f70ZPn-3y$L8{EVbbN9$H`B&Z1quk9tgp5FM zuxp3pJ0b8u|3+#5bkJ4SRnCF2l7#DyLYXYY8*?OuAwK4E6J{0N=O3QNVzQ$L#FKkR zi-c@&!nDvezOV$i$Lr}iF$XEcwnybQ6WZrMKuw8gCL^U#D;q3t&HpTbqyD%vG=TeDlzCT~MXUPC|Leb-Uk+ z=vnMd(|>ld?Fh>V8poP;q;;nc@en$|rnP0ytzD&fFkCeUE^kG9Kx4wUh!!rpjwKDP zyw_e|a^x_w3E zP}}@$g>*LLJ4i0`Gx)qltL}@;mDv}D*xR^oeWcWdPkW@Uu)B^X&4W1$p6}ze!zudJ zyiLg@uggoMIArBr*27EZV7djDg@W1MaL+rcZ-lrANJQ%%>u8)ZMWU@R2qtnmG(acP z0d_^!t>}5W zpT`*2NR+0+SpTHb+6Js4b;%LJB;B_-ChhnU5py}iJtku*hm5F0!iql8Hrpcy1aYbT z1*dKC5ua6pMX@@iONI?Hpr%h;&YaXp9n!ND7-=a%BD7v&g zOO41M6EbE24mJ#S$Ui0-brR5ML%@|ndz^)YLMMV1atna{Fw<;TF@>d&F|!Z>8eg>>hkFrV)W+uv=`^F9^e zzzM2*oOjT9%gLoub%(R57p-`TXFe#oh1_{&N-YN z<}artH|m=d8TQuKSWE)Z%puU|g|^^NFwC#N=@dPhasyYjoy(fdEVfKR@cXKHZV-`06HsP`|Ftx;8(YD$fFXumLWbGnu$GMqRncXYY9mwz9$ap zQtfZB^_BeNYITh^hA7+(XNFox5WMeG_LtJ%*Q}$8VKDI_p8^pqX)}NMb`0e|wgF7D zuQACY_Ua<1ri{;Jwt@_1sW9zzdgnyh_O#8y+C;LcZq6=4e^cs6KvmK@$vVpKFGbQ= z$)Eux5C|Fx;Gtmv9^#Y-g@7Rt7*eLp5n!gJmn7&B_L$G?NCN`AP>cXQEz}%F%K;vUs{+l4Q{}eWW;ATe2 zqvXzxoIDy(u;F2q1JH7Sf;{jy_j})F+cKlIOmNfjBGHoG^CN zM|Ho&&X|L-36f}Q-obEACz`sI%2f&k>z5c$2TyTSj~vmO)BW~+N^kt`Jt@R|s!){H ze1_eCrlNaPkJQhL$WG&iRvF*YG=gXd1IyYQ9ew|iYn7r~g!wOnw;@n42>enAxBv*A zEmV*N#sxdicyNM=A4|yaOC5MByts}s_Hpfj|y<6G=o=!3S@eIFKDdpR7|FY>L&Wat&oW&cm&X~ z5Bt>Fcq(fgnvlvLSYg&o6>&fY`ODg4`V^lWWD=%oJ#Kbad2u~! zLECFS*??>|vDsNR&pH=Ze0Eo`sC_G`OjoEKVHY|wmwlX&(XBE<@sx3Hd^gtd-fNwUHsylg06p`U2y_={u}Bc - - - - - - - - diff --git a/android/app/src/debug/java/com/mobilepos/ReactNativeFlipper.java b/android/app/src/debug/java/com/mobilepos/ReactNativeFlipper.java deleted file mode 100644 index 40d63c5..0000000 --- a/android/app/src/debug/java/com/mobilepos/ReactNativeFlipper.java +++ /dev/null @@ -1,75 +0,0 @@ -/** - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - *

This source code is licensed under the MIT license found in the LICENSE file in the root - * directory of this source tree. - */ -package com.mobilepos; - -import android.content.Context; -import com.facebook.flipper.android.AndroidFlipperClient; -import com.facebook.flipper.android.utils.FlipperUtils; -import com.facebook.flipper.core.FlipperClient; -import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin; -import com.facebook.flipper.plugins.databases.DatabasesFlipperPlugin; -import com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin; -import com.facebook.flipper.plugins.inspector.DescriptorMapping; -import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin; -import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor; -import com.facebook.flipper.plugins.network.NetworkFlipperPlugin; -import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin; -import com.facebook.react.ReactInstanceEventListener; -import com.facebook.react.ReactInstanceManager; -import com.facebook.react.bridge.ReactContext; -import com.facebook.react.modules.network.NetworkingModule; -import okhttp3.OkHttpClient; - -/** - * Class responsible of loading Flipper inside your React Native application. This is the debug - * flavor of it. Here you can add your own plugins and customize the Flipper setup. - */ -public class ReactNativeFlipper { - public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { - if (FlipperUtils.shouldEnableFlipper(context)) { - final FlipperClient client = AndroidFlipperClient.getInstance(context); - - client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults())); - client.addPlugin(new DatabasesFlipperPlugin(context)); - client.addPlugin(new SharedPreferencesFlipperPlugin(context)); - client.addPlugin(CrashReporterPlugin.getInstance()); - - NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin(); - NetworkingModule.setCustomClientBuilder( - new NetworkingModule.CustomClientBuilder() { - @Override - public void apply(OkHttpClient.Builder builder) { - builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin)); - } - }); - client.addPlugin(networkFlipperPlugin); - client.start(); - - // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized - // Hence we run if after all native modules have been initialized - ReactContext reactContext = reactInstanceManager.getCurrentReactContext(); - if (reactContext == null) { - reactInstanceManager.addReactInstanceEventListener( - new ReactInstanceEventListener() { - @Override - public void onReactContextInitialized(ReactContext reactContext) { - reactInstanceManager.removeReactInstanceEventListener(this); - reactContext.runOnNativeModulesQueueThread( - new Runnable() { - @Override - public void run() { - client.addPlugin(new FrescoFlipperPlugin()); - } - }); - } - }); - } else { - client.addPlugin(new FrescoFlipperPlugin()); - } - } - } -} diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml deleted file mode 100644 index 4122f36..0000000 --- a/android/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - diff --git a/android/app/src/main/java/com/mobilepos/MainActivity.java b/android/app/src/main/java/com/mobilepos/MainActivity.java deleted file mode 100644 index 2cb2ad8..0000000 --- a/android/app/src/main/java/com/mobilepos/MainActivity.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.mobilepos; - -import android.os.Bundle; // required for onCreate parameter - -import com.facebook.react.ReactActivity; -import com.facebook.react.ReactActivityDelegate; -import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; -import com.facebook.react.defaults.DefaultReactActivityDelegate; - -public class MainActivity extends ReactActivity { - - /* - * Added for React Natigation - * - */ - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(null); - } - - /** - * Returns the name of the main component registered from JavaScript. This is used to schedule - * rendering of the component. - */ - @Override - protected String getMainComponentName() { - return "mobilePos"; - } - - /** - * Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link - * DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React - * (aka React 18) with two boolean flags. - */ - @Override - protected ReactActivityDelegate createReactActivityDelegate() { - return new DefaultReactActivityDelegate( - this, - getMainComponentName(), - // If you opted-in for the New Architecture, we enable the Fabric Renderer. - DefaultNewArchitectureEntryPoint.getFabricEnabled()); - } -} diff --git a/android/app/src/main/java/com/mobilepos/MainApplication.java b/android/app/src/main/java/com/mobilepos/MainApplication.java deleted file mode 100644 index 586d954..0000000 --- a/android/app/src/main/java/com/mobilepos/MainApplication.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.mobilepos; - -import android.app.Application; -import com.facebook.react.PackageList; -import com.facebook.react.ReactApplication; -import com.facebook.react.ReactNativeHost; -import com.facebook.react.ReactPackage; -import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; -import com.facebook.react.defaults.DefaultReactNativeHost; -import com.facebook.soloader.SoLoader; -import java.util.List; - -public class MainApplication extends Application implements ReactApplication { - - private final ReactNativeHost mReactNativeHost = - new DefaultReactNativeHost(this) { - @Override - public boolean getUseDeveloperSupport() { - return BuildConfig.DEBUG; - } - - @Override - protected List getPackages() { - @SuppressWarnings("UnnecessaryLocalVariable") - List packages = new PackageList(this).getPackages(); - // Packages that cannot be autolinked yet can be added manually here, for example: - // packages.add(new MyReactNativePackage()); - return packages; - } - - @Override - protected String getJSMainModuleName() { - return "index"; - } - - @Override - protected boolean isNewArchEnabled() { - return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; - } - - @Override - protected Boolean isHermesEnabled() { - return BuildConfig.IS_HERMES_ENABLED; - } - }; - - @Override - public ReactNativeHost getReactNativeHost() { - return mReactNativeHost; - } - - @Override - public void onCreate() { - super.onCreate(); - SoLoader.init(this, /* native exopackage */ false); - if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { - // If you opted-in for the New Architecture, we load the native entry point for this app. - DefaultNewArchitectureEntryPoint.load(); - } - ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); - } -} diff --git a/android/app/src/main/res/drawable/rn_edit_text_material.xml b/android/app/src/main/res/drawable/rn_edit_text_material.xml deleted file mode 100644 index 73b37e4..0000000 --- a/android/app/src/main/res/drawable/rn_edit_text_material.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index a2f5908281d070150700378b64a84c7db1f97aa1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3056 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 axPAxe%7rDusX+w*00006jj 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⁣ zwiG+x#%j}{0gU~J8;<|!B1@-XaB@{KORFwrYg_8rOv({b0EO#DbeQRm;B6_9=mXGf z-x|VL{zd`)#@yN}HkCSJbjbNlE|zL3Wm9Q8HY`sV)}3%pgN>cL^67{Z;PPL(*wT8N zUjXU{@|*hvm}({wsAC=x0^ok0%UAz0;sogW{B!nDqk|JJ5x~4NfTDgP49^zeu`csl?5mY@JdQdISc zFs!E{^grmkLnUk9 zny~m)1vws@5BFI<-0Tuo2JWX(0v`W|t(wg;s--L47WTvTMz-8l#TL^=OJNRS2?_Qj z3AKT+gvbyBi#H*-tJ%tWD|>EV3wy|8qxfzS!5RW;Jpl5*zo&^UBU=fG#2}UvRyNkK zA06Dy9;K1ca@r2T>yThYgI!ont$(G{6q#2QT+00r_x0(b)gsE`lBB?2gr55gq^D3Fi&p%E(p9>U%bv zkg1Jco(RbyTX7FDHOnl7-O@ zI$AaIl?9NJKPm(WiBP`1-#CB1QzU>&hKm)fpa5DKE{2$X0hGz-0uZ?cyTk(YC!Y&| zL=1VrNERSA5NA2jq7FACfX4JfPyj5XXl1yv0>~s;eF7L2$>&oMqeTFT2m$y7FlkON z_yurD1yIOvA;5C6016pyxBznGUt0kJ&k5r#;&>Jow`r)sp9R~PmK~lz$3xH%LT*1U zJdOyABZ3!FvNoR*vN$5ykHS8f`jA4zV+|L}i1C4`B2c{R0;UdYxaU|H)2avz@ z=mEYc|2S<+(B2Tj+FkX+2D+yFI!k9lWMA61DJ{)e;lum$(;O87?vGJJe!KtK04+N_ zI*P~t@dUb>9Xh{dbyl{-ZQ(UMgz7$|QfL5XSPkskt^NgctYC#;4WcZB1@%@wy@2t3 z2z0DI7&%b$*Aw~abe?GxE`ez@+6hOh-6*8fHRV{1os$EL@}uUZeG4h1&Be`98q*7j z=3-v+lhIjfWVo12!<>%V^a6lTgW3+_#W6n|p*~==zOH7z$0{LSZk(Tpd7EaD04hnA zL;#fxS0aD{`5^&D`}>0Uq?byDD-l2=!wm_bLcUl4gc(% za1p|itVANvFF>hghAS07Im1;IK;|b*W)}VDyI;BIp2=K*yu2a)j?B|f<44NI$NbmJ z#dE0>jI$fMr&@>4kN8MLFb4&2O9fEKaQg%(QO$4_1rVQywG^CmBLh#}_7gKW3vd?| z2?1^&KWq8}8I^_S0|)MowU_pw$q@nl@Nkn$z>BQq_KA^9yaR`(R3u{{Ig;cwt z@AJ^{ODQCm^neroM9nKNUAXi9RCK`OsP_LuR0PUR(YZCCX5dNF6VzcoK&=b^r`W?ltt|*F zpkoae%ZT{C1h~EcFui~b7fF`vb<<~j_VquuUA$}QqIKYELPp#;{u?q8Dz}WAG-(3; zjrm$i%7UbyZMM(Y{>!uJ#vNB?R~B{6Htp=>e*<{fQQ5W7V(1coCWlOON!MzZxhum| ztZBQpGR z;~#ur^&PockKdV{Q6R>o`Pl{0x!DEbpZ7y9Y;*ZvE!*gU`V1W3znva{f=?WO5I&>B z&hw6}tjECtaghm5z|C#%M;Yf_*pI^};h}Vl=^r9EN=tVDj86D;C$jIJ?K7VP+00000NkvXXu0mjf D5i!M* diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png deleted file mode 100644 index 459ca609d3ae0d3943ab44cdc27feef9256dc6d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7098 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 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 8ca12fe024be86e868d14e91120a6902f8e88ac6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6464 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 B0*L?s diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png deleted file mode 100644 index 8e19b410a1b15ff180f3dacac19395fe3046cdec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10676 zcmV;lDNELgP)um}xpNhCM7m0FQ}4}N1loz9~lvx)@N$zJd<6*u{W9aHJztU)8d8y;?3WdPz&A7QJeFUv+{E$_OFb457DPov zKYK{O^DFs{ApSuA{FLNz6?vik@>8e5x#1eBfU?k4&SP;lt`%BTxnkw{sDSls^$yvr#7NA*&s?gZVd_>Rv*NEb*6Zkcn zTpQm5+>7kJN$=MTQ_~#;5b!%>j&UU=HX-HtFNaj*ZO3v3%R?+kD&@Hn5iL5pzkc<} z!}Vjz^MoN~xma>UAg`3?HmDQH_r$-+6~29-ynfB8BlXkvm55}{k7TadH<~V$bhW)OZXK@1)CrIKcRnSY`tG*oX}4YC&HgKz~^u7 zD?#%P?L~p~dt3#y(89y}P;ij|-Z#KC;98PvlJCjf6TQbsznsL8#78n~B_kaQl}nsm zLHr7z%-FAGd=-!e?C{q62x5i4g4hNuh)LeqTa4ynfC4h(k*e>okrBlLv;YG%yf8!6 zcN)a^5>rp^4L+myO70z(0m`D}$C(eqfV1GpzM+%$6s6$?xF>~%Gzx|$BUZ$=;f)B8 zoQUrc!zB4kT!wqSvJ=ywY-W)3364w!`U>J+49ZE`H~+{!gaM)zFV!?!H+)k8BnOj3 zGvU93auN}g?X^8c`+PFv|EH=R%m)iUN7gssWyTD~uv7prl1iRfRaCFeJUuA@$(p&K z?D+cmhxf`n9B~!?S#d*TeLb^(q~VYS$3KhjfwfMWtZx&PlTZ(i@5HJ?of_Q)0YX99 z35b?W>?=vlb6gtK1ydcF4<@aH|Hgj8r?~QNOPx(YoKT^Xn=?Q%=1uA&-G(}mXdtsT zQuKACS|@G@uBW(SY(cH%% zq+xr%bpGqOGHyw3=8K7;J&hp^g1UsyG zYT24BGeGQukP?&TlOBE2H$2oH>U#E>GtI-fmc)17uc`7FRxJ3A!c%ADN^Z^oi6tYp zjzE+a{r&jt6z^scbd(feWPVEE!lV1I4lfdLhQ|yLdx&1IEV%l1erB&H8X}3=8lIcc zCNPUis-KRbCC z20@WYl&vVEZo!fLXxXs?{|<|Z=>0^-iX;y6{DT$lSo8b|@FZM3U$+W37(A_9<)fnq zP~11?(AKlHI-Lh(`?-@S?(1{t16bc7ESX->9twFP@t8_XK$XxuSFF#R(g7H(U%XvWa zm}J>%4-suYL=gX7-_MsjD27o?I!G888fxV$koLCfOv+Da&OVTG*@(aC9lz_e>*UGS zrX6f-45hd55ya-p_O{FbHEG%Ee9~i(H-B3RZkv`0ZDn$!>MigMZX06&y3RSk-WnL-{cM1 z1TZr|rc*Xaf|_^y&YLc4KK3<@aWfge2jARbRRg1DfJ~%pV9L_@$UADw3EXC_n%p0v zQO*{=88K@W{T?$wCR#S!M!e+R$aDL~EzovN7pbOBvrk&&ASS=Z43No|jrc>}aXXO5 zrd1<|Qypq-h#J*iORN@8YRc&`17u=lqo&L&YV%p#hL%P*WfIfH%ZUC^o#`?IWWr?w zQ^?EgP7!lqlq}ZM}d*sSVz(mqeQrA_huV@M4iwXa>k+%O-ZHW44JrRxLJy zLoHTuEqw(sMcO38n*lQ6ve97<&+Y50NNmVpW{hed@5EgrWfI~ITFJ0D(<|k)ag-~cV z0@-#S9z8&EUfBL7C_53YJ$)2ix^)vhsH;Q&KDdwe{q{2oJ#~b@#Qr?YGHrh;`rz<> z)F&rNr}J@}p8^N(8hLRH`=jpeT@y z2v7WETpnG{qixxkWWyK7(3QJ)RF-$=`O^k3+oY;O;rNnl^kVc*(j(Jb_99(Dw1w;T z4K8fsKDzn|epoWT|5{~*3bCC1>nd5;@=5lApq%3>^U_gQD>5j-O@WH;uEG+4MSBjJkdgtP;JG2`S&&Sa#_w33(yyAux~lnp7>wMXzD4yy_2#Vh+7&WMkWFl9Ohq06ifTiMWIC(|1Fe(3n}U_0(+jGC_(1c@X4vzk6y`)qzH+WXtj>dhI3=)~1Oi0Omh z^vp^i61ge1rO8;F~ncj_=tk zIvnwqFB-?)jER5LdQ?Hi=Kv5dgPZx%XSjc8VLCd4yYK4E88pIi4AGWzwdmrFf6&AF zI-`N3cpnf!Klj%)afJEC-x{^po?kDKD0@>6(}1f2xkCOMS49E?+5^EenLUrqK%EANgiQdAy8BW0e}Fvw`>)CTcvBeX6ZgjWC~(KdFE9hv+M6*t z?loxF7N3yv+}r*v(>9DX;0V1TP3G)L5r}m~e)RO*pc zv#tyehrK*U7ilRPA zk!aAmm9v3`z|hH7+WJ41!*h~g<2G1sUubFoL9b?dbp>%)pHzUZ-n)Z)W(6jh>jY-3 zUq&n%9=y?`ajN7rr3`t68sL^H^MG_rUDQw2$gj4Jb8MXgAW99^EbKmu9*Pv4Rh3=;vUVF30sUrdj!_n0*+m?WCbo^8q2fo|;?vH3OFh4__< zyaqNQdP4&Q+6R)%gv|^b#b|oW*XMMKLhEgy7(3D!poW*Tk`Qn4f*HUBD@U4+eOL|4 zh+hT+hl`Hx6+v(dZi=hGf|lF9JV};bs&Bm{THmunMOu))>8UdnTYV%TFdKB!dzN+?+5S+WYI><_z_6eDC z+WvMv78tB-j%G_;_de;{^Q7!t>Khj7gp^izaCK?7PmUiHevBXbk=s8{114AjWHDj{ z_(0ZvDUl`5mu8_cWw}Ba6$W+4RbZ4H97I^qQrq9Yd$5A!1wSqDNaUXf_sQ%GF7*wX zXFhfrz!d7zZiDhtgk#HcP(aukNVacB**=V7u3*Xwp&aR_R8vnbd1PGG6$}j(F_VMA?KUK~Jd?J)TjC!h3~KL|i&IYtL40AFtv zb_DC5Vt8aT6JhF5fEI0_FM#^zCX2>a=A#}FVOKjnH_(#+q}Ggy0kU*_?=3Ifjr+H$ z0D{~ZO<8+Sll*k^U-Y6DvsCpBP|v8XH*H@U(US~mumH%)dBJRde1f|G&@1J+MvVi( zla}?vMV%}C?xRQOryKvG8`v3bs)mPaL*v7}=z1;z?uq)tAg6HwY9Ihbhu^awAJU&S zK#m{H4)PVmJ!}eqpy%MRP$Pe(&D;?N7($!Oz=8uTxRyl1Wg*V=gE z5PBge1q~I%qmY6Ol#1^O?u~P=44?CDh*GEXjSmoi`y;!_V+I2o>H!jms@u4HII9l^ z=&`W@f)v#1KQ8O!bY@+=fC3VBA@A7jQt^q~fz}*7i0(grY=jujW3=vAHS&qyN!B3* z;l=MjJrW~O7Sz5xp2Z?EtA`naLM239gw8Ub=%IHPY<00fb5 zozf%j+(s|urpUn~5r5pE7yi0taDcx4`#K81u*kwAk(cvQ$vx_F{wd}8h=eKDCE$M(iD9_QGJh zr0e(Z>QuRZ+`ff^GZPu%;bA#_^$&vsboSa6V!jmN0SV4dBKN4v`C)aESBtZV7J~U( zOc3e47Zx3Ux67y(o?#7;!=y1jxEueEF#$^c_PoxG_pq)GZLU2`d>%!3rdJjkrAK!2 z!2>jNPceo_9v)xpmu)_EgxsU9*GT^QoERVik+LSzH$Z{Ax7_GFY+!HA0MSfDyXT(k z?vob%yRiU**{7No8PKK&w77Z?8j#9IJ#hv1O^!lS%kt0n7@x79#}+R-TuINbiBfotv)O^y=kD0AkUNhrP$U_@qXE zYpkIR$Zgi=#6Os0^$m7rt1kV3&R~;r&xn%>8xzDHk!yob^vyrl^*R$4R_u5eYdHc> zk}^bkAIjLe{t{-Q8+D@9&dz9Q;o$+RGT7l8sx<~c5IBs*Dp_bAwqQRM2olfEe}Vk4 zc9Vt3hx$Z%0|;xNF=aW(Z*%CEmg_ z-riR#1Wjb9t+D^_K$%|E`_m#&XHzQ*&~vzFCzYIJB6Ieap%urgb=%UsC<9^hC4{(B z(3+*N>|JNdhT54KE$HT~okqq-teADE3Vn9^sA!>%+fb|98XIO zePvP!J8>9Ao~cC(u@>UqZhO(v+C!ob_m!fdtCwsACbR*lqtAwwQ@{hCy1%pm)*>|2 z*4U}vUNFO;Lw9~?Rw9)osm$D4f)?XmUvN$e8eWjjsm+Gr-@$~6iMgqWH+%YAV1gAu z7NbW)FU+RvtZ75ADtlW83vAW@YkP-BMr{8tV}A+L9?({@=u8(K9O&F z4CiS*&nHDa>J}36GR;VAs~I41Kfit308jVeg0#zIVj;(cr8EHqE6<OP0C9kbOl`)daY)$O<0J;;?A%Ve z&#H!_rNfB84*1o6aD2oLL(Ywd^#ZTmyK9Dlqg=at2TjDGCcH@qymjUqbf4FvGxc*ap|#6x@}Ug@+NK z6j_PV43T(wmxf+(J5kT~r++|VKw>6X0o1~R#{);Yll!>QeP1cfzTvOK0-Ndpf;nGz znqZirxrk&)Llzz-fKnnEL_I{Lt#O<8-0}IX?!m#sfdv{wY{3p7aF*=sI^w@wUdl;1 zOaQ`8mA(OjeI_2&*O_79989c3v-g+F!6OGyYBVD}5>W|JMvMsd5c6BV0+zUQBP_6V zpc@@&KR+A%>NFy5N0^}idafWHEjUnt=I<|KC5!NPqrW(T!j9Ll{*5Zxa^f&K*Ftjr zawS=CfJrKpWc85)DE8bbv=YBAz#5gkRLaSR_+g6q@-*6f>L^-JT`4CEtE*JX@Z1zF z0E&{AR0fE|??ogjZqfU3(3!I1@j9|~pd0<5UcI0vX5Z_hd1HMA@j|Yv)N2|G^GS;q zXYi@WB9s-#b)He4kH+MtvHHF`8K0kl-oxkemC0RJl}RX;os2R(GXc%6Dn>&D@rZ}- zPb!J(Btl-2B2W+9n6vkmpjV4Bl?F&viUK%NfXXmH_#u%8D2iDWAcFW0m@khVp9{N9 z7&DbP(1Gk7XhlD$GZqiugk2XTu>nJ*bAY;J1CcQR(gq#?Wq4+yGC*3wqY5A{@Bl2z z0I7yYB2tLJe5Lb|+h?DCkK5jdFd$~3g?0d0ShVgG6l4p2kXQKH?S=$M3{jLui1Y>! zz77*W+QP#K5C?de0OAUdGC-Q)A%ZOd%_kz}%W2+>L}>etfq`~pMyi$o5kJUY><4vq zdT;7z-}KnW2H$K&gE`X+Kok~5fVjY;1Q17f6amr&9##OQG7B#?nzXIwwheWiM!)a| zv^^L9r_m3B3^W^?E?~yI`Qf!(wU9Ow3)Pu3odJ?DRk8qag@-*r>fw?ty;X?M?5GeGW6VdRS@X}kbfC>Ph0tSHC!=o7> zcJP1%;)e#h-i!cg0S|z}2#|Ws1LjKvukP!X{cY{zF$mh+!rtD7tND^MV;y)-ur`c4 zFKkU>&&+tOw*1y*YwVu5X8==z0UVItNs(wyMIoAiwTI+0%@V;VuNP&ZIh92y2&-(k zMi0;exUrZe67@)CmgjR)(0ttRFy~A9c}gUif~+K|%mVQAO^-$M_Lq|w4!my^J_<}z zA?b<|Lu5*2A)0rv67|lAMLqF*s7KWjivr(f4{^A5$f4qjg zmxyepp;Y!W2-Y|f2|IZNMV_rib8+3xIZ#3BP@Ul4G|a88M6V}A)%k~vnh0%eYirwy zYwt@rDs5q5-M(vANBrvba>DMCi52-;ZT+q5*4X2*N*nu4*&?uY&0IEM1_>fN{*6zdU!wDfFIgPxZWn<9+^rhhu0i5u{>8eHa7)5yJ`s} z&wJ6fw${~r$vM*&uCCxryLOp0cDzs0u6k{{^!ivQ8f-O~8dg3KgU_SbRiA)C08Qiv zzKj+=kD{M5JWJLGV(;@P`ZkfJkBl^sz+u>GVaJz7K;+rg z!o@{r=UEY;R%DelCy0#G3URLBevOL)`* zqy;>(0F74#5KDMKCSwZ$ri&3ES$H7!lg1Z%!6v&4XYGNurEM%p9@7gz5@*`VqGLzU zLT+15_Xc^?TikPBx22wj=^SZ zs}Z0G&hW4Wh|SoR5uCl&CJhu&k`der5ui5sCU4Xu6TeIXd)x3=z%U;RBc ztv*7s+cIP7jSY}0h}ev6NdZcX;0%u}Krp$FD?Ca7=>U&BKrt%d;n#!acKLYTY21bZ zv@JUu!uL_#BXe+Yf|!Brh+$)}DSJRnnTjC}Ljoio_TWn)VmmNO0IF00kQSrrFee?R z7Bc~)&8WJ1fTFY-RVM%)WCnDP(H}A& zhBl&Y)kS8&w1q_z9gU_85|G-ofg9`TvUE|dcg!}aDQgOV5Q)DNUCuQ)WYLDoh0la$WgJ4Rotv zl73SGB!!5ft4;u_0)Tewlu1aIlv4$e7NhEr2*wDImhcdODhmiee(7;S&)u7m^TJuj zaGUfdZDVciLfWbcO&60EYDq)jov~-{4mK7`pYEYc&w@icvLv$}mP~63fQaCyo2Ss* zQVo!HDH$pO(lRB35g-omfawMe^nP_^y$^poa`|Z9SFjm3X%lhVbe0*eXklR@hpazj z*S1q9FNjjxxVQ}d->$7c!mNdD=TFtot*O#!`|xS|OHuf_lO(fI+uy#9pUO$a*#sOA z$Rylwv>Hv8d{!)xY^h8tQ6spaLFVi$MVo35lV#;3pFwgMqm(I19?9JSfizUeB!pxz zcn=V0Ex3&Ey6Qwt{o0znXyk^^eztLT9tLee+r-Wk{2opI5JWWXJ32UktqpML9XRs6 z#MobUojQtE)E=tWWgF@baOJ{w)?sH(aQZ!{b=ZagG!MYD6E_&Z4eyD-|6~MGQ5j`# z30VOQ`vMH%@f}La~!CD6da+o0vbz|)znwna{EC?cc;6-Qy+!o+g*weOYZHn;7XD^B!GzUq~%s$X>)e$w?x< z)Z{%y9JjKLLjf7F$S-*}(L4YTB*B9jlapkLL@J3tktnH*$W0;n%wWo3O+r{wMM+Xs z312FZ01r9LkcJA*uaczmNv}$!;O~IX;}g9Njo7gI5`{<7<8q*FVrk0oC=PXy=|H#u zKz|QgXXl|oYge50=7$rDoC!A zwmuJZ)k$wFA`CfyIQN20w{F8JJU+C?)xnrU75an-ynV+u_V&K`HPF)1vY*SRA5?qo z4wJ-*MB1#|r!Rm&z+V6}B?l0Pe4bzc2%Dl|*~vO(62cT4m?6OkkScgmqa{JY29NC< zP`3p$kKj5U0CjC6u5(A)29~DgG_&oQS$!%!~kOnUbLrAa(Fytpgg!eRC*soc&G_uG_vu^N8!(Nuj&` z#K5BpB1am;3cv;J?KETBHutTeLYRx~!*UT%eFH@HlYnR~Xd#ZtV2l89$md}MNCP~) z#NEhk{c@q>)Yl@QPDyT$xQ-p4baOh=17y<6kArSxF%WmxdX1ad1CA`8-MhaZCnN0!T$BAvIYd$Ypk2y6B4Si@|dVJW!`?+j>!lxq~SM z3ias|wWr-lH!C{=QINH>!!YMh<{ktaPS&W&jIB2|K;l(L3bab7U{MCX3JClZr|>x|SL)ShO73*>(Um3?TLG`qsoXZfidM1G@Xto|+)Gp=VaS;Q^9D6v=9A zD>#=4Ano&cVAicz1Lcqje*g}Ec0HrKfAs*ZXNAq1<|_lpmo==DKZL81tN)a z-G$7_Zqvrk!pe$hqqYtX!@JFyp6HMtm!DR zlY%zt)46}pc&GU@O5HcDdK3`1gJ_^hRfR&SkCYK(7=R>uMx>}8RhI`yOL*WM)W?DK zd0>f^Fa5DbD2!_Kr?c<^^IC=K{kB<@x5 zk$1vQb~leE3UKtFT;Jvph*;*-lWW8bLCF!qLW$cXy+TXr@ad&Qi)bp0anoS zpc={A)@G=~8PB3aVN#6)WyEEr;5gAbX#X_(I$X6; zYpSX{&_t+i#6PmJ^0%_Jm6*0ZSo(JyIABWG_ol_VE?acLZPV(9(0h|=CK;f}D(n=h zH}=5R*n3cbAWn;2{Pym{R zy1w&fY{!B9--3Im@f>2Rti&3}gO=5fmc5Nk_uLGR9zYUnB;q6423g?ViKSTj!bo(N z;35C#KI82u-qJ4{Gf19eyVUlUW%|^ zZnCIfP7;y+_-`g5|IbPi^%ca4`U?_-{WBAUA;nq3Pmb&tjVjJW{j(BKKdjOErbeS) zu{%)Dotu!~`sIJ|mMlEx{_fPMF3&yt4!*}{=)Lxad&l5N;yDtHBLSza865qC)RtDR zEzNTQ$I=Twxjl$hva*tBC1{|2c0A9QyeEzMpx1&~aRXK^t{J*{-KFPtZ@v9|LL_>( zFq5pc7*d#lFa&5!Sq>Ugk%wTXYPEvD6H=0eMi-=`m$Q@5wh937R(}&TIUbMRpz@FH=p^muMS&k8rPW&v5Uw3|(oN%o@i?AX(9{eMj0e z=|;zbye%X!HEJd)P*|Sr9279#aqQ@Y0n?{$9=Lcxs@J0TE4-I}RLfhl^rG*&<(K_F zUwy@Y^V+`y!q?sCv2DYDAOYd)Z}@Ln_qX4s&#w5cTltGm=(3C6OBdC;FPKx|J8x!c z@AsyKx#Dxexm&kxJ(ymrFTJ)z(*WQ-$UTbhwHv+nPP8mmW^jxPQY+dck!Yn(GBCl| zkS7UDcIeQPG+ujYNI(&)epEv|1C8I--hO0z57$xcyu3ne{CQ(R;BWX0{zm~B2aNYrwV0HSx8{J;1$)?@1OKiJ7vbWif-(1RyDDC0Urd(C)7@ec}NqAJW4iP}%mf zbm-iNbeE}?u#}fR3L^cV^!xa?mYqBIAtni6fpfz(#K5@GYdg|=k%dN4+nB*IQJC7% zz*}ePoH|fP)rD#VciPxq#I!);i-%JJsPv!`K;iJCfOym2c+zupr{{E{*RZ44w4wK4 zhUN){sTFNBOX{3j)0j#J>OV=q>OxJ619fN}DGajWNdM=ZG3C0HJC*5|F-luRx+T-!eR#IDS=86u9ga*$qLhV6wmY2 a9sdtN6eHRrdyqB&0000AvglfA9NypXa{#=A1b*&&-_9nK?6&dOB)k#LUD105bLa$_BV6=HEq#kGmWEawY(P zYgJuY!N_}RGo8TO$oTXsB$&89>#C*cCdYLmNX~ke#Hv9KA93kET{$`$PbI2&f<=QO zbYEuG&fq#8;U|Hp%+iMX($XltD84sh%`HcA9=yrw*x5Rd?dw|aj_wW|b=kga#C;uk zY)LO?99@%_7kX6dzR(&*!tnq4;>`zco!?9(Az&zTo|L_j^WL&gF7wJuI**)H&y&sO z9l;NhRvPV@eM$C25(Y1oLfTY%Qu06J{1!LY%l6`?e{u8in|(1@!4MJk2$1+uIsPqnf+k()k8h#rg7tMJHVtWaqYT zq|_R>T}xsUyk)<9e2b1o1pB702Pc9ve?7kQpF2}x}2=dBPVaUdm7-ZjF+bUL0vak))KQnKW)qx!vgbJE?)QXqi+7Po!iYjGEI9xeX+3}trhX=ZOA z6m<4$ajUa5?TbuamQOsfYFx!_%v5Pca-z3$eHCN9QVeZN0(`DY*CwYcn=Z{IwS{|W zMVA?tHKL`t<(1kV)n+5idi^{`iXLpvnO=;Rx{T4}wriDGR@79T*3GDl#qU(VPNH?_ z+WNh=8;jQwV zM#imv9eB3r+LQaLX%UgUmS$Q-V|+Ygp>ovUbJ{jiX~_q+go2a38CD$M(o|A(oS*f( zh?L!-@KukR?4c%)OIZBg${L2g5L6Pa=XF(yBP@&9b|agsWh)uYDy{MN@*W9zbE^QG zPZ8wOAg?zDskn|*wf&j@!i7Pbw6fw_Jr}n|+l>O-_8a2*TEQA7y+XU@NUD_gnXUKG z2}$1=_w*$M6~;^rw4#*yT22U!%e#`&t(A(xyf|-T(y3T1sVLvn_}AGKzdo!w)-*Uq z)`#%}qna5)jZjh2p>&4DK;ogEbdo#F?UZ%H>ljUbLLNV;50EQ$-zmX5OZ~Oiu>6ZIQR6g&! zPTyC(E=$qrR?zuYogtRne89+%HynZlT2P=QPE)k~RavpYct9<_leX;S(cUYWmJ%5i zw<#|0L;Epc1diZ!djsOtxXCrexN0iPy+W$%xrf_3!-ktsYsF?BfO_-+rz;1%p|X0Z z`xS4h<)pP{yf5Y2%`K?M%L1lRyQRhGg2R@R1BO$0TUeSMPUR$cJ)j;QyWQ-2SYJ1? z%~^ILTzh8y5rPT)29-&Qo@%PiVei|f)aGz{7xO>5>77{OmMi}>lo?rwpOta_aN2a} zZ_L3$CVhl%C4|)F%yc_!V?s)E@;~94fP)o1CTwgW@3F@BcS<{+x8_h1m|gj-8eT8~ z{P{;v_nE3QwfJ#=Vz7jq`qgMV1n|+2J0HNKgTY17#cGz07^gpi;87-UU+o*XC;A3g zg??@@etFPbu_%d$CSm+feh%;vd6_sgJ6ydmIB8OZ2ObCNBuk-&Tg}J-dX|>uJe}kmEmBH)Q7uAac~6f=i$joy zJK0c6OM9t_Ef1k*Ry3>%RVQV4P_zwS5s^T+u`MbCH zd6?wSSFRIE`|C9((s}H4ZYxc^RT{P)UbYCc^d0IW&aSPITSpqAIQF6g6&D^@VVnrOzTa^&s3buD4Zh79z^>7JLQH+- zqYS8QcLF8+03Y|4eD30R)L9O+_7gvyxH&uXehWGsGF8ox(YPKFj0 zeO}1^(}~=Cb++)WmDI6QeKp!MtupG%f{wZCy1$n!&RIBjUrS~HF0dp*p%w3uW|XYcuU?@&lSpJS-nf;@|F$`Umi_6zQo)P* zAN?|yXKv+GF@wL}{Z@+e2fPCrPyKWP%8JnsD4{x0N4};B4)_O}kwrPV3fK?Wi2^1> z9|==dt|saLUjuoB-9|amKlwXh1UO#${B=k&OyF9&!@HCh^(P1Z!t`T$%9BxBE^)o# zrb+Lsi5i*!ebE*rcxuhl)knhZ#ON)wO$oi@$3X1Yo6{S=udP&GmK4bkq;tb{^J~U4q82PKlFy7~0oQfA>1ZE&nMwI&x>vEc6U6l>WUM9Dh&x=`RU*Gbxx! zkNtRQF;b=RUB91-eD(xJv`D~Lmt+aUbpk*|itL0+z!SP00+|E6y z`uA#y)}Obo8;y%<&n3om?p6xzZJ%th-0j>wzfmi#6_%M|?B;=zSIm6DyAoM_apC>I zXM6D8M09ojEP0;(Tm6=+iv(2Opx(Oj#^^AOYqkBr2bn&rSZqFl_g%UyrartZl7oXX z-sf{fs&@{EPIHwb9qDY_<^%-#3soQ%QDuSy?jsU+(Fip2|+_ zGrN|zd*<~MKX{Lbhj???lU_IhSOdz4)6#L*Ah zm&9^`M`a&%BRsm}7gG3v#DiB;WAYz|2o$)P`>;wKw>@5~1xl# znaLk1Gsg9W+FM2frk6^A_#Vca3W3`Oq!4wV08%sw2(tG4QPdzk%6LE|<#%m44u|qJ zyU?M#nQ?*VpSqw3iYXL4`rl88NPi0HtH8TIb5i9co;}~0@H+On_0OFWps8>3b*XNL zROE5^A`ad4h3;CKVSt1Kz|T<$S=!5XFZ%6Vi5u+l>6fg(<F3On}Towx%MlobtMeV$xN86aA@wyIsb zpySR3MZYr<`22Zdh0P(}B+{cDNL&Y~SPHU}if;!Las3k+eLw;apzg$Cn=31tX!;`8 zY=|5HvpA^g-d!i?nHGr%`~;Flh)u-a91db%jAcig`GW_KWahiTTh z{}^LvD}yhSsCAb|MoLE2G})=@*?##ViZEif4M<3V`i@tM!^>(*Rgr=M9E%|@2gR-B zJV|}j_)t9!JI+t<`3J6z`iNgqpaz#UNv`wl%dOPql&jUOM&>{9=QR^_l&7V4>`hsJ z^G|jS@;l#xw>et_W*DeS$UNv7$Yq?LHspOA%H3LWvgs9kgq*9fx_t)_w4AYf&erE; zoUk${(?)h)eonZuyEw`pl=f#;ELYvr!4*#ks>oM})C*(SuXf}-zfb9s0fYSo3g&C* zV=nfhl#iZHZ8A?c#4g7pM_Rrg?|bjeon~Ou(U2Voz^zl1+IZQ!G&%DZFh62aK+ek- zIo}{Z&X;+Mut%Mj>T@fUL(+){SDfT6!du|ddt5){zl^BJmNK30o-LWDrxIFSRRt+6 z!mYbqyWs;|mm8gb++|aKrJtx9R=#Vi=s69%I$3gH4DJ(vBFLcl7y^(vnPL2npvJ^j?o{T3??tCz0EKI&uu8tndn zkP*E{3i=Q?WeHe^H6*-O16$ApV$=)$Nqz3J%o|%deE091F8ElmB!tV*#0J2#d^I^`4ktA5yK?Q)z|RG`a?V z6vH1jHr#*xxAsihWpi)FEq@|s`QcppDIGpfxROKBu0<7Fy{apE5|3#IrOxK5OZfiT zjAMJ0KGV~$kv@fkjt4!>L}(9#^U%fwjj7Soc36XR)nDkQ3%8O)y;4K2VSi!6N4Mh@ zw62zp(^}TOjuhC^j`!miC0|X$=v@bbB+t5$f4<4>B;>4L-dJnDu>0!J6a6@}jJN&h z5e^#-V!s9Wub&ovQDiBRQH|Uc+sDm4EBsD^hoLp{bH0m|`La@aQ;Ug8XOExRXK|8f z^?z9pD!y^tS<2~MSIn4a7XMfypgzG#m*nQ%dM@^@iK_bUx$*elFco$VW}e6F=)=J* z3o<(tO11GJCk*0owwI(!QK`Ukf9T;Pd{7*GdM=q|Klu8W#Ibn*K754KV1q`FWw!Tu zep>9~)rzk~X|!cCM0wh46KQ1GO>+TU8SrsBIj*FPcmY7D$cXZ;q6s*Vh)z%o(t;vn zx!K|qj$8j0+q9$yyXv#dz}`dy+B*;=H54B~0IEX%s9R#o6}K@lXi@`Zn-ymH++KpSwT zEpq>t59b$ORT?+07%Qzh8*}&0C2m>=7z55P?UqIjx=Nd z5_RT#G>kXWDMf$`cv#^@V6=CmHr$UfeA!pUv;qQtHbiC6i2y8QN z_e#fn4t6ytGgXu;d7vVGdnkco*$$)h)0U9bYF(y!vQMeBp4HNebA$vCuS3f%VZdk< zA0N@-iIRCci*VNggbxTXO(${yjlZp>R|r93&dmU$WQz=7>t!z_gTUtPbjoj2-X{Rs zrTA$5Jtrt~@cao#5|vM$p+l3M_HC0Ykiw9@7935K_wf*-^|GKh$%+opV7&;?rh9&P zh@9}XUqp-`JNnPs3e9~OrZBIJ1eel)hsimyfZSIAKa-_e!~q3^y@G=z;FN<65|y#S zIBWtzFv3n-*Aa|5F3Z9=zMs!RG6&8j!J;3)knD|vHy=yM(L#G}?m=jXNQ08rzG{Q? z03L8v^?3q`cxQdd42Z9RVo{e%Ga$C`=^7nqlxSf^lZhCTfwJB*!vD&M6QLv2g3NcE zlLNNSl;_UR5*{d}Kf!uIIF!i1cJDS7fMI##KSPmi=TR$DWZKb=cLBWJrF7#XGuhG7 zjcL@fyIHYDII3IRrCBTavFc^BM=uYdvN&GWBrcfogytsZ#mNX@9K+}pNp_= zk9AV-B>m?U~{NIbky_m^|J@%P=#HgBe^ zDfz`6g|`gOJpKE@q~4TH!vrHVNVb%n^e@&ALm85qj|xaBT5I90Ycp`;(u*rwGoyp? zo42?p->1XHi@SD&m=D5+6}|bUFWFw^Ue~(Ns1WQdWg=ux{zyH+AM91|XPZ%d*fiP0agmU%;tlV*!A{7y5(|3pSIw`dLqLknHv_PQBq$*|@+K4(r z(nO>@f;?%pkIO4xr70*Nk#eL*y7x+_=)8hsToX389#3w1KYRW> z*jT10YzQG%=Q$~Vd?jE*NFJ3Q_1xC`bl#coS5x4+(w)Pk{J+G z!)n>NlV4dtbN2@K)QdPtA{jC87jPU@hGv_JS3`DM&#QrL5o|v9pZ!u|C7l8Y!06X} zo>&23nPdehmmoN^p|A!0tiUTr`CHa7lrfP~sQnxYB!UG1e(yGzf9ed??k|R+753Jl z7|p%-Z;}uZWB`691Y{;z%fht0EQ5I=Q=xM!$55sB}?14LLaJP!Sh9=o6Ct`HH&OJAVuCgBpm0G_>L zLgPblVMON9`^+|EfPcuK*NO!3l?TlBFPGtQ7{6XmmBfL}Lk{{Mr*gyq842232l)y! z&EGfE9#VdjQO(a$U8DtYD6#;quA5M_q9pjqqG3-3XgR=iH5haYfFOE#7*m*WlW+;p z?*(QB<`&=?VN8b*zDdAXk|0u&ChUKnuK~u}^00YLP@tffpKM40h@>0qAv>J$ zJrJO6LoW6nQ;Lt_8TqG$3|&uIySi8pIQWB_=t1;Ew5BRl7J?W_#P#Q!jsiS1)t)R& zBm=TT1+G!Pc}xbIpGmNXV5B}zM2aE|pbfY#^zg<53DRF@)}T12BMzF0(fIJ0A+3Z) zF(FCSsFO`ljPqMasO-{OJsw6GD$89qiidf9!om$onI10;i?xPp_7Zxa02^=nHJfV2 zo}1Yu%99UK)~|dQR05$flJ_LP@??KD=@6^q3rd&zl=sq`D155z=wL0%C|=Gl`rS`{ zw-3XN{PCKN>`Mx4Uux^yLNOaIrkrs#Bqr1f%w1cG$Fdo;T7H<^$r|;|#mdi$cevZ* zdUc9(`eHt8@K+4=->Qr*HrT(({2Uj)Bl+GPr7ru{us3&!JKUzXmE_(`3UuU4d?;JL zc1X3KSL^U^==r@m)sd2}-$!fwYMO+)%E6|CLIK_ z##nHbe&&rMSDpx}2%+?FJ^shJ8yjE97(vftaucYh>*)KEqRD9|NrLKH=hV$e9A!~^ z4bADay5RL!GXeJ2_zHiwLYIYD#U!gVUX?0lWn6r52N(6LN{Xi9iK=_HO>X!U%Sq@l zh^!p)kHb1d(Ot9To5AfPe}~eD)OZ0MoXW((BIk$hb?gir611I2@D$KJ^VOg zT4fSfiCU#LYYL*CDCFNS4@bFDJa-HD&yA+x-IPQdMe7%+($&f?mC=n) z%&EO|+G#XLeHlo%(5I?7ol`ugo-_s0FL0#nkfTIT>6E9z50T3{?rk#sL>rRnNM~|9 zbq!>`l)R){K{#)v-}J)R27GTgA_f4XfzXn2${0y<*>7Svs39Rgf5ulzf}LmgT3Eqn z8G!%JRL1Gwj7k#Zh=Le=U`Dd4zH#;|o}L#6L-c(Lz=^Dm0-V6?8-?W5q)|w-V8|R@XK0f;$q`9@OmGmQp4JO_0Zgzau^3zjqT)q;CKx|;eNzuf>j1twm zQVhYEF@QgguW{CYFS%U=FfSW|H*CE2A+vuEH66-Q#2iU|Hp8DbO&^njfDi(!U@PIK z7gKGe-eQ+t4rUUtOnfvN87~ND%ab5b!x8Kexv=DeQHV%lmmMLXSRR33V1Aty75xeT&9+VL0)Pz zHpe~F;-a3{`62`|2n#wq#ktiRT;Lh?1diJGf-G(W%QRhQ=!Jr8$ZYk3OReu(4&Gvg zpl?-6>j!|kPL7>&DkSoxD|)&8W{jZ2fm<;ybWp=h-n|lrVTDs2KpsZq8Q@_M%r>_G z6KCrGAXxq8UNzXk`cExGjmaZsNdrw!&Z+iI)D|i}mo;laGQ-M%`}Lv&JJzx${Fd2` zs~^QJGpsDcGk=sm8SeA2z~=GbR9j%8fE@kpnk59Gk8>W2JHBvC&t8y~%f9?sa~*MT zzP9Q8+4`#QlH>2jX$MYd!H45&7r$Jq^`E!@tm|Bu+=?c(yux?!x_X7iET(66!RFDJ zzB?@ffQNcw6D-yOq*Rav4dB9dVs+0RBr5E*p3whI*rE4%-H25JcTOP^)Sh)#sZzJ+ z$IbOD+T^K=`N6CDCpfKHwv%aj}rTaikoks1a4O*+M}j{W)R#K&nzKm zPg7psVmbDEy1VO-r#xCjVwX&}+zKNECBJ!QguJUSSN_kOkv4T&}pz(^z6}X zGCV=1#|a(xlOI`HtWV8dgfuF4s$*LghD`Amxfcq5mblTfRr+m0tzen&#b|xUxLu~H zK~RBt!`&v4%R?`#kjuBJ$opo+D?{Uaa{a2hC;Ka(&ON7#V0K>#_J%#LVtBRt)u}`s z=j4Xe0jY2@p+RHv*#26?%g93kteo0Q@0;`x2ZCw zUn4`&W-e{5P}Q($ccv`W$#ILg_$6+&?B*0cJk#%;d`QzBB`qy)(UxZZ&Ov}Yokd3N zj~ERapEhGwAMEX1`=zw)*qz1io2i_F)DBjWB|*PHvd4MRPX+%d*|}3CF{@tXNmMe6 zAljfg2r$`|z9qsViLaWuOHk$mb2UHh%?~=#HPf2CPQh;AUrYWW~ zvTV9=)lS#UB-`B5)Kb!Ylg0RA){o3e`19Jl&hb@~zS>>vrFR-^youk^@6>0S` zToim7wzkY|Yt*;aGUy!o{yxd8=*L;orYQC!H#=|pjn&hO>o9B$tJu8TBHmxPPsm-) zM#T(;Z9_uvy1xq;yeeWQV6|}+=O;1%) zGZyIq}2>crU3z2ri)(ut%F~+%S>FR4^Xw()Y-+~&Xp*Ns z$?%1aydpzNIz2aN98}oth>3boYSifQ)J81Of>6k)!`WQWrB;xxXccBzrWe5V*>oMh zon)MEw$@-*!>L`CK}u@x^9-4gfvepI0b8q5QYVXr96{4Q#s2ZelHXxHv~G{GymRer zqyj7m)3yn3z5i4koiIJ!-u=p6QeL|BN+pWd>}TOFOVi01q839$NZ&I_quqb(n~9Wk id-{KKnnu*>l46e`&P3zgUlQEeAE2(Hqg<+p4E|raIYd(c diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png deleted file mode 100644 index 4c19a13c239cb67b8a2134ddd5f325db1d2d5bee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15523 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 BIP(Ai diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml deleted file mode 100644 index f7fcb16..0000000 --- a/android/app/src/main/res/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - mobilePos - diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml deleted file mode 100644 index 7ba83a2..0000000 --- a/android/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - diff --git a/android/app/src/release/java/com/mobilepos/ReactNativeFlipper.java b/android/app/src/release/java/com/mobilepos/ReactNativeFlipper.java deleted file mode 100644 index 31abdb7..0000000 --- a/android/app/src/release/java/com/mobilepos/ReactNativeFlipper.java +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - *

This source code is licensed under the MIT license found in the LICENSE file in the root - * directory of this source tree. - */ -package com.mobilepos; - -import android.content.Context; -import com.facebook.react.ReactInstanceManager; - -/** - * Class responsible of loading Flipper inside your React Native application. This is the release - * flavor of it so it's empty as we don't want to load Flipper. - */ -public class ReactNativeFlipper { - public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { - // Do nothing as we don't want to initialize Flipper on Release. - } -} diff --git a/android/build.gradle b/android/build.gradle deleted file mode 100644 index 34ea718..0000000 --- a/android/build.gradle +++ /dev/null @@ -1,21 +0,0 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. - -buildscript { - ext { - buildToolsVersion = "33.0.0" - minSdkVersion = 21 - compileSdkVersion = 33 - targetSdkVersion = 33 - - // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP. - ndkVersion = "23.1.7779620" - } - repositories { - google() - mavenCentral() - } - dependencies { - classpath("com.android.tools.build:gradle") - classpath("com.facebook.react:react-native-gradle-plugin") - } -} diff --git a/android/gradle.properties b/android/gradle.properties deleted file mode 100644 index a3b2fa1..0000000 --- a/android/gradle.properties +++ /dev/null @@ -1,44 +0,0 @@ -# Project-wide Gradle settings. - -# IDE (e.g. Android Studio) users: -# Gradle settings configured through the IDE *will override* -# any settings specified in this file. - -# For more details on how to configure your build environment visit -# http://www.gradle.org/docs/current/userguide/build_environment.html - -# Specifies the JVM arguments used for the daemon process. -# The setting is particularly useful for tweaking memory settings. -# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m -org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m - -# When configured, Gradle will run in incubating parallel mode. -# This option should only be used with decoupled projects. More details, visit -# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects -# org.gradle.parallel=true - -# AndroidX package structure to make it clearer which packages are bundled with the -# Android operating system, and which are packaged with your app's APK -# https://developer.android.com/topic/libraries/support-library/androidx-rn -android.useAndroidX=true -# Automatically convert third-party libraries to use AndroidX -android.enableJetifier=true - -# Version of flipper SDK to use with React Native -FLIPPER_VERSION=0.182.0 - -# Use this property to specify which architecture you want to build. -# You can also override it from the CLI using -# ./gradlew -PreactNativeArchitectures=x86_64 -reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 - -# Use this property to enable support to the new architecture. -# This will allow you to use TurboModules and the Fabric render in -# your application. You should enable this flag either if you want -# to write custom TurboModules/Fabric components OR use libraries that -# are providing them. -newArchEnabled=false - -# Use this property to enable or disable the Hermes JS engine. -# If set to false, you will be using JSC instead. -hermesEnabled=true diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 943f0cbfa754578e88a3dae77fce6e3dea56edbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61574 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 ScNgau(U?ep-K_E5zy1%ZQTdPn diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 6ec1567..0000000 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-all.zip -networkTimeout=10000 -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/android/gradlew b/android/gradlew deleted file mode 100755 index 65dcd68..0000000 --- a/android/gradlew +++ /dev/null @@ -1,244 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -# This is normally unused -# shellcheck disable=SC2034 -APP_BASE_NAME=${0##*/} -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/android/gradlew.bat b/android/gradlew.bat deleted file mode 100644 index 6689b85..0000000 --- a/android/gradlew.bat +++ /dev/null @@ -1,92 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/android/settings.gradle b/android/settings.gradle deleted file mode 100644 index b413350..0000000 --- a/android/settings.gradle +++ /dev/null @@ -1,4 +0,0 @@ -rootProject.name = 'mobilePos' -apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) -include ':app' -includeBuild('../node_modules/@react-native/gradle-plugin') diff --git a/app.json b/app.json deleted file mode 100644 index db973c5..0000000 --- a/app.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "mobilePos", - "displayName": "mobilePos" -} diff --git a/assets/adaptive-icon.png b/assets/adaptive-icon.png deleted file mode 100644 index 03d6f6b6c6727954aec1d8206222769afd178d8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17547 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�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 diff --git a/assets/icon.png b/assets/icon.png deleted file mode 100644 index 84c2dd30fb46a589f8e180712b5b901d8a136c81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32887 zcmeHvc|4Wd+xKejG-;#|PW7Y7&_p73gJwg8G8By@nF^I@pVO~XNIItzB2kVE5n^Ww zyHlv6WR5arED|bH8J=rh_r~^n|9#)j`#hg#-=9x)cdzMM-|Kq~>%Q08?mAjqr%n=` zLecR?egiK6=Kc6O!hbLO(=~(#ZC!1{srwLiUll~bMy51)O9*#P_XX{4tAXoe& z{AaA$2F(qG#CcEdJv5FG_LS|LH|U-n^{GPJbAH{tOYg%%tr`^WUR&k4spj(ZjSK$u z>yqdVqKiC#_8kA~%)E$rQCt1_&x0;5`TO4+QvzJctMqF^Wt}hYYAh99D_Ud0I^KQurLB|3p1groA1O_7T6+BlUaGQb%!lQy9mV96YGNI^}G=6xf7D-Lu_*n-z zE3~G6%_4bcT64S`E1$?fYa3Dgy1_O%I-jHJW_Mc7>eLjn-t$%FC$;a+YLA`hcM`2- z_$8w)z9OTqQ@q7Q{ie+5V6$Yy-1qHI&oz7WtRlO6{?%*LIv+ zG3h<$<$4<@Kow7>iqQGCkDTihScN|%EBxedOT5f#I1FOsE@kGKR`SNM-?lrotmml( zF;D5L&pzE+eVtCEnQ1?e3~-9PwtAHr?KLXcEH2rvVr$UrOODo43E`fTLiplW3Gfi&Aw>1WR?@bJ=RhHE#d8t4Fh5ciw1GR&`w~qAzC&)0{}(Kvavr z1y)||j1eN5lKmgOzcyw&#m6Pjg(8&B=5y3jAA4wAm?p1&+i6136et;3NN2`AeR#b_ z!tF(d+OtOG#g`ht>@U1buOjX)5%w6Dr}y@>vT&CtA+>1CCbOWZM+ zW67jZulU4Lo{Mb%AkC! zj`PW9EZf-D{r<82F(>HwtTKb&rV;p+r9X6;nP|MPb&DwHC;o zKR&~7;l?G=Q|3gy)b-FvnRsCTMA>m($8X#*DEs-8i15G96drRXO$$F8sS1zK$2?7LYF=Z+G6U zr~qRmR=1H0Gey%415{z;CXL5pLPzYMwyp-*PN7p_Ehsk32_INH&CzfaOYK$R zsqq1;?870#q^?l;t#@v<6!iU^v0kNML(2#sqsVb0#10e#L$}vuZh>-z`AqXy-<@(+ zG{sCHJ%7GhS?TtD`eeBhe=lmZQ{Bk@B=6or1%Z#Ac zO11et@RC^L>XjPoCYepwjD7TuPiU$o^7->EJ?V%&YG1 z?7}3Y@}B^?fMbsbzWpqm?g|s|(_{!G_H^G#h;M4ehjWI2dCB9`MT_WTMQ-AkRHA_^ z!*1jg6BdH@^ZSWCMV=pSr+Y=GwZQnMY7Akj__&@7nz@=SW9ycg0wQu%(W1B+Ys=3~ z59$A2r#gcq^PBQl4TOK-1kY9UomWaROT)gAQhrW@ws*?UA1jT+PIIo7c zdqOV1ZVYJu@IH-5`QAPFEVW%hUn%M&O#P(_qI3Gbhhh3HbL4I@{cx+8$fl}ziuXVUx07Dt}8AZrcq-J$Laa0@UR=w4C%i?wa!l79nEo8bro%? z@*l;L(@4Ag`Qy9Nx9=eJAl;6Pe1C&{_j6j%g^pxS_bRM$yfWlcS4~dOD%;7djrYY) zw*SbK681j^U2shhJB7j_(hvK%Hb*4Z%c!N65zq~vf9n=zy3MVq$*o(I-yolRfE)$y z{=sC5beKDITW!PuyJV-=f(LSmN8)x*CUz&H6Kc*n&z!6|in{kI^m5#ne58MLP|aJ( zEG@j)6Uy1G|Dwz^l^${wAH`d?n%PW;vNmm|`}2CGd&bF;I!YLmDK#%Vy=X&8Oms{w zhW*44UHx4{pif?8xmUoCo4!&>%~{nej8c-O;RNq#aZ2~dChAUxF$!GM#46$s!T?-* zv{wbaAbU?vdc}>Iw``Xx8{#yjNuo9a~*R zjTiCzuZJC9&OKIc)?oa8`6BH81jp@ER<`Ca{jl?63yFX5Il-QL!vqJXsSaJ^hNJ^OXk(1UcAY8Q>j?lJus!6n_1Q{~n&^b`p z7LN+;UJ}Xi**#z@{<*t$wp2jLj*~MJm#@x&3hXJ!#qtz>HzqgiVUMC4tJdd>*2%+K zIf`MWxgC;TE_SykvQ;4@wq`xuU$K8ObpIR^TyFGS4A?_-LGLETtV5I{4NuPN zkj#FswTwKk2dZ`V9iGlO|7$lQ>Vfa2Mm@2KGai2bm5y zz>*!y!1>1IEvL)Cpea_T>JEi$yJ5~KoWxl>$AeA>V-MxbcaaNc zA=`n@O@$fZq>B&l8m{43^LKJvM?k9#+iG!w?OtBdXJ_!oUKJ|{7pzxjzE*ZY0>B^!)6NLU4CvD7QXC)vr+HSR{j{yrR#+)th9 z!DtAzXy4bhuMFgw+}2crabV$p`z*B?CFMI55XskFRGSKo{COz_WjG)!wBn>rM|l_x zy4Ej?`NJ`W9B#Pm7p`~&U*5d9 zN#l%mRaQx*1FbQDxrnLOh~yN8XHx5K>Ye*NC?!m%@dfO2{NcFm4NhRyXTF%2KjdAB z8|G;WPnqo0I3+C2+|iLzty_^|%AThi&AIa3yVfRb4yoH+U#|^6O+(BX!#7XTPE(1^dRhH3%|1%UUsy-M$H}PGT3e1Eq~YP zyW*qHM=0S6lyHeYU&xjiH02Wj3Tdmwx$m{$%LFAxL}c;?7aj^1>6*zTH^|+H{Ba_q z((AJUT^q2Q(VG2M4yN{e_$0Y9qwisoXF70yrl}oWev_nmOqoq$(kkWc2|YXKk-B`t z6PfMZi-i4MgCHnYOXI};FtV6!Yo9#d)60-t%O0^9 zzApljk#aT4O4dxiWa5kYFeE{kNnB$M$Ljp`EgGq*@a6*6D%f}Ti$Mo*ZiE^0mNMP$ zJO>fNDe!+LJNea03bi<@N_~U9NBFw!x`EQ8rMyQNF>j%hXvwe3;r#76ie=;ZHbb$t zR#IDrCJ{P3x@H-|0EAi4SiRs;Y0$HsSxJ+-m6#cq|GL|4J;*+aCBdInv#d~^VhQ{a zCuArQAcY&K7qQvI7jeW#L>%rnj7jC}r-2i$$8Uzk-YC|z5lmG$fYX0t$t2Aqkok!5 zG)a0eZH7p2bT~gEg}6GknL5IU4M$^z3I^D4zMT2a;M)V4T9~`3Fp|lY`#$#qEMR3C z-O2MiBeLq_7bu^qC3!1s8ZU-d#|kPqKve`^#O4Dh9u?CzpI$Aqn~b@I>f7yLHVU3I?^g8q2On0559Qlp3J|#KF0@+I?C>Ln2%I+=pjq? zlSkFN#e)rld(fmQ;2lnZ2c!#3sze&l)~Zd066aF>RWk9@#tsH_d2V8uv3}OH#Pl;? zOa$jYyh6rTbnImQW&fpz23bF}B@f?OqDtRO^rKq*jE1A)(-D^3WNTo%2({9)c~2`~gQ zfN8nHS9rfbB_CaKS=sL>+VHVp^m?ipAv zJp~izkxV77ew`zJ~;NdpU*9 z2CbD_q&&R1K38sXjs|+7gl=Zn4SYLDADFsQ!(~UTP;(WfOMQHn-kSmc`pvANuM-Hn z2W^Yq5~(#*H0FxH@Pqf;_)a!h(77|$9_D2~{m(VN0}n-LFj(a;zS9wct^pDOAOHee zzz~7Spno7l;6nfimcXe33W6v@Z9))s0R%xFLa87~761f6vOuXI$ge31f@A?e5F`tf z3W8*Tq98~X0EGWp$-*xKuPghWb-KK96nA_2VUd5t>=Q5UEV~jdZ0FMXlE^>3dw(DmbMpPEF$R+H4k@}>1R-_RHD^b!~iML}RR0K)$)qoE(2 z=p~Svq99lo00@G00i}XqT|iL~tP21H!McD_L6G856a*;_fFMW~C>8#fCJU?czU-m9 zTzBAh01CtqA6R4h>Nov>?P0;Q|KEJe&ST~5q&wvoU!+?B@EXcirWU1@O@-`b4{oR- zL^S+#{4A&viraq(S*_F61v^Lx+is{rDsHCuhc^-P;QA^KpYZJQO_iTus|RZd@3Z^V zgvSZu{5@WSlNBU*5i?iz_!QS;YEaAo;}KWd1cyM3-lUazUB!A*yn4SG9JGML46N;g z-4^x-(&;SrWF{4S=z+;iIL5~Q19uo4e*CUy6Cttow0ZDq{Cn=Q3=^2^qX%hqn_=gw zjxgO^pmXI0-P&P#KSe3kw(lR9D*1DBHEe8{U3&n^xjwHvjiA@jyxj+)N8c-bh4f!X zlxdu)FGEPFf7y#NXt>ymC(DLgi=l@dxRHT3rGUi8MW5G0PX#07JNGpMrJjjmo>tCr4WW zZY$z_pUFaxW!Ud-{dI1zOHi@l)joPUGx#V|)sr$q5jQ&hsf8mQyHorVAtkNlZDk+I zzYXXN_W)+G7z1lS?;kuMOVWoI9;$SF_8f_ zd<>#}>!Qyb5yI}6>teMC>Nc@(OtbHA;gk%w;y}hqx8_#>7;8R4T(cbZ@sK2$W;%~R z-lIn;P&FG+%T9jZ4t<1AW_tdZXbq&5w05vlq&+hXFnd2=#)FX04KLkAC_-8YhOPd( z`xIp7E2p2DInfG(^-p~FU!_5a2tRt5>1ST zPBh>gg7#B%nh??1C+-xx-^jIq9X0_Surnq&7e|k~7o)s)EYXRp1c{0mv`W6c1BI|X zu-a#)+VM(PB|`jj&jZKv#-hIV&)VC+U;;6JwA2z?ug0y}i%T}%pS3Kom=N>G{KhR& zi7+28+=J$EJaZg8TxvOQz4AwW6Z1>^9^Ls)4)i>d(`6QfY0wTyNyd|b47Jq#e zOd}87S+IE_-OkI3*9~*ey><3yXyMPGdnz>Ef)4QKDjBV=1z@IZY20U&8Q}LtM3t~s z(H2v^snHiQ+S7bYH)}S%hLc?+_yx|ho$^Yvn(jo;V_10>=Hlo215Rue6)$`3wN?}K zx*E3wg^ybXf*jDhFPm|;;S30}8u#UgU(8qX8BKz(UUh4|l%G}x1ZGR)Rw9mqOUss4 z-5EfiTh8ChDq%+}$byz?7+&ME)NT|B_uO||%sv15LYOccU?Jf%%sdD?C0yUgwf*Hs z7^E6^`ss*;h)@`MB9rR7yIkj11O)PxO^()DPMN9mFz8!fl1MTXwaK8)^be-Dy#uo- zei0Vr)x56(tdA{(7R*`s{WoA6>t^n)wev${wgMg4-nfEBSesYHWy@_O7 zjEB)MOyo0KeUa9j#9bz-paKKfj0_$D4;&N~d=T3?id_3W2~aV`ZOts%sa{~9EJeE0 zi~S0<&Cv~9;_nBpoh8gXWsvXajcFW1q%OQMQC(&Q*p`k);f>@?x=&fZ0Dmo?_N9DV zZ+1q1D)x_O+*qgdY;$r%K$)g7x0G$yxpsz_QNW^^kvgGID3YhTT>JIqWayS#;<6MZ zwy-=LSz%;%&a}#96p0m!+`D;T&w-yIx>2ns?(@I9x((; zLjswGrS;d89W39Y0riQcJoOChx8N%DTJxUtLBF%K)cP#1+!hCd5r^L>S9_)esf68P_p$gz<@N=(z(8&;Lgb~BDXUipj$IG9 zRJr}`FX@t9uAoWNMkHufI0gb5GpsqszSV7mL1UfN=wX_vD^?VLPTMr0YXaeJ(cLL) zrgcmB5j_7igJPVwxY&cn)Y8iqocb{Jv(i4kzzD*v#Eige+8$4IJrv26M)&T9x6s$j(4!-u5Iz!2JEE$*!=mfSj4fO0%b!)R81CFdd)B%)f z5O$e%&!D0!o3!6{6uTkvZy)e0JTEV$jx*a2zgch)#+te}Q0jbNX8hljhJRzXS)!r= zo=3J0NK2GDnh?^Ve^E9=)i$LIloX7|VT1F>Uy9jM<(MH(Sbb-#9cs!w&1xYWUZhrX zkr`WmoZQxozJGz2(OLK==4E#18|fo}ygc{`66}ojoDac6-h!2jFpnqVB@dHm(UI178nRt--e*KcMl|gbT zm!?>zqOL3Z=rV2Uk9(M>!%$M!mzv)UyyZTSy!zb_{S2^&JWDDHyNlvfu`fDK_x|!X zZl{|ozE7eplV(w@xK2??z_f^sKAi=2#u+O`ax#qiYj=410U+!S)Z}AtkgGI_vn|x6 z*{H9)&!wvql8J_xmmTRF0a)?~e=VX-4P;QX1{iLMNeKCGN&r=Jtb>ny|0 z?dOW8i(-g`XQo})dC46QBY=orpQa*W>-3h%4N1WKpnziVkOU6QxtKAL<9sc^f5FAB zz+LjC!Tozzp_S8z4$KLa3lJtstLy0#V(Lg4N)!*7TRw1nKo4sWb|5BDrGKUWvONsk z3|tNv%uTNg8wP$*Uqc-i2!@Byxx!PXnb=2SL(@wr{G$)0ZU?7f9S7XlZ0dP0rox6- zX980PfY-ePRDkOp28US9@BOE!jsO_uD9I@}awRVISR9{O$|DSlq5#$q4nI)#M+Q~g zqZpB(Cc6cRTY4O#-nSrs>J5P`%)BS)hIwp}Uyk??BW996S4k$#^`u!TT(N6VBl8~? z7_^|D1y74vx9J4UT^y%I28>cw6lI!<;@M=86s95mgaZ3Oo{~bDiUH&VpzH9p-va>3V$he$Ic+cBUIvt)sK&5S;e!Mwzk zUFo8Rkp1`r30w)kbcc{Z}8pd7Jm$@pgE;-1^>JY5^ldhRZrQGktB@eN|`5Fy5Qok>? znI{^+Otv30v1_}kxS5qN7GO&&9AnX$?uhomaq+wuYX=Osw)d~+sGDG118%c`6m?#oCSvAnElks_oY&TiF*u|Foql1k2>ywldQ&5n77Czpc>030$ZQ57cnP+>*i9ADxU&aQZKv3s8vQ6$r+~b&B0pD?kw1 z6)#T?*1;(hB{6ddUr$NGda@ZE0&5mBb&?D-dK1z>XAG}X%)QB)pLvCtwCgP76<);= z*DT}}V)mo6>E!P@A1;RC@XVqn_+I4m`seLm!BatGgX>=ib&)ZkPaOsywqj}Lymu8nz#BgGY@8!7It`@4oMitolIj+{YTX*f^)V5vcjWmI(fH)@PHGNy)3lu@k$NFNA z&QVM4lwqJ&OUQ-5NDiVE+Gy)l7bq#r8zg@zbL_a}n7O5#gj>zNL2Kk%p|r79#V_tY z)xMfNsEbnB(Ud2Oe|Z>#4OOWap(}_L!yzqqpv>irEtqDbS(YZaM>w<|-Q9uAFI|G| zAN{q?Kvy<-E#pZ(&Bl4W`gedFXV1&Jm$V3e}N^OWoZkk(zLQ_Z6Z z7F?G9#>xlw1}<+BOFG-EX?Pm(Ey3dx+y`Q!0r5-^Q5c-q>krZ8GdL~u~3~Y zx8Ap@yVfzlPen#bae%37d+WNRTN%+`;j0s=G>ccE*42kwEq`Bw#%<30)2(Y-R^#a(c1={EEDb$$0<1pN+~Pf)20L&%t(N(Nm~`NAzhHB{4+Tm#D}Vt!b`_z+ zWE;*+i=FK~-(|`7@zNL3FX%A8kYEA)dLWVlq@RKDgr$k<3=dsuqug6}c8b?4^yE6Y z*drWHUejhU>$PXjZ2o}rABVQCS7n% z3iA2RqyxfP>uB0k)swZ*w$8|HzPD@p6Q&MEW1<-BVH~+nHbuPu`@;4>YiD%1?7)r} zw2~rSGpU%I`S4*I%s%_@eKGo!n;Q!WHoU>p36ziA=t#_j*!0tp-R6+vGo=`Czw%MnfABy_=i=J-`%tS~sNu8Fm zI}lH<+NoY(^OP(8QT~fdd-oBc%zSIN7m-Nl^2{KY z?}b5XG)v_^F!~sk6|k>g3G(}_XGSeX1NF1oZ)S9VJqxSB-4lv~K6VCSt4CRM{ZAGt z(ACop`;-rDZzSC_+&S0G=GuG?CUwyY`w3(`Q-snqA5Bk_Qjka>a<6opa->~hWLqWLVnR5gG?CglYfucCz zQ9!ca7v6C}OmMQ+oRh2yBz^ZJM?_+F8f_oDP_4b}wQJ`9Wt3?^l!pAt4fMnsvBU&| z-obZwHM;b~>l*VDTl9YD1vlLP-~Hsk9U0%0%H&ugTNRdJ#bj)Z=u|BK0KD9v0X!J^Mj41zy23g CvcTW~ diff --git a/assets/logo-dark.png b/assets/logo-dark.png deleted file mode 100644 index 6b2f3e59369b3777d43ee433d3cd1397b0c69368..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6781 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 diff --git a/assets/splash.png b/assets/splash.png deleted file mode 100644 index 1e7c2b9a6a3a98041ed3508e204f94c70101634e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10201 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 App); diff --git a/ios/.xcode.env b/ios/.xcode.env deleted file mode 100644 index 3d5782c..0000000 --- a/ios/.xcode.env +++ /dev/null @@ -1,11 +0,0 @@ -# This `.xcode.env` file is versioned and is used to source the environment -# used when running script phases inside Xcode. -# To customize your local environment, you can create an `.xcode.env.local` -# file that is not versioned. - -# NODE_BINARY variable contains the PATH to the node executable. -# -# Customize the NODE_BINARY variable here. -# For example, to use nvm with brew, add the following line -# . "$(brew --prefix nvm)/nvm.sh" --no-use -export NODE_BINARY=$(command -v node) diff --git a/ios/Podfile b/ios/Podfile deleted file mode 100644 index 9a6130c..0000000 --- a/ios/Podfile +++ /dev/null @@ -1,62 +0,0 @@ -# Resolve react_native_pods.rb with node to allow for hoisting -require Pod::Executable.execute_command('node', ['-p', - 'require.resolve( - "react-native/scripts/react_native_pods.rb", - {paths: [process.argv[1]]}, - )', __dir__]).strip - -platform :ios, min_ios_version_supported -prepare_react_native_project! - -# If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set. -# because `react-native-flipper` depends on (FlipperKit,...) that will be excluded -# -# To fix this you can also exclude `react-native-flipper` using a `react-native.config.js` -# ```js -# module.exports = { -# dependencies: { -# ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}), -# ``` -flipper_config = ENV['NO_FLIPPER'] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled - -linkage = ENV['USE_FRAMEWORKS'] -if linkage != nil - Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green - use_frameworks! :linkage => linkage.to_sym -end - -target 'mobilePos' do - config = use_native_modules! - - # Flags change depending on the env values. - flags = get_default_flags() - - use_react_native!( - :path => config[:reactNativePath], - # Hermes is now enabled by default. Disable by setting this flag to false. - :hermes_enabled => flags[:hermes_enabled], - :fabric_enabled => flags[:fabric_enabled], - # Enables Flipper. - # - # Note that if you have use_frameworks! enabled, Flipper will not work and - # you should disable the next line. - :flipper_configuration => flipper_config, - # An absolute path to your application root. - :app_path => "#{Pod::Config.instance.installation_root}/.." - ) - - target 'mobilePosTests' do - inherit! :complete - # Pods for testing - end - - post_install do |installer| - # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202 - react_native_post_install( - installer, - config[:reactNativePath], - :mac_catalyst_enabled => false - ) - __apply_Xcode_12_5_M1_post_install_workaround(installer) - end -end diff --git a/ios/Podfile.lock b/ios/Podfile.lock deleted file mode 100644 index 3c05e94..0000000 --- a/ios/Podfile.lock +++ /dev/null @@ -1,738 +0,0 @@ -PODS: - - boost (1.76.0) - - CocoaAsyncSocket (7.6.5) - - DoubleConversion (1.1.6) - - FBLazyVector (0.72.6) - - FBReactNativeSpec (0.72.6): - - RCT-Folly (= 2021.07.22.00) - - RCTRequired (= 0.72.6) - - RCTTypeSafety (= 0.72.6) - - React-Core (= 0.72.6) - - React-jsi (= 0.72.6) - - ReactCommon/turbomodule/core (= 0.72.6) - - Flipper (0.182.0): - - Flipper-Folly (~> 2.6) - - Flipper-Boost-iOSX (1.76.0.1.11) - - Flipper-DoubleConversion (3.2.0.1) - - Flipper-Fmt (7.1.7) - - Flipper-Folly (2.6.10): - - Flipper-Boost-iOSX - - Flipper-DoubleConversion - - Flipper-Fmt (= 7.1.7) - - Flipper-Glog - - libevent (~> 2.1.12) - - OpenSSL-Universal (= 1.1.1100) - - Flipper-Glog (0.5.0.5) - - Flipper-PeerTalk (0.0.4) - - FlipperKit (0.182.0): - - FlipperKit/Core (= 0.182.0) - - FlipperKit/Core (0.182.0): - - Flipper (~> 0.182.0) - - FlipperKit/CppBridge - - FlipperKit/FBCxxFollyDynamicConvert - - FlipperKit/FBDefines - - FlipperKit/FKPortForwarding - - SocketRocket (~> 0.6.0) - - FlipperKit/CppBridge (0.182.0): - - Flipper (~> 0.182.0) - - FlipperKit/FBCxxFollyDynamicConvert (0.182.0): - - Flipper-Folly (~> 2.6) - - FlipperKit/FBDefines (0.182.0) - - FlipperKit/FKPortForwarding (0.182.0): - - CocoaAsyncSocket (~> 7.6) - - Flipper-PeerTalk (~> 0.0.4) - - FlipperKit/FlipperKitHighlightOverlay (0.182.0) - - FlipperKit/FlipperKitLayoutHelpers (0.182.0): - - FlipperKit/Core - - FlipperKit/FlipperKitHighlightOverlay - - FlipperKit/FlipperKitLayoutTextSearchable - - FlipperKit/FlipperKitLayoutIOSDescriptors (0.182.0): - - FlipperKit/Core - - FlipperKit/FlipperKitHighlightOverlay - - FlipperKit/FlipperKitLayoutHelpers - - YogaKit (~> 1.18) - - FlipperKit/FlipperKitLayoutPlugin (0.182.0): - - FlipperKit/Core - - FlipperKit/FlipperKitHighlightOverlay - - FlipperKit/FlipperKitLayoutHelpers - - FlipperKit/FlipperKitLayoutIOSDescriptors - - FlipperKit/FlipperKitLayoutTextSearchable - - YogaKit (~> 1.18) - - FlipperKit/FlipperKitLayoutTextSearchable (0.182.0) - - FlipperKit/FlipperKitNetworkPlugin (0.182.0): - - FlipperKit/Core - - FlipperKit/FlipperKitReactPlugin (0.182.0): - - FlipperKit/Core - - FlipperKit/FlipperKitUserDefaultsPlugin (0.182.0): - - FlipperKit/Core - - FlipperKit/SKIOSNetworkPlugin (0.182.0): - - FlipperKit/Core - - FlipperKit/FlipperKitNetworkPlugin - - fmt (6.2.1) - - glog (0.3.5) - - hermes-engine (0.72.6): - - hermes-engine/Pre-built (= 0.72.6) - - hermes-engine/Pre-built (0.72.6) - - libevent (2.1.12) - - OpenSSL-Universal (1.1.1100) - - RCT-Folly (2021.07.22.00): - - boost - - DoubleConversion - - fmt (~> 6.2.1) - - glog - - RCT-Folly/Default (= 2021.07.22.00) - - RCT-Folly/Default (2021.07.22.00): - - boost - - DoubleConversion - - fmt (~> 6.2.1) - - glog - - RCT-Folly/Futures (2021.07.22.00): - - boost - - DoubleConversion - - fmt (~> 6.2.1) - - glog - - libevent - - RCTRequired (0.72.6) - - RCTTypeSafety (0.72.6): - - FBLazyVector (= 0.72.6) - - RCTRequired (= 0.72.6) - - React-Core (= 0.72.6) - - React (0.72.6): - - React-Core (= 0.72.6) - - React-Core/DevSupport (= 0.72.6) - - React-Core/RCTWebSocket (= 0.72.6) - - React-RCTActionSheet (= 0.72.6) - - React-RCTAnimation (= 0.72.6) - - React-RCTBlob (= 0.72.6) - - React-RCTImage (= 0.72.6) - - React-RCTLinking (= 0.72.6) - - React-RCTNetwork (= 0.72.6) - - React-RCTSettings (= 0.72.6) - - React-RCTText (= 0.72.6) - - React-RCTVibration (= 0.72.6) - - React-callinvoker (0.72.6) - - React-Codegen (0.72.6): - - DoubleConversion - - FBReactNativeSpec - - glog - - hermes-engine - - RCT-Folly - - RCTRequired - - RCTTypeSafety - - React-Core - - React-jsi - - React-jsiexecutor - - React-NativeModulesApple - - React-rncore - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - React-Core (0.72.6): - - glog - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.72.6) - - React-cxxreact - - React-hermes - - React-jsi - - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor - - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/CoreModulesHeaders (0.72.6): - - glog - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact - - React-hermes - - React-jsi - - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor - - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/Default (0.72.6): - - glog - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-cxxreact - - React-hermes - - React-jsi - - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor - - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/DevSupport (0.72.6): - - glog - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.72.6) - - React-Core/RCTWebSocket (= 0.72.6) - - React-cxxreact - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector (= 0.72.6) - - React-perflogger - - React-runtimeexecutor - - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/RCTActionSheetHeaders (0.72.6): - - glog - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact - - React-hermes - - React-jsi - - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor - - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/RCTAnimationHeaders (0.72.6): - - glog - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact - - React-hermes - - React-jsi - - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor - - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/RCTBlobHeaders (0.72.6): - - glog - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact - - React-hermes - - React-jsi - - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor - - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/RCTImageHeaders (0.72.6): - - glog - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact - - React-hermes - - React-jsi - - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor - - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/RCTLinkingHeaders (0.72.6): - - glog - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact - - React-hermes - - React-jsi - - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor - - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/RCTNetworkHeaders (0.72.6): - - glog - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact - - React-hermes - - React-jsi - - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor - - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/RCTSettingsHeaders (0.72.6): - - glog - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact - - React-hermes - - React-jsi - - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor - - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/RCTTextHeaders (0.72.6): - - glog - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact - - React-hermes - - React-jsi - - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor - - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/RCTVibrationHeaders (0.72.6): - - glog - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default - - React-cxxreact - - React-hermes - - React-jsi - - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor - - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-Core/RCTWebSocket (0.72.6): - - glog - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.72.6) - - React-cxxreact - - React-hermes - - React-jsi - - React-jsiexecutor - - React-perflogger - - React-runtimeexecutor - - React-utils - - SocketRocket (= 0.6.1) - - Yoga - - React-CoreModules (0.72.6): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.72.6) - - React-Codegen (= 0.72.6) - - React-Core/CoreModulesHeaders (= 0.72.6) - - React-jsi (= 0.72.6) - - React-RCTBlob - - React-RCTImage (= 0.72.6) - - ReactCommon/turbomodule/core (= 0.72.6) - - SocketRocket (= 0.6.1) - - React-cxxreact (0.72.6): - - boost (= 1.76.0) - - DoubleConversion - - glog - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.72.6) - - React-debug (= 0.72.6) - - React-jsi (= 0.72.6) - - React-jsinspector (= 0.72.6) - - React-logger (= 0.72.6) - - React-perflogger (= 0.72.6) - - React-runtimeexecutor (= 0.72.6) - - React-debug (0.72.6) - - React-hermes (0.72.6): - - DoubleConversion - - glog - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - RCT-Folly/Futures (= 2021.07.22.00) - - React-cxxreact (= 0.72.6) - - React-jsi - - React-jsiexecutor (= 0.72.6) - - React-jsinspector (= 0.72.6) - - React-perflogger (= 0.72.6) - - React-jsi (0.72.6): - - boost (= 1.76.0) - - DoubleConversion - - glog - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-jsiexecutor (0.72.6): - - DoubleConversion - - glog - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-cxxreact (= 0.72.6) - - React-jsi (= 0.72.6) - - React-perflogger (= 0.72.6) - - React-jsinspector (0.72.6) - - React-logger (0.72.6): - - glog - - react-native-safe-area-context (4.7.2): - - React-Core - - React-NativeModulesApple (0.72.6): - - hermes-engine - - React-callinvoker - - React-Core - - React-cxxreact - - React-jsi - - React-runtimeexecutor - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - React-perflogger (0.72.6) - - React-RCTActionSheet (0.72.6): - - React-Core/RCTActionSheetHeaders (= 0.72.6) - - React-RCTAnimation (0.72.6): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.72.6) - - React-Codegen (= 0.72.6) - - React-Core/RCTAnimationHeaders (= 0.72.6) - - React-jsi (= 0.72.6) - - ReactCommon/turbomodule/core (= 0.72.6) - - React-RCTAppDelegate (0.72.6): - - RCT-Folly - - RCTRequired - - RCTTypeSafety - - React-Core - - React-CoreModules - - React-hermes - - React-NativeModulesApple - - React-RCTImage - - React-RCTNetwork - - React-runtimescheduler - - ReactCommon/turbomodule/core - - React-RCTBlob (0.72.6): - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.72.6) - - React-Core/RCTBlobHeaders (= 0.72.6) - - React-Core/RCTWebSocket (= 0.72.6) - - React-jsi (= 0.72.6) - - React-RCTNetwork (= 0.72.6) - - ReactCommon/turbomodule/core (= 0.72.6) - - React-RCTImage (0.72.6): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.72.6) - - React-Codegen (= 0.72.6) - - React-Core/RCTImageHeaders (= 0.72.6) - - React-jsi (= 0.72.6) - - React-RCTNetwork (= 0.72.6) - - ReactCommon/turbomodule/core (= 0.72.6) - - React-RCTLinking (0.72.6): - - React-Codegen (= 0.72.6) - - React-Core/RCTLinkingHeaders (= 0.72.6) - - React-jsi (= 0.72.6) - - ReactCommon/turbomodule/core (= 0.72.6) - - React-RCTNetwork (0.72.6): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.72.6) - - React-Codegen (= 0.72.6) - - React-Core/RCTNetworkHeaders (= 0.72.6) - - React-jsi (= 0.72.6) - - ReactCommon/turbomodule/core (= 0.72.6) - - React-RCTSettings (0.72.6): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.72.6) - - React-Codegen (= 0.72.6) - - React-Core/RCTSettingsHeaders (= 0.72.6) - - React-jsi (= 0.72.6) - - ReactCommon/turbomodule/core (= 0.72.6) - - React-RCTText (0.72.6): - - React-Core/RCTTextHeaders (= 0.72.6) - - React-RCTVibration (0.72.6): - - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.72.6) - - React-Core/RCTVibrationHeaders (= 0.72.6) - - React-jsi (= 0.72.6) - - ReactCommon/turbomodule/core (= 0.72.6) - - React-rncore (0.72.6) - - React-runtimeexecutor (0.72.6): - - React-jsi (= 0.72.6) - - React-runtimescheduler (0.72.6): - - glog - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-callinvoker - - React-debug - - React-jsi - - React-runtimeexecutor - - React-utils (0.72.6): - - glog - - RCT-Folly (= 2021.07.22.00) - - React-debug - - ReactCommon/turbomodule/bridging (0.72.6): - - DoubleConversion - - glog - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.72.6) - - React-cxxreact (= 0.72.6) - - React-jsi (= 0.72.6) - - React-logger (= 0.72.6) - - React-perflogger (= 0.72.6) - - ReactCommon/turbomodule/core (0.72.6): - - DoubleConversion - - glog - - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.72.6) - - React-cxxreact (= 0.72.6) - - React-jsi (= 0.72.6) - - React-logger (= 0.72.6) - - React-perflogger (= 0.72.6) - - RNCAsyncStorage (1.19.3): - - React-Core - - RNScreens (3.25.0): - - React-Core - - React-RCTImage - - RNSVG (13.14.0): - - React-Core - - SocketRocket (0.6.1) - - Yoga (1.14.0) - - YogaKit (1.18.1): - - Yoga (~> 1.14) - -DEPENDENCIES: - - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) - - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) - - Flipper (= 0.182.0) - - Flipper-Boost-iOSX (= 1.76.0.1.11) - - Flipper-DoubleConversion (= 3.2.0.1) - - Flipper-Fmt (= 7.1.7) - - Flipper-Folly (= 2.6.10) - - Flipper-Glog (= 0.5.0.5) - - Flipper-PeerTalk (= 0.0.4) - - FlipperKit (= 0.182.0) - - FlipperKit/Core (= 0.182.0) - - FlipperKit/CppBridge (= 0.182.0) - - FlipperKit/FBCxxFollyDynamicConvert (= 0.182.0) - - FlipperKit/FBDefines (= 0.182.0) - - FlipperKit/FKPortForwarding (= 0.182.0) - - FlipperKit/FlipperKitHighlightOverlay (= 0.182.0) - - FlipperKit/FlipperKitLayoutPlugin (= 0.182.0) - - FlipperKit/FlipperKitLayoutTextSearchable (= 0.182.0) - - FlipperKit/FlipperKitNetworkPlugin (= 0.182.0) - - FlipperKit/FlipperKitReactPlugin (= 0.182.0) - - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.182.0) - - FlipperKit/SKIOSNetworkPlugin (= 0.182.0) - - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) - - libevent (~> 2.1.12) - - OpenSSL-Universal (= 1.1.1100) - - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) - - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) - - React (from `../node_modules/react-native/`) - - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) - - React-Codegen (from `build/generated/ios`) - - React-Core (from `../node_modules/react-native/`) - - React-Core/DevSupport (from `../node_modules/react-native/`) - - React-Core/RCTWebSocket (from `../node_modules/react-native/`) - - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) - - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) - - React-debug (from `../node_modules/react-native/ReactCommon/react/debug`) - - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) - - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) - - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) - - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) - - React-logger (from `../node_modules/react-native/ReactCommon/logger`) - - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) - - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) - - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) - - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) - - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) - - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`) - - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) - - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) - - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) - - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) - - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) - - React-RCTText (from `../node_modules/react-native/Libraries/Text`) - - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) - - React-rncore (from `../node_modules/react-native/ReactCommon`) - - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) - - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) - - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`) - - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) - - "RNCAsyncStorage (from `../node_modules/@react-native-async-storage/async-storage`)" - - RNScreens (from `../node_modules/react-native-screens`) - - RNSVG (from `../node_modules/react-native-svg`) - - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) - -SPEC REPOS: - trunk: - - CocoaAsyncSocket - - Flipper - - Flipper-Boost-iOSX - - Flipper-DoubleConversion - - Flipper-Fmt - - Flipper-Folly - - Flipper-Glog - - Flipper-PeerTalk - - FlipperKit - - fmt - - libevent - - OpenSSL-Universal - - SocketRocket - - YogaKit - -EXTERNAL SOURCES: - boost: - :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec" - DoubleConversion: - :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" - FBLazyVector: - :path: "../node_modules/react-native/Libraries/FBLazyVector" - FBReactNativeSpec: - :path: "../node_modules/react-native/React/FBReactNativeSpec" - glog: - :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" - hermes-engine: - :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" - :tag: hermes-2023-08-07-RNv0.72.4-813b2def12bc9df02654b3e3653ae4a68d0572e0 - RCT-Folly: - :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" - RCTRequired: - :path: "../node_modules/react-native/Libraries/RCTRequired" - RCTTypeSafety: - :path: "../node_modules/react-native/Libraries/TypeSafety" - React: - :path: "../node_modules/react-native/" - React-callinvoker: - :path: "../node_modules/react-native/ReactCommon/callinvoker" - React-Codegen: - :path: build/generated/ios - React-Core: - :path: "../node_modules/react-native/" - React-CoreModules: - :path: "../node_modules/react-native/React/CoreModules" - React-cxxreact: - :path: "../node_modules/react-native/ReactCommon/cxxreact" - React-debug: - :path: "../node_modules/react-native/ReactCommon/react/debug" - React-hermes: - :path: "../node_modules/react-native/ReactCommon/hermes" - React-jsi: - :path: "../node_modules/react-native/ReactCommon/jsi" - React-jsiexecutor: - :path: "../node_modules/react-native/ReactCommon/jsiexecutor" - React-jsinspector: - :path: "../node_modules/react-native/ReactCommon/jsinspector" - React-logger: - :path: "../node_modules/react-native/ReactCommon/logger" - react-native-safe-area-context: - :path: "../node_modules/react-native-safe-area-context" - React-NativeModulesApple: - :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios" - React-perflogger: - :path: "../node_modules/react-native/ReactCommon/reactperflogger" - React-RCTActionSheet: - :path: "../node_modules/react-native/Libraries/ActionSheetIOS" - React-RCTAnimation: - :path: "../node_modules/react-native/Libraries/NativeAnimation" - React-RCTAppDelegate: - :path: "../node_modules/react-native/Libraries/AppDelegate" - React-RCTBlob: - :path: "../node_modules/react-native/Libraries/Blob" - React-RCTImage: - :path: "../node_modules/react-native/Libraries/Image" - React-RCTLinking: - :path: "../node_modules/react-native/Libraries/LinkingIOS" - React-RCTNetwork: - :path: "../node_modules/react-native/Libraries/Network" - React-RCTSettings: - :path: "../node_modules/react-native/Libraries/Settings" - React-RCTText: - :path: "../node_modules/react-native/Libraries/Text" - React-RCTVibration: - :path: "../node_modules/react-native/Libraries/Vibration" - React-rncore: - :path: "../node_modules/react-native/ReactCommon" - React-runtimeexecutor: - :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" - React-runtimescheduler: - :path: "../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler" - React-utils: - :path: "../node_modules/react-native/ReactCommon/react/utils" - ReactCommon: - :path: "../node_modules/react-native/ReactCommon" - RNCAsyncStorage: - :path: "../node_modules/@react-native-async-storage/async-storage" - RNScreens: - :path: "../node_modules/react-native-screens" - RNSVG: - :path: "../node_modules/react-native-svg" - Yoga: - :path: "../node_modules/react-native/ReactCommon/yoga" - -SPEC CHECKSUMS: - boost: 57d2868c099736d80fcd648bf211b4431e51a558 - CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 - DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54 - FBLazyVector: 748c0ef74f2bf4b36cfcccf37916806940a64c32 - FBReactNativeSpec: 966f29e4e697de53a3b366355e8f57375c856ad9 - Flipper: 6edb735e6c3e332975d1b17956bcc584eccf5818 - Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c - Flipper-DoubleConversion: 2dc99b02f658daf147069aad9dbd29d8feb06d30 - Flipper-Fmt: 60cbdd92fc254826e61d669a5d87ef7015396a9b - Flipper-Folly: 584845625005ff068a6ebf41f857f468decd26b3 - Flipper-Glog: 70c50ce58ddaf67dc35180db05f191692570f446 - Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9 - FlipperKit: 2efad7007d6745a3f95e4034d547be637f89d3f6 - fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 - glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b - hermes-engine: 8057e75cfc1437b178ac86c8654b24e7fead7f60 - libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 - OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c - RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1 - RCTRequired: 28469809442eb4eb5528462705f7d852948c8a74 - RCTTypeSafety: e9c6c409fca2cc584e5b086862d562540cb38d29 - React: 769f469909b18edfe934f0539fffb319c4c61043 - React-callinvoker: e48ce12c83706401251921896576710d81e54763 - React-Codegen: a136b8094d39fd071994eaa935366e6be2239cb1 - React-Core: e548a186fb01c3a78a9aeeffa212d625ca9511bf - React-CoreModules: d226b22d06ea1bc4e49d3c073b2c6cbb42265405 - React-cxxreact: 44a3560510ead6633b6e02f9fbbdd1772fb40f92 - React-debug: 238501490155574ae9f3f8dd1c74330eba30133e - React-hermes: 46e66dc854124d7645c20bfec0a6be9542826ecd - React-jsi: fbdaf4166bae60524b591b18c851b530c8cdb90c - React-jsiexecutor: 3bf18ff7cb03cd8dfdce08fbbc0d15058c1d71ae - React-jsinspector: 194e32c6aab382d88713ad3dd0025c5f5c4ee072 - React-logger: cebf22b6cf43434e471dc561e5911b40ac01d289 - react-native-safe-area-context: 7aa8e6d9d0f3100a820efb1a98af68aa747f9284 - React-NativeModulesApple: 02e35e9a51e10c6422f04f5e4076a7c02243fff2 - React-perflogger: e3596db7e753f51766bceadc061936ef1472edc3 - React-RCTActionSheet: 17ab132c748b4471012abbcdcf5befe860660485 - React-RCTAnimation: c8bbaab62be5817d2a31c36d5f2571e3f7dcf099 - React-RCTAppDelegate: af1c7dace233deba4b933cd1d6491fe4e3584ad1 - React-RCTBlob: 1bcf3a0341eb8d6950009b1ddb8aefaf46996b8c - React-RCTImage: 670a3486b532292649b1aef3ffddd0b495a5cee4 - React-RCTLinking: bd7ab853144aed463903237e615fd91d11b4f659 - React-RCTNetwork: be86a621f3e4724758f23ad1fdce32474ab3d829 - React-RCTSettings: 4f3a29a6d23ffa639db9701bc29af43f30781058 - React-RCTText: adde32164a243103aaba0b1dc7b0a2599733873e - React-RCTVibration: 6bd85328388ac2e82ae0ca11afe48ad5555b483a - React-rncore: fda7b1ae5918fa7baa259105298a5487875a57c8 - React-runtimeexecutor: 57d85d942862b08f6d15441a0badff2542fd233c - React-runtimescheduler: f23e337008403341177fc52ee4ca94e442c17ede - React-utils: fa59c9a3375fb6f4aeb66714fd3f7f76b43a9f16 - ReactCommon: dd03c17275c200496f346af93a7b94c53f3093a4 - RNCAsyncStorage: c913ede1fa163a71cea118ed4670bbaaa4b511bb - RNScreens: 85d3880b52d34db7b8eeebe2f1a0e807c05e69fa - RNSVG: d00c8f91c3cbf6d476451313a18f04d220d4f396 - SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 - Yoga: b76f1acfda8212aa16b7e26bcce3983230c82603 - YogaKit: f782866e155069a2cca2517aafea43200b01fd5a - -PODFILE CHECKSUM: ac4213111900a9e14d682914b2101b1879b04c84 - -COCOAPODS: 1.11.3 diff --git a/ios/mobilePos.xcodeproj/project.pbxproj b/ios/mobilePos.xcodeproj/project.pbxproj deleted file mode 100644 index 93d4511..0000000 --- a/ios/mobilePos.xcodeproj/project.pbxproj +++ /dev/null @@ -1,719 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 54; - objects = { - -/* Begin PBXBuildFile section */ - 00E356F31AD99517003FC87E /* mobilePosTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* mobilePosTests.m */; }; - 0C80B921A6F3F58F76C31292 /* libPods-mobilePos.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-mobilePos.a */; }; - 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; - 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; - 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 7699B88040F8A987B510C191 /* libPods-mobilePos-mobilePosTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19F6CBCC0A4E27FBF8BF4A61 /* libPods-mobilePos-mobilePosTests.a */; }; - 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 13B07F861A680F5B00A75B9A; - remoteInfo = mobilePos; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 00E356EE1AD99517003FC87E /* mobilePosTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = mobilePosTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 00E356F21AD99517003FC87E /* mobilePosTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = mobilePosTests.m; sourceTree = ""; }; - 13B07F961A680F5B00A75B9A /* mobilePos.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = mobilePos.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = mobilePos/AppDelegate.h; sourceTree = ""; }; - 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = mobilePos/AppDelegate.mm; sourceTree = ""; }; - 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = mobilePos/Images.xcassets; sourceTree = ""; }; - 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = mobilePos/Info.plist; sourceTree = ""; }; - 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = mobilePos/main.m; sourceTree = ""; }; - 19F6CBCC0A4E27FBF8BF4A61 /* libPods-mobilePos-mobilePosTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-mobilePos-mobilePosTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 3B4392A12AC88292D35C810B /* Pods-mobilePos.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-mobilePos.debug.xcconfig"; path = "Target Support Files/Pods-mobilePos/Pods-mobilePos.debug.xcconfig"; sourceTree = ""; }; - 5709B34CF0A7D63546082F79 /* Pods-mobilePos.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-mobilePos.release.xcconfig"; path = "Target Support Files/Pods-mobilePos/Pods-mobilePos.release.xcconfig"; sourceTree = ""; }; - 5B7EB9410499542E8C5724F5 /* Pods-mobilePos-mobilePosTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-mobilePos-mobilePosTests.debug.xcconfig"; path = "Target Support Files/Pods-mobilePos-mobilePosTests/Pods-mobilePos-mobilePosTests.debug.xcconfig"; sourceTree = ""; }; - 5DCACB8F33CDC322A6C60F78 /* libPods-mobilePos.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-mobilePos.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = mobilePos/LaunchScreen.storyboard; sourceTree = ""; }; - 89C6BE57DB24E9ADA2F236DE /* Pods-mobilePos-mobilePosTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-mobilePos-mobilePosTests.release.xcconfig"; path = "Target Support Files/Pods-mobilePos-mobilePosTests/Pods-mobilePos-mobilePosTests.release.xcconfig"; sourceTree = ""; }; - ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 00E356EB1AD99517003FC87E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 7699B88040F8A987B510C191 /* libPods-mobilePos-mobilePosTests.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 0C80B921A6F3F58F76C31292 /* libPods-mobilePos.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 00E356EF1AD99517003FC87E /* mobilePosTests */ = { - isa = PBXGroup; - children = ( - 00E356F21AD99517003FC87E /* mobilePosTests.m */, - 00E356F01AD99517003FC87E /* Supporting Files */, - ); - path = mobilePosTests; - sourceTree = ""; - }; - 00E356F01AD99517003FC87E /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 00E356F11AD99517003FC87E /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 13B07FAE1A68108700A75B9A /* mobilePos */ = { - isa = PBXGroup; - children = ( - 13B07FAF1A68108700A75B9A /* AppDelegate.h */, - 13B07FB01A68108700A75B9A /* AppDelegate.mm */, - 13B07FB51A68108700A75B9A /* Images.xcassets */, - 13B07FB61A68108700A75B9A /* Info.plist */, - 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, - 13B07FB71A68108700A75B9A /* main.m */, - ); - name = mobilePos; - sourceTree = ""; - }; - 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { - isa = PBXGroup; - children = ( - ED297162215061F000B7C4FE /* JavaScriptCore.framework */, - 5DCACB8F33CDC322A6C60F78 /* libPods-mobilePos.a */, - 19F6CBCC0A4E27FBF8BF4A61 /* libPods-mobilePos-mobilePosTests.a */, - ); - name = Frameworks; - sourceTree = ""; - }; - 832341AE1AAA6A7D00B99B32 /* Libraries */ = { - isa = PBXGroup; - children = ( - ); - name = Libraries; - sourceTree = ""; - }; - 83CBB9F61A601CBA00E9B192 = { - isa = PBXGroup; - children = ( - 13B07FAE1A68108700A75B9A /* mobilePos */, - 832341AE1AAA6A7D00B99B32 /* Libraries */, - 00E356EF1AD99517003FC87E /* mobilePosTests */, - 83CBBA001A601CBA00E9B192 /* Products */, - 2D16E6871FA4F8E400B85C8A /* Frameworks */, - BBD78D7AC51CEA395F1C20DB /* Pods */, - ); - indentWidth = 2; - sourceTree = ""; - tabWidth = 2; - usesTabs = 0; - }; - 83CBBA001A601CBA00E9B192 /* Products */ = { - isa = PBXGroup; - children = ( - 13B07F961A680F5B00A75B9A /* mobilePos.app */, - 00E356EE1AD99517003FC87E /* mobilePosTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - BBD78D7AC51CEA395F1C20DB /* Pods */ = { - isa = PBXGroup; - children = ( - 3B4392A12AC88292D35C810B /* Pods-mobilePos.debug.xcconfig */, - 5709B34CF0A7D63546082F79 /* Pods-mobilePos.release.xcconfig */, - 5B7EB9410499542E8C5724F5 /* Pods-mobilePos-mobilePosTests.debug.xcconfig */, - 89C6BE57DB24E9ADA2F236DE /* Pods-mobilePos-mobilePosTests.release.xcconfig */, - ); - path = Pods; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 00E356ED1AD99517003FC87E /* mobilePosTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "mobilePosTests" */; - buildPhases = ( - A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */, - 00E356EA1AD99517003FC87E /* Sources */, - 00E356EB1AD99517003FC87E /* Frameworks */, - 00E356EC1AD99517003FC87E /* Resources */, - C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */, - F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */, - ); - buildRules = ( - ); - dependencies = ( - 00E356F51AD99517003FC87E /* PBXTargetDependency */, - ); - name = mobilePosTests; - productName = mobilePosTests; - productReference = 00E356EE1AD99517003FC87E /* mobilePosTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - 13B07F861A680F5B00A75B9A /* mobilePos */ = { - isa = PBXNativeTarget; - buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "mobilePos" */; - buildPhases = ( - C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */, - FD10A7F022414F080027D42C /* Start Packager */, - 13B07F871A680F5B00A75B9A /* Sources */, - 13B07F8C1A680F5B00A75B9A /* Frameworks */, - 13B07F8E1A680F5B00A75B9A /* Resources */, - 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, - 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */, - E235C05ADACE081382539298 /* [CP] Copy Pods Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = mobilePos; - productName = mobilePos; - productReference = 13B07F961A680F5B00A75B9A /* mobilePos.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 83CBB9F71A601CBA00E9B192 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 1210; - TargetAttributes = { - 00E356ED1AD99517003FC87E = { - CreatedOnToolsVersion = 6.2; - TestTargetID = 13B07F861A680F5B00A75B9A; - }; - 13B07F861A680F5B00A75B9A = { - LastSwiftMigration = 1120; - }; - }; - }; - buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "mobilePos" */; - compatibilityVersion = "Xcode 12.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 83CBB9F61A601CBA00E9B192; - productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 13B07F861A680F5B00A75B9A /* mobilePos */, - 00E356ED1AD99517003FC87E /* mobilePosTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 00E356EC1AD99517003FC87E /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 13B07F8E1A680F5B00A75B9A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, - 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "$(SRCROOT)/.xcode.env.local", - "$(SRCROOT)/.xcode.env", - ); - name = "Bundle React Native code and images"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "set -e\n\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; - }; - 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-mobilePos/Pods-mobilePos-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-mobilePos/Pods-mobilePos-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-mobilePos/Pods-mobilePos-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-mobilePos-mobilePosTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-mobilePos-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-mobilePos-mobilePosTests/Pods-mobilePos-mobilePosTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-mobilePos-mobilePosTests/Pods-mobilePos-mobilePosTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-mobilePos-mobilePosTests/Pods-mobilePos-mobilePosTests-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-mobilePos/Pods-mobilePos-resources-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Copy Pods Resources"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-mobilePos/Pods-mobilePos-resources-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-mobilePos/Pods-mobilePos-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-mobilePos-mobilePosTests/Pods-mobilePos-mobilePosTests-resources-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Copy Pods Resources"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-mobilePos-mobilePosTests/Pods-mobilePos-mobilePosTests-resources-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-mobilePos-mobilePosTests/Pods-mobilePos-mobilePosTests-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - FD10A7F022414F080027D42C /* Start Packager */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - name = "Start Packager"; - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 00E356EA1AD99517003FC87E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 00E356F31AD99517003FC87E /* mobilePosTests.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 13B07F871A680F5B00A75B9A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */, - 13B07FC11A68108700A75B9A /* main.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 13B07F861A680F5B00A75B9A /* mobilePos */; - targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 00E356F61AD99517003FC87E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5B7EB9410499542E8C5724F5 /* Pods-mobilePos-mobilePosTests.debug.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = mobilePosTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 12.4; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - "$(inherited)", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/mobilePos.app/mobilePos"; - }; - name = Debug; - }; - 00E356F71AD99517003FC87E /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 89C6BE57DB24E9ADA2F236DE /* Pods-mobilePos-mobilePosTests.release.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - COPY_PHASE_STRIP = NO; - INFOPLIST_FILE = mobilePosTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 12.4; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - "$(inherited)", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/mobilePos.app/mobilePos"; - }; - name = Release; - }; - 13B07F941A680F5B00A75B9A /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-mobilePos.debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = 1; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = mobilePos/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - OTHER_LDFLAGS = ( - "$(inherited)", - "-ObjC", - "-lc++", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = mobilePos; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Debug; - }; - 13B07F951A680F5B00A75B9A /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-mobilePos.release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = 1; - INFOPLIST_FILE = mobilePos/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - OTHER_LDFLAGS = ( - "$(inherited)", - "-ObjC", - "-lc++", - ); - PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = mobilePos; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Release; - }; - 83CBBA201A601CBA00E9B192 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "c++17"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - _LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION, - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.4; - LD_RUNPATH_SEARCH_PATHS = ( - /usr/lib/swift, - "$(inherited)", - ); - LIBRARY_SEARCH_PATHS = ( - "\"$(SDKROOT)/usr/lib/swift\"", - "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", - "\"$(inherited)\"", - ); - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - OTHER_CFLAGS = "$(inherited)"; - OTHER_CPLUSPLUSFLAGS = ( - "$(OTHER_CFLAGS)", - "-DFOLLY_NO_CONFIG", - "-DFOLLY_MOBILE=1", - "-DFOLLY_USE_LIBCPP=1", - ); - OTHER_LDFLAGS = ( - "$(inherited)", - " ", - ); - REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; - SDKROOT = iphoneos; - }; - name = Debug; - }; - 83CBBA211A601CBA00E9B192 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "c++17"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - _LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION, - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.4; - LD_RUNPATH_SEARCH_PATHS = ( - /usr/lib/swift, - "$(inherited)", - ); - LIBRARY_SEARCH_PATHS = ( - "\"$(SDKROOT)/usr/lib/swift\"", - "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", - "\"$(inherited)\"", - ); - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = "$(inherited)"; - OTHER_CPLUSPLUSFLAGS = ( - "$(OTHER_CFLAGS)", - "-DFOLLY_NO_CONFIG", - "-DFOLLY_MOBILE=1", - "-DFOLLY_USE_LIBCPP=1", - ); - OTHER_LDFLAGS = ( - "$(inherited)", - " ", - ); - REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "mobilePosTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 00E356F61AD99517003FC87E /* Debug */, - 00E356F71AD99517003FC87E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "mobilePos" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 13B07F941A680F5B00A75B9A /* Debug */, - 13B07F951A680F5B00A75B9A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "mobilePos" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 83CBBA201A601CBA00E9B192 /* Debug */, - 83CBBA211A601CBA00E9B192 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; -} diff --git a/ios/mobilePos.xcodeproj/xcshareddata/xcschemes/mobilePos.xcscheme b/ios/mobilePos.xcodeproj/xcshareddata/xcschemes/mobilePos.xcscheme deleted file mode 100644 index 3a80e8f..0000000 --- a/ios/mobilePos.xcodeproj/xcshareddata/xcschemes/mobilePos.xcscheme +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ios/mobilePos.xcworkspace/contents.xcworkspacedata b/ios/mobilePos.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 3ce3cee..0000000 --- a/ios/mobilePos.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/ios/mobilePos/AppDelegate.h b/ios/mobilePos/AppDelegate.h deleted file mode 100644 index 5d28082..0000000 --- a/ios/mobilePos/AppDelegate.h +++ /dev/null @@ -1,6 +0,0 @@ -#import -#import - -@interface AppDelegate : RCTAppDelegate - -@end diff --git a/ios/mobilePos/AppDelegate.mm b/ios/mobilePos/AppDelegate.mm deleted file mode 100644 index 53175f8..0000000 --- a/ios/mobilePos/AppDelegate.mm +++ /dev/null @@ -1,26 +0,0 @@ -#import "AppDelegate.h" - -#import - -@implementation AppDelegate - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ - self.moduleName = @"mobilePos"; - // You can add your custom initial props in the dictionary below. - // They will be passed down to the ViewController used by React Native. - self.initialProps = @{}; - - return [super application:application didFinishLaunchingWithOptions:launchOptions]; -} - -- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge -{ -#if DEBUG - return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"]; -#else - return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; -#endif -} - -@end diff --git a/ios/mobilePos/Images.xcassets/AppIcon.appiconset/Contents.json b/ios/mobilePos/Images.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 8121323..0000000 --- a/ios/mobilePos/Images.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "images" : [ - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "20x20" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "20x20" - }, - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "29x29" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "29x29" - }, - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "40x40" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "40x40" - }, - { - "idiom" : "iphone", - "scale" : "2x", - "size" : "60x60" - }, - { - "idiom" : "iphone", - "scale" : "3x", - "size" : "60x60" - }, - { - "idiom" : "ios-marketing", - "scale" : "1x", - "size" : "1024x1024" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/ios/mobilePos/Images.xcassets/Contents.json b/ios/mobilePos/Images.xcassets/Contents.json deleted file mode 100644 index 2d92bd5..0000000 --- a/ios/mobilePos/Images.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/ios/mobilePos/Info.plist b/ios/mobilePos/Info.plist deleted file mode 100644 index 098a35f..0000000 --- a/ios/mobilePos/Info.plist +++ /dev/null @@ -1,55 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleDisplayName - mobilePos - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - $(MARKETING_VERSION) - CFBundleSignature - ???? - CFBundleVersion - $(CURRENT_PROJECT_VERSION) - LSRequiresIPhoneOS - - NSAppTransportSecurity - - NSExceptionDomains - - localhost - - NSExceptionAllowsInsecureHTTPLoads - - - - - NSLocationWhenInUseUsageDescription - - UILaunchStoryboardName - LaunchScreen - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - - diff --git a/ios/mobilePos/LaunchScreen.storyboard b/ios/mobilePos/LaunchScreen.storyboard deleted file mode 100644 index 85ecb26..0000000 --- a/ios/mobilePos/LaunchScreen.storyboard +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ios/mobilePos/main.m b/ios/mobilePos/main.m deleted file mode 100644 index d645c72..0000000 --- a/ios/mobilePos/main.m +++ /dev/null @@ -1,10 +0,0 @@ -#import - -#import "AppDelegate.h" - -int main(int argc, char *argv[]) -{ - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/ios/mobilePosTests/Info.plist b/ios/mobilePosTests/Info.plist deleted file mode 100644 index ba72822..0000000 --- a/ios/mobilePosTests/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/ios/mobilePosTests/mobilePosTests.m b/ios/mobilePosTests/mobilePosTests.m deleted file mode 100644 index f24d69c..0000000 --- a/ios/mobilePosTests/mobilePosTests.m +++ /dev/null @@ -1,66 +0,0 @@ -#import -#import - -#import -#import - -#define TIMEOUT_SECONDS 600 -#define TEXT_TO_LOOK_FOR @"Welcome to React" - -@interface mobilePosTests : XCTestCase - -@end - -@implementation mobilePosTests - -- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL (^)(UIView *view))test -{ - if (test(view)) { - return YES; - } - for (UIView *subview in [view subviews]) { - if ([self findSubviewInView:subview matching:test]) { - return YES; - } - } - return NO; -} - -- (void)testRendersWelcomeScreen -{ - UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController]; - NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; - BOOL foundElement = NO; - - __block NSString *redboxError = nil; -#ifdef DEBUG - RCTSetLogFunction( - ^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { - if (level >= RCTLogLevelError) { - redboxError = message; - } - }); -#endif - - while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { - [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; - [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; - - foundElement = [self findSubviewInView:vc.view - matching:^BOOL(UIView *view) { - if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { - return YES; - } - return NO; - }]; - } - -#ifdef DEBUG - RCTSetLogFunction(RCTDefaultLogFunction); -#endif - - XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); - XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); -} - -@end diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index 8eb675e..0000000 --- a/jest.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - preset: 'react-native', -}; diff --git a/metro.config.js b/metro.config.js deleted file mode 100644 index ad8f87b..0000000 --- a/metro.config.js +++ /dev/null @@ -1,11 +0,0 @@ -const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config'); - -/** - * Metro configuration - * https://facebook.github.io/metro/docs/configuration - * - * @type {import('metro-config').MetroConfig} - */ -const config = {}; - -module.exports = mergeConfig(getDefaultConfig(__dirname), config); diff --git a/package.json b/package.json deleted file mode 100644 index fb81a3b..0000000 --- a/package.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "mobile-pos", - "version": "0.0.1", - "private": true, - "scripts": { - "android": "react-native run-android", - "ios": "react-native run-ios", - "lint": "eslint .", - "start": "react-native start", - "test": "jest" - }, - "dependencies": { - "@bitcoin-design/bitcoin-icons-react": "^0.1.9", - "@expo/vector-icons": "^13.0.0", - "@react-native-async-storage/async-storage": "^1.19.3", - "@react-native-community/cli-platform-android": "^11.3.9", - "@react-navigation/native": "^6.1.8", - "@react-navigation/native-stack": "^6.9.14", - "expo-checkbox": "^2.5.0", - "expo-font": "^11.6.0", - "expo-haptics": "^12.6.0", - "expo-modules-core": "^1.5.11", - "react": "18.2.0", - "react-native": "0.72.6", - "react-native-keyboard-aware-scroll-view": "^0.9.5", - "react-native-qrcode-svg": "^6.2.0", - "react-native-safe-area-context": "^4.7.2", - "react-native-screens": "^3.25.0", - "react-native-svg": "^13.14.0" - }, - "devDependencies": { - "@babel/core": "^7.20.0", - "@babel/preset-env": "^7.20.0", - "@babel/runtime": "^7.20.0", - "@react-native/eslint-config": "^0.72.2", - "@react-native/metro-config": "^0.72.11", - "@tsconfig/react-native": "^3.0.0", - "@types/react": "^18.0.24", - "@types/react-test-renderer": "^18.0.0", - "babel-jest": "^29.2.1", - "eslint": "^8.19.0", - "jest": "^29.2.1", - "metro-react-native-babel-preset": "0.76.8", - "prettier": "^2.4.1", - "react-native-svg-transformer": "^1.1.0", - "react-test-renderer": "18.2.0", - "typescript": "4.9.5" - }, - "engines": { - "node": ">=16" - } -} diff --git a/src/components/AmountKeyboard.tsx b/src/components/AmountKeyboard.tsx deleted file mode 100644 index c2f595c..0000000 --- a/src/components/AmountKeyboard.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react'; - -import Keyboard from '../ui/Keyboard'; - -interface AmountKeyboardProps { - onKeypressed: (value: string) => void; -} - -const AmountKeyboard: React.FunctionComponent = ({ - onKeypressed, -}) => { - const handlePressKey = (key: string) => { - console.log('🚀 ~ file: AmountKeyboard.tsx:7 ~ handlePressKey ~ key:', key); - onKeypressed(key); - }; - return ; -}; - -export default AmountKeyboard; diff --git a/src/components/LoginKeyboard.tsx b/src/components/LoginKeyboard.tsx deleted file mode 100644 index 666c266..0000000 --- a/src/components/LoginKeyboard.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import React from 'react'; - -import Keyboard from '../ui/Keyboard'; - -interface LoginKeyboardProps { - onKeypressed: (value: string) => void; -} - -const LoginKeyboard: React.FunctionComponent = ({ - onKeypressed, -}) => { - return ; -}; - -export default LoginKeyboard; diff --git a/src/components/PasswordKeyboard.tsx b/src/components/PasswordKeyboard.tsx deleted file mode 100644 index 09e5957..0000000 --- a/src/components/PasswordKeyboard.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react'; - -import Keyboard from '../ui/Keyboard'; - -interface PasswordKeyboardProps { - onKeypressed: (value: string) => void; -} - -const PasswordKeyboard: React.FunctionComponent = ({ - onKeypressed, -}) => { - const handlePressKey = (key: string) => { - onKeypressed(key); - }; - return ; -}; - -export default PasswordKeyboard; diff --git a/src/components/SeedPhraseForm.tsx b/src/components/SeedPhraseForm.tsx deleted file mode 100644 index 608cd09..0000000 --- a/src/components/SeedPhraseForm.tsx +++ /dev/null @@ -1,184 +0,0 @@ -import React, {useRef, useState} from 'react'; -import {StyleSheet, TextInput, View} from 'react-native'; - -import SeedInput from '../ui/SeedInput'; - -interface SeedPhraseFormProps { - setFormValue: (value: any[]) => void; -} - -const SeedPhraseForm: React.FunctionComponent = ({ - setFormValue, -}) => { - const [seedPhrase, setSeedPhrase] = useState([]); - const wordNumber1 = useRef(null); - const wordNumber2 = useRef(null); - const wordNumber3 = useRef(null); - const wordNumber4 = useRef(null); - const wordNumber5 = useRef(null); - const wordNumber6 = useRef(null); - const wordNumber7 = useRef(null); - const wordNumber8 = useRef(null); - const wordNumber9 = useRef(null); - const wordNumber10 = useRef(null); - const wordNumber11 = useRef(null); - const wordNumber12 = useRef(null); - - const onChange = (value: string, i: number) => { - const index = i - 1; - const tempSeedPhrase = seedPhrase; - tempSeedPhrase[index] = value; - setSeedPhrase(tempSeedPhrase); - setFormValue(tempSeedPhrase); - }; - - return ( - - - wordNumber2.current?.focus()} - /> - wordNumber3.current?.focus()} - /> - wordNumber4.current?.focus()} - /> - - - - wordNumber5.current?.focus()} - /> - wordNumber6.current?.focus()} - /> - wordNumber7.current?.focus()} - /> - - - wordNumber8.current?.focus()} - /> - wordNumber9.current?.focus()} - /> - wordNumber10.current?.focus()} - /> - - - wordNumber11.current?.focus()} - /> - wordNumber12.current?.focus()} - /> - - - {/* - wordNumber14.current?.focus()} - /> - wordNumber15.current?.focus()} - /> - - get.length < 15 ? Alert.alert("Error") : Alert.alert("Signup") - } - /> - */} - - ); -}; - -export default SeedPhraseForm; - -const styles = StyleSheet.create({ - seedContainer: { - flexDirection: 'column', - gap: 20, - }, - row: { - flexDirection: 'row', - gap: 20, - }, -}); diff --git a/src/components/SeedPhrasePreview.tsx b/src/components/SeedPhrasePreview.tsx deleted file mode 100644 index 372e2f4..0000000 --- a/src/components/SeedPhrasePreview.tsx +++ /dev/null @@ -1,198 +0,0 @@ -import React, {useRef} from 'react'; -import {StyleSheet, TextInput, View} from 'react-native'; - -import SeedInput from '../ui/SeedInput'; - -type SeedPhraseScheme = [ - string, - string, - string, - string, - string, - string, - string, - string, - string, - string, - string, - string, - string, - string, - string, -]; - -interface SeedPhrasePreviewProps { - phraseList: SeedPhraseScheme; -} - -const SeedPhrasePreview: React.FunctionComponent = ({ - phraseList, -}) => { - const wordNumber1 = useRef(null); - const wordNumber2 = useRef(null); - const wordNumber3 = useRef(null); - const wordNumber4 = useRef(null); - const wordNumber5 = useRef(null); - const wordNumber6 = useRef(null); - const wordNumber7 = useRef(null); - const wordNumber8 = useRef(null); - const wordNumber9 = useRef(null); - const wordNumber10 = useRef(null); - const wordNumber11 = useRef(null); - const wordNumber12 = useRef(null); - const wordNumber13 = useRef(null); - - return ( - - - wordNumber2.current?.focus()} - /> - wordNumber3.current?.focus()} - /> - wordNumber4.current?.focus()} - /> - - - - wordNumber5.current?.focus()} - /> - wordNumber6.current?.focus()} - /> - wordNumber7.current?.focus()} - /> - - - wordNumber8.current?.focus()} - /> - wordNumber9.current?.focus()} - /> - wordNumber10.current?.focus()} - /> - - - wordNumber11.current?.focus()} - /> - wordNumber12.current?.focus()} - /> - wordNumber13.current?.focus()} - /> - - {/* - wordNumber14.current?.focus()} - /> - wordNumber15.current?.focus()} - /> - - get.length < 15 ? Alert.alert("Error") : Alert.alert("Signup") - } - /> - */} - - ); -}; - -export default SeedPhrasePreview; - -const styles = StyleSheet.create({ - seedContainer: { - flexDirection: 'column', - gap: 20, - }, - row: { - flexDirection: 'row', - gap: 20, - }, -}); diff --git a/src/components/Slides/Pagination.tsx b/src/components/Slides/Pagination.tsx deleted file mode 100644 index f52d8f7..0000000 --- a/src/components/Slides/Pagination.tsx +++ /dev/null @@ -1,78 +0,0 @@ -import React from 'react'; -import { - View, - StyleSheet, - Animated, - useColorScheme, - ColorSchemeName, -} from 'react-native'; -import {useDeviceDimensions} from '../../hooks'; - -interface PaginationProps { - data: any[]; - scrollX: any; - visibleIndex: number; -} - -const Pagination: React.FunctionComponent = ({ - data, - scrollX, - visibleIndex, -}) => { - const {width} = useDeviceDimensions(); - const deviceTheme: ColorSchemeName = useColorScheme(); - return ( - - {data.map((_, index) => { - const inputRange = [ - (index - 1) * width, - index * width, - (index + 1) * width, - ]; - const dotWidth = scrollX.interpolate({ - inputRange, - outputRange: [12, 30, 12], - extrapolate: 'clamp', - }); - return ( - - ); - })} - - ); -}; - -export default Pagination; - -const styles = StyleSheet.create({ - container: { - bottom: 50, - flexDirection: 'row', - width: '100%', - alignItems: 'center', - justifyContent: 'center', - }, - dot: { - width: 10, - height: 10, - borderRadius: 6, - marginHorizontal: 3, - backgroundColor: '#ccc', - }, -}); diff --git a/src/components/Slides/index.tsx b/src/components/Slides/index.tsx deleted file mode 100644 index 24ce75b..0000000 --- a/src/components/Slides/index.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import React, {ReactElement, useRef, useState} from 'react'; -import {Animated, FlatList, View, ViewStyle} from 'react-native'; - -import Pagination from './Pagination'; - -interface SlidesProps { - data: any[]; - renderItem: (item: any) => ReactElement; - containerStyles?: ViewStyle; -} - -const Slides: React.FunctionComponent = ({ - data, - renderItem, - containerStyles, -}) => { - const [index, setIndex] = useState(0); - const scrollX = useRef(new Animated.Value(0)).current; - const handleScroll = (event: any) => { - Animated.event( - [ - { - nativeEvent: { - contentOffset: { - x: scrollX, - }, - }, - }, - ], - {useNativeDriver: false}, - )(event); - }; - - const handleOnViewableItemsChanged = useRef(({viewableItems}: any) => { - setIndex(viewableItems[0].index); - }).current; - - return ( - - `${item}${idx}`} - onViewableItemsChanged={handleOnViewableItemsChanged} - /> - - - ); -}; - -export default Slides; diff --git a/src/components/index.tsx b/src/components/index.tsx deleted file mode 100644 index f6b6cad..0000000 --- a/src/components/index.tsx +++ /dev/null @@ -1,6 +0,0 @@ -export {default as SeedPhraseForm} from './SeedPhraseForm'; -export {default as SeedPhrasePreview} from './SeedPhrasePreview'; -export {default as PasswordKeyboard} from './PasswordKeyboard'; -export {default as LoginKeyboard} from './LoginKeyboard'; -export {default as AmountKeyboard} from './AmountKeyboard'; -export {default as Slides} from './Slides'; diff --git a/src/context/authentication.tsx b/src/context/authentication.tsx deleted file mode 100644 index ea95bd9..0000000 --- a/src/context/authentication.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import AsyncStorage from '@react-native-async-storage/async-storage'; -import React, { - createContext, - PropsWithChildren, - useContext, - useEffect, - useState, -} from 'react'; - -type AuthenticationContext = { - logued: boolean; - logIn: () => void; - logOut: () => void; -}; - -const AuthenticationContext = createContext({ - logued: false, - logIn: () => null, - logOut: () => null, -}); - -const AuthenticationProvider: React.FunctionComponent = ({ - children, -}) => { - const [logued, setLogued] = useState(true); - - // useEffect(() => { - // (async () => { - // const isLogued = await AsyncStorage.getItem('account'); - // if (isLogued === 'true') { - // setLogued(true); - // } - // })(); - // }, []); - - const logOut = () => { - setLogued(false); - }; - - const logIn = () => { - setLogued(true); - }; - - return ( - - {children} - - ); -}; - -export default AuthenticationProvider; - -export function useAuthentication() { - return useContext(AuthenticationContext); -} diff --git a/src/features/components/CreatePassword.tsx b/src/features/components/CreatePassword.tsx deleted file mode 100644 index 13ae96e..0000000 --- a/src/features/components/CreatePassword.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import React from 'react'; -import {StyleSheet, View} from 'react-native'; - -import {AutoFlex, CustomText, Flex, Heading, PasswordPoint} from '../../ui'; - -interface CreatePasswordProps { - value: (string | null)[]; -} - -const CreatePassword: React.FunctionComponent = ({ - value, -}) => { - return ( - - - Crear password - - Crea una contraseña para poder acceder a tu cuenta. - - - - - {value.map((el, index) => ( - - ))} - - - - ); -}; - -export default CreatePassword; - -const styles = StyleSheet.create({ - box: { - flex: 1, - alignItems: 'center', - justifyContent: 'center', - }, -}); diff --git a/src/features/components/ValidatePassword.tsx b/src/features/components/ValidatePassword.tsx deleted file mode 100644 index c3a458e..0000000 --- a/src/features/components/ValidatePassword.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import React from 'react'; -import {StyleSheet, View} from 'react-native'; - -import {AutoFlex, CustomText, Flex, Heading, PasswordPoint} from '../../ui'; - -interface ValidatePasswordProps { - value: (string | null)[]; -} - -const ValidatePassword: React.FunctionComponent = ({ - value, -}) => { - return ( - - - Validar password - Valida tu contraseña - - - - {value.map((el, index) => ( - - ))} - - - - ); -}; - -export default ValidatePassword; - -const styles = StyleSheet.create({ - box: { - flex: 1, - alignItems: 'center', - justifyContent: 'center', - }, -}); diff --git a/src/features/components/index.ts b/src/features/components/index.ts deleted file mode 100644 index 167d0f2..0000000 --- a/src/features/components/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export {default as CreatePassword} from './CreatePassword'; -export {default as ValidatePassword} from './ValidatePassword'; diff --git a/src/hooks/index.ts b/src/hooks/index.ts deleted file mode 100644 index 7465151..0000000 --- a/src/hooks/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export {default as useColors} from './useColors'; -export {default as useNavigate} from './useNavigate'; -export {default as useDeviceDimensions} from './useDeviceDimensions'; diff --git a/src/hooks/useColors.tsx b/src/hooks/useColors.tsx deleted file mode 100644 index 176e197..0000000 --- a/src/hooks/useColors.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import {ColorSchemeName, useColorScheme} from 'react-native'; - -import {Colors} from '../settings/Colors'; - -const useColors = () => { - const deviceTheme: ColorSchemeName = useColorScheme(); - - if (deviceTheme === 'light') { - return Colors.light; - } else { - return Colors.dark; - } -}; - -export default useColors; diff --git a/src/hooks/useDeviceDimensions.tsx b/src/hooks/useDeviceDimensions.tsx deleted file mode 100644 index b4a12ab..0000000 --- a/src/hooks/useDeviceDimensions.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import {useWindowDimensions} from 'react-native'; - -const useDeviceDimensions = () => { - const {height, width} = useWindowDimensions(); - const isDeviceSmall: boolean = height <= 650; - - return { - height, - width, - isDeviceSmall, - }; -}; - -export default useDeviceDimensions; diff --git a/src/hooks/useNavigate.tsx b/src/hooks/useNavigate.tsx deleted file mode 100644 index 91f22b7..0000000 --- a/src/hooks/useNavigate.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import {StackActions, useNavigation} from '@react-navigation/native'; -import {Routes} from '../navigators/routes'; - -const useNavigate = () => { - const {navigate, goBack, dispatch} = useNavigation(); - const {replace} = StackActions; - - return { - navigate: (route: Routes, params?: any) => - navigate(route as never, params as never), - goBack, - dispatch: (route: Routes, params?: any) => dispatch(replace(route, params)), - }; -}; - -export default useNavigate; diff --git a/src/navigators/AppStack.tsx b/src/navigators/AppStack.tsx deleted file mode 100644 index 1572e30..0000000 --- a/src/navigators/AppStack.tsx +++ /dev/null @@ -1,77 +0,0 @@ -import React from 'react'; -import {createNativeStackNavigator} from '@react-navigation/native-stack'; - -import DashboardScreen from '../screens/app/DashboardScreen'; -import TransferScreen from '../screens/app/TransferScreen'; -import TransferAmmountScreen from '../screens/app/TransferAmmountScreen'; -import TransferSummaryScreen from '../screens/app/TransferSummaryScreen'; -import TransferSuccessScreen from '../screens/app/TransferSuccessScreen'; -import ReceiveScreen from '../screens/app/ReceiveScreen'; -import SecurityOnboardingScreen from '../screens/app/SecurityOnboardingScreen'; -import SeedPreviewScreen from '../screens/app/SeedPreviewScreen'; -import CheckSeedSuccessScreen from '../screens/app/CheckSeedSuccessScreen'; -import CheckSeedScreen from '../screens/app/CheckSeedScreen'; - -const Stack = createNativeStackNavigator(); - -export default function AppStack() { - return ( - - - - {/* - - - - - - - - */} - - ); -} diff --git a/src/navigators/AuthStack.tsx b/src/navigators/AuthStack.tsx deleted file mode 100644 index 873a52f..0000000 --- a/src/navigators/AuthStack.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from 'react'; -import {createNativeStackNavigator} from '@react-navigation/native-stack'; - -import IntroScreen from '../screens/auth/IntroScreen'; -import SignupSeedScreen from '../screens/auth/SignupSeedScreen'; -import SignupPasswordScreen from '../screens/auth/SignupPasswordScreen'; - -const Stack = createNativeStackNavigator(); - -export default function AuthStack() { - return ( - - - - - - ); -} diff --git a/src/navigators/Router.tsx b/src/navigators/Router.tsx deleted file mode 100644 index 0fc3f4f..0000000 --- a/src/navigators/Router.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react'; -import {createNativeStackNavigator} from '@react-navigation/native-stack'; - -import AppStack from './AppStack'; -import AuthStack from './AuthStack'; -import {useAuthentication} from '../context/authentication'; - -const Stack = createNativeStackNavigator(); - -export default function Router() { - const {logued} = useAuthentication(); - - const CurrentStack = logued ? AppStack : AuthStack; - return ( - - - - ); -} diff --git a/src/navigators/routes.ts b/src/navigators/routes.ts deleted file mode 100644 index befd893..0000000 --- a/src/navigators/routes.ts +++ /dev/null @@ -1,20 +0,0 @@ -export type Routes = - | 'Intro' - | 'SignupSeed' - | 'SignupPassword' - | 'Login' - | 'UI' - | 'Dashboard' - | 'SecurityOnboarding' - | 'SeedPreview' - | 'CheckSeed' - | 'CheckSeedSuccess' - | 'Transfer' - | 'TransferAmmount' - | 'TransferSummary' - | 'TransferSuccess' - | 'Receive' - | 'AppStack' - | 'AuthStack' - | 'LoginStack' - | 'Loading'; diff --git a/src/screens/app/CheckSeedScreen.tsx b/src/screens/app/CheckSeedScreen.tsx deleted file mode 100644 index d94650e..0000000 --- a/src/screens/app/CheckSeedScreen.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import React, {useState} from 'react'; -import {StyleSheet, View} from 'react-native'; -import AsyncStorage from '@react-native-async-storage/async-storage'; -import {KeyboardAwareScrollView} from 'react-native-keyboard-aware-scroll-view'; - -import {useNavigate} from '../../hooks'; -import {SeedPhraseForm} from '../../components'; -import { - Button, - CustomText, - Divider, - Heading, - ScreenView, - Flex, - Container, -} from '../../ui'; - -export default function CheckSeedScreen() { - const {dispatch, goBack} = useNavigate(); - const [seedFormValue, setSeedFormValue] = useState([]); - - const handleSubmit = async () => { - if (seedFormValue.length === 12) { - const phrase = await AsyncStorage?.getItem('phrase'); - if (phrase && phrase === seedFormValue.join(' ')) { - await AsyncStorage.setItem('securityChecked', 'true'); - dispatch('CheckSeedSuccess'); - } - } - }; - return ( - - - - - Check - - - Si bien toda informacion queda almacenada en su dispotivo, - necesita un metodo de seguridad minimo para retirar fondos. - - - - - - - - - - - - - - Recuerda siempre verificar a quien le envias dinero. - - - - Que deseas enviar? - - - {tokens.map((token, index) => ( - - - - - - {token?.name.toLocaleUpperCase()} - - - - $ {token?.price} - - {token?.amount} - - - - {/* */} - - - ))} - - - - - - - ) : ( - - - - - ); -}; - -// const forwaredSeedKeyboard = React.forwardRef(Keyboard) - -export default Keyboard; diff --git a/src/ui/LoadingView.tsx b/src/ui/LoadingView.tsx deleted file mode 100644 index 36270cc..0000000 --- a/src/ui/LoadingView.tsx +++ /dev/null @@ -1,14 +0,0 @@ -/* eslint-disable react-native/no-inline-styles */ -import {ActivityIndicator} from 'react-native'; -import React from 'react'; -import Container from './Container'; - -const LoadingView = () => { - return ( - - - - ); -}; - -export default LoadingView; diff --git a/src/ui/Logo.tsx b/src/ui/Logo.tsx deleted file mode 100644 index 9f09f3a..0000000 --- a/src/ui/Logo.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import React from 'react'; -import {useColorScheme, Image} from 'react-native'; - -const Logo = () => { - const color = useColorScheme(); - const source = - color === 'light' - ? require('../../assets/logo-light.png') - : require('../../assets/logo-dark.png'); - return ; -}; - -export default Logo; diff --git a/src/ui/NumericInput.tsx b/src/ui/NumericInput.tsx deleted file mode 100644 index 66c8d2a..0000000 --- a/src/ui/NumericInput.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import React from 'react'; -import {StyleSheet, TextInput} from 'react-native'; - -import {useColors, useDeviceDimensions} from '../hooks'; - -interface NumericInputProps { - value?: string; - placeholder?: string; - onChange: (value: string) => void; - onSubmit?: () => void; -} - -const NumericInput = ( - {value, onChange, placeholder = ''}: NumericInputProps, - ref: any, -) => { - const {isDeviceSmall} = useDeviceDimensions(); - const colors = useColors(); - const styles = StyleSheet.create({ - input: { - backgroundColor: colors.gray5, - paddingHorizontal: 20, - color: colors.text, - borderRadius: 10, - flex: 1, - }, - smallDevice: { - height: 45, - }, - normalDevice: { - height: 50, - }, - }); - - const handleChange = (inputValue: string) => { - onChange(inputValue); - }; - - return ( - - ); -}; - -const forwaredSeedInput = React.forwardRef(NumericInput); - -export default forwaredSeedInput; diff --git a/src/ui/PasswordPoint.tsx b/src/ui/PasswordPoint.tsx deleted file mode 100644 index 9860420..0000000 --- a/src/ui/PasswordPoint.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import React from 'react'; -import {StyleSheet, View} from 'react-native'; - -import {useColors} from '../hooks'; - -interface PasswordPoint { - active?: boolean; -} - -const PasswordPoint = ({active}: PasswordPoint) => { - const colors = useColors(); - const styles = StyleSheet.create({ - base: { - alignItems: 'center', - justifyContent: 'center', - width: 35, - height: 35, - - backgroundColor: active ? colors.primary : 'transparent', - borderRadius: 8, - }, - circle: { - width: 10, - height: 10, - - backgroundColor: active ? colors.background : colors.gray35, - borderRadius: 999, - }, - }); - - return ( - - - - ); -}; - -const forwaredPasswordPoint = React.forwardRef(PasswordPoint); - -export default forwaredPasswordPoint; diff --git a/src/ui/QRCode.tsx b/src/ui/QRCode.tsx deleted file mode 100644 index 2fb2bb2..0000000 --- a/src/ui/QRCode.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import React from 'react'; -import {StyleSheet, View} from 'react-native'; -import QRCode from 'react-native-qrcode-svg'; - -import {useColors} from '../hooks'; - -interface ComponentProps { - value: string; -} - -const Component: React.FunctionComponent = ({value}) => { - const colorScheme = useColors(); - - const styles = StyleSheet.create({ - box: { - display: 'flex', - justifyContent: 'center', - alignItems: 'center', - width: '100%', - height: '100%', - paddingVertical: 24, - - backgroundColor: colorScheme.white, - // borderRadius: 24, - }, - base: { - // height: '100%', - // minHeight: 100, - }, - }); - - return ( - - - - ); -}; - -export default Component; diff --git a/src/ui/ScreenScrollView.tsx b/src/ui/ScreenScrollView.tsx deleted file mode 100644 index 4b6d63f..0000000 --- a/src/ui/ScreenScrollView.tsx +++ /dev/null @@ -1,38 +0,0 @@ -/* eslint-disable react-native/no-inline-styles */ -import React, {PropsWithChildren} from 'react'; -import {ScrollView, View, ViewStyle} from 'react-native'; - -import {useColors} from '../hooks'; -import ScreenView from './ScreenView'; - -interface ScreenScrollView { - styles?: ViewStyle; -} - -const ScreenScrollView: React.FunctionComponent< - PropsWithChildren -> = ({children, styles}) => { - const color = useColors(); - return ( - - - - {children} - - - - ); -}; - -export default ScreenScrollView; diff --git a/src/ui/ScreenView.tsx b/src/ui/ScreenView.tsx deleted file mode 100644 index 4991563..0000000 --- a/src/ui/ScreenView.tsx +++ /dev/null @@ -1,34 +0,0 @@ -/* eslint-disable react-native/no-inline-styles */ -import React, {PropsWithChildren} from 'react'; -import {SafeAreaView, View, ViewStyle} from 'react-native'; - -import {useColors} from '../hooks'; - -interface ScreenView { - styles?: ViewStyle; -} - -const ScreenView: React.FunctionComponent> = ({ - children, - styles, -}) => { - const color = useColors(); - return ( - - - {children} - - - ); -}; - -export default ScreenView; diff --git a/src/ui/SeedInput.tsx b/src/ui/SeedInput.tsx deleted file mode 100644 index 4f33137..0000000 --- a/src/ui/SeedInput.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import React, {useState} from 'react'; -import {StyleSheet, TextInput, View, Text, Platform} from 'react-native'; - -import {useColors} from '../hooks'; - -interface SeedInput { - number: number; - width?: string | number; - onSubmit?: () => void; - onChange?: (value: string, index: number) => void; - value: string; - disable?: boolean; -} - -const SeedInput = ( - {number, width, onSubmit, onChange, value}: SeedInput, - ref: any, -) => { - const colors = useColors(); - const [isFocus, setIsFocus] = useState(false); - - const onFocus = () => { - setIsFocus(!isFocus); - }; - - const handleChange = (inputValue: string) => { - if (!onChange) { - return null; - } - onChange(inputValue.toLowerCase(), number); - }; - - return ( - - - {number} - - - - ); -}; - -const forwaredSeedInput = React.forwardRef(SeedInput); - -export default forwaredSeedInput; - -const styles = StyleSheet.create({ - inputContainer: { - flexDirection: 'row', - flex: 1, - gap: 4, - }, - input: { - display: 'flex', - flex: 1, - alignItems: 'center', - justifyContent: 'center', - width: '100%', - paddingVertical: Platform.OS === 'ios' ? 12 : 6, - backgroundColor: 'transparent', - borderBottomWidth: 1, - - fontSize: 14, - textAlign: 'center', - }, -}); diff --git a/src/ui/index.ts b/src/ui/index.ts deleted file mode 100644 index 2fcf548..0000000 --- a/src/ui/index.ts +++ /dev/null @@ -1,23 +0,0 @@ -export {default as Logo} from './Logo'; -export {default as ScreenView} from './ScreenView'; -export {default as CustomText} from './CustomText'; -export {default as Divider} from './Divider'; -export {default as Button} from './Button'; -export {default as ButtonCircle} from './ButtonCircle'; -export {default as SeedInput} from './SeedInput'; -export {default as NumericInput} from './NumericInput'; -export {default as Input} from './Input'; -export {default as InputValue} from './InputValue'; -export {default as ScreenScrollView} from './ScreenScrollView'; -export {default as Heading} from './Heading'; -export {default as Card} from './Card'; -export {default as Container} from './Container'; -export {default as Flex} from './Flex'; -export {default as PasswordPoint} from './PasswordPoint'; -export {default as AutoFlex} from './AutoFlex'; -export {default as Header} from './Header'; -export {default as Keyboard} from './Keyboard'; -export {default as LoadingView} from './LoadingView'; -export {default as Checkbox} from './Checkbox'; -export {default as CheckCard} from './CheckCard'; -export {default as QRCode} from './QRCode'; diff --git a/src/utils/passwordArrayMethods.ts b/src/utils/passwordArrayMethods.ts deleted file mode 100644 index 0f6ea0c..0000000 --- a/src/utils/passwordArrayMethods.ts +++ /dev/null @@ -1,28 +0,0 @@ -export const addElementoToPassword = ( - element: (string | null)[], - value: string, -) => { - const tempElement = element; - for (let index = 0; index < tempElement.length; index++) { - if (!tempElement[index]) { - tempElement[index] = value; - break; - } - } - return tempElement; -}; - -export const removeElementoToPassword = ( - element: (string | null)[], - value: string | null, -) => { - const tempElement = element; - for (let index = tempElement.length; index >= 0; index--) { - if (tempElement[index]) { - tempElement[index] = value; - break; - } - } - - return tempElement; -}; diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 45a6c70..0000000 --- a/tsconfig.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "@tsconfig/react-native/tsconfig.json" -} diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 094ce9f..0000000 --- a/yarn.lock +++ /dev/null @@ -1,7140 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@aashutoshrathi/word-wrap@^1.2.3": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" - integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== - -"@ampproject/remapping@^2.2.0": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" - integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13": - version "7.22.13" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" - integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== - dependencies: - "@babel/highlight" "^7.22.13" - chalk "^2.4.2" - -"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.2": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.2.tgz#6a12ced93455827037bfb5ed8492820d60fc32cc" - integrity sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ== - -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.20.0", "@babel/core@^7.21.3": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.2.tgz#ed10df0d580fff67c5f3ee70fd22e2e4c90a9f94" - integrity sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.22.13" - "@babel/generator" "^7.23.0" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-module-transforms" "^7.23.0" - "@babel/helpers" "^7.23.2" - "@babel/parser" "^7.23.0" - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.2" - "@babel/types" "^7.23.0" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/eslint-parser@^7.20.0": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.22.15.tgz#263f059c476e29ca4972481a17b8b660cb025a34" - integrity sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg== - dependencies: - "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" - eslint-visitor-keys "^2.1.0" - semver "^6.3.1" - -"@babel/generator@^7.20.0", "@babel/generator@^7.23.0", "@babel/generator@^7.7.2": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" - integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== - dependencies: - "@babel/types" "^7.23.0" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/helper-annotate-as-pure@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" - integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" - integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== - dependencies: - "@babel/types" "^7.22.15" - -"@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" - integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== - dependencies: - "@babel/compat-data" "^7.22.9" - "@babel/helper-validator-option" "^7.22.15" - browserslist "^4.21.9" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4" - integrity sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" - "@babel/helper-member-expression-to-functions" "^7.22.15" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - semver "^6.3.1" - -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" - integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - regexpu-core "^5.3.1" - semver "^6.3.1" - -"@babel/helper-define-polyfill-provider@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz#a71c10f7146d809f4a256c373f462d9bba8cf6ba" - integrity sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug== - dependencies: - "@babel/helper-compilation-targets" "^7.22.6" - "@babel/helper-plugin-utils" "^7.22.5" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - -"@babel/helper-environment-visitor@^7.18.9", "@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== - -"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== - dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" - -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-member-expression-to-functions@^7.22.15": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" - integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== - dependencies: - "@babel/types" "^7.23.0" - -"@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" - integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== - dependencies: - "@babel/types" "^7.22.15" - -"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e" - integrity sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/helper-optimise-call-expression@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" - integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" - integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== - -"@babel/helper-remap-async-to-generator@^7.18.9", "@babel/helper-remap-async-to-generator@^7.22.20", "@babel/helper-remap-async-to-generator@^7.22.5": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" - integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-wrap-function" "^7.22.20" - -"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" - integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-member-expression-to-functions" "^7.22.15" - "@babel/helper-optimise-call-expression" "^7.22.5" - -"@babel/helper-simple-access@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" - integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" - integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-split-export-declaration@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" - integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-string-parser@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" - integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== - -"@babel/helper-validator-identifier@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" - integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== - -"@babel/helper-validator-option@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" - integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== - -"@babel/helper-wrap-function@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" - integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== - dependencies: - "@babel/helper-function-name" "^7.22.5" - "@babel/template" "^7.22.15" - "@babel/types" "^7.22.19" - -"@babel/helpers@^7.23.2": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.2.tgz#2832549a6e37d484286e15ba36a5330483cac767" - integrity sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ== - dependencies: - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.2" - "@babel/types" "^7.23.0" - -"@babel/highlight@^7.22.13": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" - integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== - dependencies: - "@babel/helper-validator-identifier" "^7.22.20" - chalk "^2.4.2" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.0", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" - integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz#02dc8a03f613ed5fdc29fb2f728397c78146c962" - integrity sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz#2aeb91d337d4e1a1e7ce85b76a37f5301781200f" - integrity sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.22.15" - -"@babel/plugin-proposal-async-generator-functions@^7.0.0": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" - integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-remap-async-to-generator" "^7.18.9" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.18.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" - integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-export-default-from@^7.0.0": - version "7.22.17" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.22.17.tgz#91b60cd338f501cccdf549af2308768911ec5fbb" - integrity sha512-cop/3quQBVvdz6X5SJC6AhUv3C9DrVTM06LUEXimEdWAhCSyOJIr9NiZDU9leHZ0/aiG0Sh7Zmvaku5TWYNgbA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-export-default-from" "^7.22.5" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" - integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.0.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" - integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.20.0": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" - integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== - dependencies: - "@babel/compat-data" "^7.20.5" - "@babel/helper-compilation-targets" "^7.20.7" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.20.7" - -"@babel/plugin-proposal-optional-catch-binding@^7.0.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" - integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.20.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" - integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": - version "7.21.0-placeholder-for-preset-env.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" - integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.0.0", "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-default-from@^7.0.0", "@babel/plugin-syntax-export-default-from@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.22.5.tgz#ac3a24b362a04415a017ab96b9b4483d0e2a6e44" - integrity sha512-ODAqWWXB/yReh/jVQDag/3/tl6lgBueQkk/TcfW/59Oykm4c8a55XloX0CTk2k2VJiFWMgHby9xNX29IbCv9dQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.12.1", "@babel/plugin-syntax-flow@^7.18.0", "@babel/plugin-syntax-flow@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.22.5.tgz#163b820b9e7696ce134df3ee716d9c0c98035859" - integrity sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-import-assertions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz#07d252e2aa0bc6125567f742cd58619cb14dce98" - integrity sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-import-attributes@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz#ab840248d834410b829f569f5262b9e517555ecb" - integrity sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.22.5", "@babel/plugin-syntax-jsx@^7.7.2": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918" - integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.0.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.0.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.22.5", "@babel/plugin-syntax-typescript@^7.7.2": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz#aac8d383b062c5072c647a31ef990c1d0af90272" - integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" - integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz#e5ba566d0c58a5b2ba2a8b795450641950b71958" - integrity sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-async-generator-functions@^7.23.2": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz#054afe290d64c6f576f371ccc321772c8ea87ebb" - integrity sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.20" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-transform-async-to-generator@^7.20.0", "@babel/plugin-transform-async-to-generator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz#c7a85f44e46f8952f6d27fe57c2ed3cc084c3775" - integrity sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ== - dependencies: - "@babel/helper-module-imports" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.5" - -"@babel/plugin-transform-block-scoped-functions@^7.0.0", "@babel/plugin-transform-block-scoped-functions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz#27978075bfaeb9fa586d3cb63a3d30c1de580024" - integrity sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz#8744d02c6c264d82e1a4bc5d2d501fd8aff6f022" - integrity sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-class-properties@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz#97a56e31ad8c9dc06a0b3710ce7803d5a48cca77" - integrity sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-class-static-block@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz#dc8cc6e498f55692ac6b4b89e56d87cec766c974" - integrity sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.11" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz#aaf4753aee262a232bbc95451b4bdf9599c65a0b" - integrity sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.9" - "@babel/helper-split-export-declaration" "^7.22.6" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz#cd1e994bf9f316bd1c2dafcd02063ec261bb3869" - integrity sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/template" "^7.22.5" - -"@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.20.0", "@babel/plugin-transform-destructuring@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz#6447aa686be48b32eaf65a73e0e2c0bd010a266c" - integrity sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-dotall-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz#dbb4f0e45766eb544e193fb00e65a1dd3b2a4165" - integrity sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-duplicate-keys@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz#b6e6428d9416f5f0bba19c70d1e6e7e0b88ab285" - integrity sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-dynamic-import@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz#2c7722d2a5c01839eaf31518c6ff96d408e447aa" - integrity sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-transform-exponentiation-operator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz#402432ad544a1f9a480da865fda26be653e48f6a" - integrity sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-export-namespace-from@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz#b3c84c8f19880b6c7440108f8929caf6056db26c" - integrity sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-transform-flow-strip-types@^7.0.0", "@babel/plugin-transform-flow-strip-types@^7.20.0", "@babel/plugin-transform-flow-strip-types@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.22.5.tgz#0bb17110c7bf5b35a60754b2f00c58302381dee2" - integrity sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-flow" "^7.22.5" - -"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz#f64b4ccc3a4f131a996388fae7680b472b306b29" - integrity sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz#935189af68b01898e0d6d99658db6b164205c143" - integrity sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg== - dependencies: - "@babel/helper-compilation-targets" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-json-strings@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz#689a34e1eed1928a40954e37f74509f48af67835" - integrity sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz#e9341f4b5a167952576e23db8d435849b1dd7920" - integrity sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-logical-assignment-operators@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz#24c522a61688bde045b7d9bc3c2597a4d948fc9c" - integrity sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-transform-member-expression-literals@^7.0.0", "@babel/plugin-transform-member-expression-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz#4fcc9050eded981a468347dd374539ed3e058def" - integrity sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-modules-amd@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz#05b2bc43373faa6d30ca89214731f76f966f3b88" - integrity sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw== - dependencies: - "@babel/helper-module-transforms" "^7.23.0" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz#b3dba4757133b2762c00f4f94590cf6d52602481" - integrity sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ== - dependencies: - "@babel/helper-module-transforms" "^7.23.0" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-simple-access" "^7.22.5" - -"@babel/plugin-transform-modules-systemjs@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz#77591e126f3ff4132a40595a6cccd00a6b60d160" - integrity sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg== - dependencies: - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.23.0" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/plugin-transform-modules-umd@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz#4694ae40a87b1745e3775b6a7fe96400315d4f98" - integrity sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ== - dependencies: - "@babel/helper-module-transforms" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.0.0", "@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" - integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-new-target@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz#1b248acea54ce44ea06dfd37247ba089fcf9758d" - integrity sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz#debef6c8ba795f5ac67cd861a81b744c5d38d9fc" - integrity sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-transform-numeric-separator@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz#498d77dc45a6c6db74bb829c02a01c1d719cbfbd" - integrity sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-transform-object-rest-spread@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz#21a95db166be59b91cde48775310c0df6e1da56f" - integrity sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q== - dependencies: - "@babel/compat-data" "^7.22.9" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.22.15" - -"@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz#794a8d2fcb5d0835af722173c1a9d704f44e218c" - integrity sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.5" - -"@babel/plugin-transform-optional-catch-binding@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz#461cc4f578a127bb055527b3e77404cad38c08e0" - integrity sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-transform-optional-chaining@^7.22.15", "@babel/plugin-transform-optional-chaining@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz#73ff5fc1cf98f542f09f29c0631647d8ad0be158" - integrity sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz#719ca82a01d177af358df64a514d64c2e3edb114" - integrity sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-private-methods@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz#21c8af791f76674420a147ae62e9935d790f8722" - integrity sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-private-property-in-object@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz#ad45c4fc440e9cb84c718ed0906d96cf40f9a4e1" - integrity sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.22.11" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-transform-property-literals@^7.0.0", "@babel/plugin-transform-property-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz#b5ddabd73a4f7f26cd0e20f5db48290b88732766" - integrity sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-react-display-name@^7.0.0": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz#3c4326f9fce31c7968d6cb9debcaf32d9e279a2b" - integrity sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-react-jsx-self@^7.0.0": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz#ca2fdc11bc20d4d46de01137318b13d04e481d8e" - integrity sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-react-jsx-source@^7.0.0": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz#49af1615bfdf6ed9d3e9e43e425e0b2b65d15b6c" - integrity sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-react-jsx@^7.0.0": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz#7e6266d88705d7c49f11c98db8b9464531289cd6" - integrity sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-jsx" "^7.22.5" - "@babel/types" "^7.22.15" - -"@babel/plugin-transform-regenerator@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz#8ceef3bd7375c4db7652878b0241b2be5d0c3cca" - integrity sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - regenerator-transform "^0.15.2" - -"@babel/plugin-transform-reserved-words@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz#832cd35b81c287c4bcd09ce03e22199641f964fb" - integrity sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-runtime@^7.0.0": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.2.tgz#c956a3f8d1aa50816ff6c30c6288d66635c12990" - integrity sha512-XOntj6icgzMS58jPVtQpiuF6ZFWxQiJavISGx5KGjRj+3gqZr8+N6Kx+N9BApWzgS+DOjIZfXXj0ZesenOWDyA== - dependencies: - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - babel-plugin-polyfill-corejs2 "^0.4.6" - babel-plugin-polyfill-corejs3 "^0.8.5" - babel-plugin-polyfill-regenerator "^0.5.3" - semver "^6.3.1" - -"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz#6e277654be82b5559fc4b9f58088507c24f0c624" - integrity sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz#6487fd29f229c95e284ba6c98d65eafb893fea6b" - integrity sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - -"@babel/plugin-transform-sticky-regex@^7.0.0", "@babel/plugin-transform-sticky-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz#295aba1595bfc8197abd02eae5fc288c0deb26aa" - integrity sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-template-literals@^7.0.0", "@babel/plugin-transform-template-literals@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz#8f38cf291e5f7a8e60e9f733193f0bcc10909bff" - integrity sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-typeof-symbol@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz#5e2ba478da4b603af8673ff7c54f75a97b716b34" - integrity sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-typescript@^7.22.15", "@babel/plugin-transform-typescript@^7.5.0": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz#15adef906451d86349eb4b8764865c960eb54127" - integrity sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-typescript" "^7.22.5" - -"@babel/plugin-transform-unicode-escapes@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz#c723f380f40a2b2f57a62df24c9005834c8616d9" - integrity sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-property-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz#098898f74d5c1e86660dc112057b2d11227f1c81" - integrity sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz#ce7e7bb3ef208c4ff67e02a22816656256d7a183" - integrity sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-sets-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz#77788060e511b708ffc7d42fdfbc5b37c3004e91" - integrity sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/preset-env@^7.20.0": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.2.tgz#1f22be0ff0e121113260337dbc3e58fafce8d059" - integrity sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ== - dependencies: - "@babel/compat-data" "^7.23.2" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.15" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.15" - "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.22.5" - "@babel/plugin-syntax-import-attributes" "^7.22.5" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.22.5" - "@babel/plugin-transform-async-generator-functions" "^7.23.2" - "@babel/plugin-transform-async-to-generator" "^7.22.5" - "@babel/plugin-transform-block-scoped-functions" "^7.22.5" - "@babel/plugin-transform-block-scoping" "^7.23.0" - "@babel/plugin-transform-class-properties" "^7.22.5" - "@babel/plugin-transform-class-static-block" "^7.22.11" - "@babel/plugin-transform-classes" "^7.22.15" - "@babel/plugin-transform-computed-properties" "^7.22.5" - "@babel/plugin-transform-destructuring" "^7.23.0" - "@babel/plugin-transform-dotall-regex" "^7.22.5" - "@babel/plugin-transform-duplicate-keys" "^7.22.5" - "@babel/plugin-transform-dynamic-import" "^7.22.11" - "@babel/plugin-transform-exponentiation-operator" "^7.22.5" - "@babel/plugin-transform-export-namespace-from" "^7.22.11" - "@babel/plugin-transform-for-of" "^7.22.15" - "@babel/plugin-transform-function-name" "^7.22.5" - "@babel/plugin-transform-json-strings" "^7.22.11" - "@babel/plugin-transform-literals" "^7.22.5" - "@babel/plugin-transform-logical-assignment-operators" "^7.22.11" - "@babel/plugin-transform-member-expression-literals" "^7.22.5" - "@babel/plugin-transform-modules-amd" "^7.23.0" - "@babel/plugin-transform-modules-commonjs" "^7.23.0" - "@babel/plugin-transform-modules-systemjs" "^7.23.0" - "@babel/plugin-transform-modules-umd" "^7.22.5" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.22.5" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.11" - "@babel/plugin-transform-numeric-separator" "^7.22.11" - "@babel/plugin-transform-object-rest-spread" "^7.22.15" - "@babel/plugin-transform-object-super" "^7.22.5" - "@babel/plugin-transform-optional-catch-binding" "^7.22.11" - "@babel/plugin-transform-optional-chaining" "^7.23.0" - "@babel/plugin-transform-parameters" "^7.22.15" - "@babel/plugin-transform-private-methods" "^7.22.5" - "@babel/plugin-transform-private-property-in-object" "^7.22.11" - "@babel/plugin-transform-property-literals" "^7.22.5" - "@babel/plugin-transform-regenerator" "^7.22.10" - "@babel/plugin-transform-reserved-words" "^7.22.5" - "@babel/plugin-transform-shorthand-properties" "^7.22.5" - "@babel/plugin-transform-spread" "^7.22.5" - "@babel/plugin-transform-sticky-regex" "^7.22.5" - "@babel/plugin-transform-template-literals" "^7.22.5" - "@babel/plugin-transform-typeof-symbol" "^7.22.5" - "@babel/plugin-transform-unicode-escapes" "^7.22.10" - "@babel/plugin-transform-unicode-property-regex" "^7.22.5" - "@babel/plugin-transform-unicode-regex" "^7.22.5" - "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" - "@babel/preset-modules" "0.1.6-no-external-plugins" - "@babel/types" "^7.23.0" - babel-plugin-polyfill-corejs2 "^0.4.6" - babel-plugin-polyfill-corejs3 "^0.8.5" - babel-plugin-polyfill-regenerator "^0.5.3" - core-js-compat "^3.31.0" - semver "^6.3.1" - -"@babel/preset-flow@^7.13.13": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.22.15.tgz#30318deb9b3ebd9f5738e96da03a531e0cd3165d" - integrity sha512-dB5aIMqpkgbTfN5vDdTRPzjqtWiZcRESNR88QYnoPR+bmdYoluOzMX9tQerTv0XzSgZYctPfO1oc0N5zdog1ew== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-transform-flow-strip-types" "^7.22.5" - -"@babel/preset-modules@0.1.6-no-external-plugins": - version "0.1.6-no-external-plugins" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" - integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/preset-typescript@^7.13.0": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.2.tgz#c8de488130b7081f7e1482936ad3de5b018beef4" - integrity sha512-u4UJc1XsS1GhIGteM8rnGiIvf9rJpiVgMEeCnwlLA7WJPC+jcXWJAGxYmeqs5hOZD8BbAfnV5ezBOxQbb4OUxA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-syntax-jsx" "^7.22.5" - "@babel/plugin-transform-modules-commonjs" "^7.23.0" - "@babel/plugin-transform-typescript" "^7.22.15" - -"@babel/register@^7.13.16": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.22.15.tgz#c2c294a361d59f5fa7bcc8b97ef7319c32ecaec7" - integrity sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg== - dependencies: - clone-deep "^4.0.1" - find-cache-dir "^2.0.0" - make-dir "^2.1.0" - pirates "^4.0.5" - source-map-support "^0.5.16" - -"@babel/regjsgen@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" - integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== - -"@babel/runtime@^7.0.0", "@babel/runtime@^7.20.0", "@babel/runtime@^7.8.4": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" - integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/template@^7.0.0", "@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.3.3": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" - integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== - dependencies: - "@babel/code-frame" "^7.22.13" - "@babel/parser" "^7.22.15" - "@babel/types" "^7.22.15" - -"@babel/traverse@^7.20.0", "@babel/traverse@^7.23.2": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" - integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== - dependencies: - "@babel/code-frame" "^7.22.13" - "@babel/generator" "^7.23.0" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.0" - "@babel/types" "^7.23.0" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.21.3", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" - integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== - dependencies: - "@babel/helper-string-parser" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.20" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@bitcoin-design/bitcoin-icons-react@^0.1.9": - version "0.1.10" - resolved "https://registry.yarnpkg.com/@bitcoin-design/bitcoin-icons-react/-/bitcoin-icons-react-0.1.10.tgz#11acf1d386c1094d3eff673ca236345860762f64" - integrity sha512-f7GSutKHa4EK4LWI/phnGCJsN8fzFbVAVQ4F1MYxiza34LVmXmbgHUmdP/BR8ZeQSIbZLt19inpJZDBtQvYe4Q== - -"@eslint-community/eslint-utils@^4.2.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" - -"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": - version "4.9.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.9.1.tgz#449dfa81a57a1d755b09aa58d826c1262e4283b4" - integrity sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA== - -"@eslint/eslintrc@^2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396" - integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@8.52.0": - version "8.52.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.52.0.tgz#78fe5f117840f69dc4a353adf9b9cd926353378c" - integrity sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA== - -"@expo/vector-icons@^13.0.0": - version "13.0.0" - resolved "https://registry.yarnpkg.com/@expo/vector-icons/-/vector-icons-13.0.0.tgz#e2989b85e95a82bce216f88cf8fb583ab050ec95" - integrity sha512-TI+l71+5aSKnShYclFa14Kum+hQMZ86b95SH6tQUG3qZEmLTarvWpKwqtTwQKqvlJSJrpFiSFu3eCuZokY6zWA== - -"@hapi/hoek@^9.0.0": - version "9.3.0" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" - integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== - -"@hapi/topo@^5.0.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" - integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@humanwhocodes/config-array@^0.11.13": - version "0.11.13" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" - integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== - dependencies: - "@humanwhocodes/object-schema" "^2.0.1" - debug "^4.1.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" - integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jest/console@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" - integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - -"@jest/core@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" - integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== - dependencies: - "@jest/console" "^29.7.0" - "@jest/reporters" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - ci-info "^3.2.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^29.7.0" - jest-config "^29.7.0" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-resolve-dependencies "^29.7.0" - jest-runner "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - jest-watcher "^29.7.0" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/create-cache-key-function@^29.2.1": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz#793be38148fab78e65f40ae30c36785f4ad859f0" - integrity sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA== - dependencies: - "@jest/types" "^29.6.3" - -"@jest/environment@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" - integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== - dependencies: - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - -"@jest/expect-utils@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" - integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== - dependencies: - jest-get-type "^29.6.3" - -"@jest/expect@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" - integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== - dependencies: - expect "^29.7.0" - jest-snapshot "^29.7.0" - -"@jest/fake-timers@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" - integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== - dependencies: - "@jest/types" "^29.6.3" - "@sinonjs/fake-timers" "^10.0.2" - "@types/node" "*" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-util "^29.7.0" - -"@jest/globals@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" - integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/types" "^29.6.3" - jest-mock "^29.7.0" - -"@jest/reporters@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" - integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^6.0.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - jest-worker "^29.7.0" - slash "^3.0.0" - string-length "^4.0.1" - strip-ansi "^6.0.0" - v8-to-istanbul "^9.0.1" - -"@jest/schemas@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" - integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== - dependencies: - "@sinclair/typebox" "^0.27.8" - -"@jest/source-map@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" - integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== - dependencies: - "@jridgewell/trace-mapping" "^0.3.18" - callsites "^3.0.0" - graceful-fs "^4.2.9" - -"@jest/test-result@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" - integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== - dependencies: - "@jest/console" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" - integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== - dependencies: - "@jest/test-result" "^29.7.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - slash "^3.0.0" - -"@jest/transform@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" - integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== - dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^2.0.0" - fast-json-stable-stringify "^2.1.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - write-file-atomic "^4.0.2" - -"@jest/types@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" - integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - -"@jest/types@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" - integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" - -"@jest/types@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" - integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== - dependencies: - "@jest/schemas" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" - integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/resolve-uri@^3.1.0": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" - integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== - -"@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/source-map@^0.3.3": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" - integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.20" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" - integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": - version "5.1.1-v1" - resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" - integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== - dependencies: - eslint-scope "5.1.1" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@react-native-async-storage/async-storage@^1.19.3": - version "1.19.3" - resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-1.19.3.tgz#ad5fe3ed0a82d4624aa4500321c1e09c02daeb46" - integrity sha512-CwGfoHCWdPOTPS+2fW6YRE1fFBpT9++ahLEroX5hkgwyoQ+TkmjOaUxixdEIoVua9Pz5EF2pGOIJzqOTMWfBlA== - dependencies: - merge-options "^3.0.4" - -"@react-native-community/cli-clean@11.3.7": - version "11.3.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-11.3.7.tgz#cb4c2f225f78593412c2d191b55b8570f409a48f" - integrity sha512-twtsv54ohcRyWVzPXL3F9VHGb4Qhn3slqqRs3wEuRzjR7cTmV2TIO2b1VhaqF4HlCgNd+cGuirvLtK2JJyaxMg== - dependencies: - "@react-native-community/cli-tools" "11.3.7" - chalk "^4.1.2" - execa "^5.0.0" - prompts "^2.4.0" - -"@react-native-community/cli-config@11.3.7": - version "11.3.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-11.3.7.tgz#4ce95548252ecb094b576369abebf9867c95d277" - integrity sha512-FDBLku9xskS+bx0YFJFLCmUJhEZ4/MMSC9qPYOGBollWYdgE7k/TWI0IeYFmMALAnbCdKQAYP5N29N55Tad8lg== - dependencies: - "@react-native-community/cli-tools" "11.3.7" - chalk "^4.1.2" - cosmiconfig "^5.1.0" - deepmerge "^4.3.0" - glob "^7.1.3" - joi "^17.2.1" - -"@react-native-community/cli-debugger-ui@11.3.7": - version "11.3.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-11.3.7.tgz#2147b73313af8de3c9b396406d5d344b904cf2bb" - integrity sha512-aVmKuPKHZENR8SrflkMurZqeyLwbKieHdOvaZCh1Nn/0UC5CxWcyST2DB2XQboZwsvr3/WXKJkSUO+SZ1J9qTQ== - dependencies: - serve-static "^1.13.1" - -"@react-native-community/cli-doctor@11.3.7": - version "11.3.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-11.3.7.tgz#7d5f5b1aea78134bba713fa97795986345ff1344" - integrity sha512-YEHUqWISOHnsl5+NM14KHelKh68Sr5/HeEZvvNdIcvcKtZic3FU7Xd1WcbNdo3gCq5JvzGFfufx02Tabh5zmrg== - dependencies: - "@react-native-community/cli-config" "11.3.7" - "@react-native-community/cli-platform-android" "11.3.7" - "@react-native-community/cli-platform-ios" "11.3.7" - "@react-native-community/cli-tools" "11.3.7" - chalk "^4.1.2" - command-exists "^1.2.8" - envinfo "^7.7.2" - execa "^5.0.0" - hermes-profile-transformer "^0.0.6" - ip "^1.1.5" - node-stream-zip "^1.9.1" - ora "^5.4.1" - prompts "^2.4.0" - semver "^7.5.2" - strip-ansi "^5.2.0" - sudo-prompt "^9.0.0" - wcwidth "^1.0.1" - yaml "^2.2.1" - -"@react-native-community/cli-hermes@11.3.7": - version "11.3.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-11.3.7.tgz#091e730a1f8bace6c3729e8744bad6141002e0e8" - integrity sha512-chkKd8n/xeZkinRvtH6QcYA8rjNOKU3S3Lw/3Psxgx+hAYV0Gyk95qJHTalx7iu+PwjOOqqvCkJo5jCkYLkoqw== - dependencies: - "@react-native-community/cli-platform-android" "11.3.7" - "@react-native-community/cli-tools" "11.3.7" - chalk "^4.1.2" - hermes-profile-transformer "^0.0.6" - ip "^1.1.5" - -"@react-native-community/cli-platform-android@11.3.7": - version "11.3.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-11.3.7.tgz#7845bc48258b6bb55df208a23b3690647f113995" - integrity sha512-WGtXI/Rm178UQb8bu1TAeFC/RJvYGnbHpULXvE20GkmeJ1HIrMjkagyk6kkY3Ej25JAP2R878gv+TJ/XiRhaEg== - dependencies: - "@react-native-community/cli-tools" "11.3.7" - chalk "^4.1.2" - execa "^5.0.0" - glob "^7.1.3" - logkitty "^0.7.1" - -"@react-native-community/cli-platform-android@^11.3.9": - version "11.3.9" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-11.3.9.tgz#578d6519750dcf2e554a774145e198de45affa97" - integrity sha512-bAwvwibTMw9njM2Wdnl1uvREhhZFEVJ9o5TfL+4gMimAi7Jo7c3ex1i1G/dac5mvUZgUSmmvfbx9N4qUrJPX5A== - dependencies: - "@react-native-community/cli-tools" "11.3.9" - chalk "^4.1.2" - execa "^5.0.0" - glob "^7.1.3" - logkitty "^0.7.1" - -"@react-native-community/cli-platform-ios@11.3.7": - version "11.3.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-11.3.7.tgz#87478f907634713b7236c77870446a5ca1f35ff1" - integrity sha512-Z/8rseBput49EldX7MogvN6zJlWzZ/4M97s2P+zjS09ZoBU7I0eOKLi0N9wx+95FNBvGQQ/0P62bB9UaFQH2jw== - dependencies: - "@react-native-community/cli-tools" "11.3.7" - chalk "^4.1.2" - execa "^5.0.0" - fast-xml-parser "^4.0.12" - glob "^7.1.3" - ora "^5.4.1" - -"@react-native-community/cli-plugin-metro@11.3.7": - version "11.3.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-11.3.7.tgz#2e8a9deb30b40495c5c1347a1837a824400fa00f" - integrity sha512-0WhgoBVGF1f9jXcuagQmtxpwpfP+2LbLZH4qMyo6OtYLWLG13n2uRep+8tdGzfNzl1bIuUTeE9yZSAdnf9LfYQ== - dependencies: - "@react-native-community/cli-server-api" "11.3.7" - "@react-native-community/cli-tools" "11.3.7" - chalk "^4.1.2" - execa "^5.0.0" - metro "0.76.8" - metro-config "0.76.8" - metro-core "0.76.8" - metro-react-native-babel-transformer "0.76.8" - metro-resolver "0.76.8" - metro-runtime "0.76.8" - readline "^1.3.0" - -"@react-native-community/cli-server-api@11.3.7": - version "11.3.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-11.3.7.tgz#2cce54b3331c9c51b9067129c297ab2e9a142216" - integrity sha512-yoFyGdvR3HxCnU6i9vFqKmmSqFzCbnFSnJ29a+5dppgPRetN+d//O8ard/YHqHzToFnXutAFf2neONn23qcJAg== - dependencies: - "@react-native-community/cli-debugger-ui" "11.3.7" - "@react-native-community/cli-tools" "11.3.7" - compression "^1.7.1" - connect "^3.6.5" - errorhandler "^1.5.1" - nocache "^3.0.1" - pretty-format "^26.6.2" - serve-static "^1.13.1" - ws "^7.5.1" - -"@react-native-community/cli-tools@11.3.7": - version "11.3.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-11.3.7.tgz#37aa7efc7b4a1b7077d541f1d7bb11a2ab7b6ff2" - integrity sha512-peyhP4TV6Ps1hk+MBHTFaIR1eI3u+OfGBvr5r0wPwo3FAJvldRinMgcB/TcCcOBXVORu7ba1XYjkubPeYcqAyA== - dependencies: - appdirsjs "^1.2.4" - chalk "^4.1.2" - find-up "^5.0.0" - mime "^2.4.1" - node-fetch "^2.6.0" - open "^6.2.0" - ora "^5.4.1" - semver "^7.5.2" - shell-quote "^1.7.3" - -"@react-native-community/cli-tools@11.3.9": - version "11.3.9" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-11.3.9.tgz#5e20610dcb0a381947a35eabd8ffa5d936590eb6" - integrity sha512-qWEUo/HQll/aj5xHYCw6itXGkPgultxTHa4UYSaBIRSfU15aSiwonJ/JP7fe+fHKbaFh6IdhaaRhj4ArfEOxuQ== - dependencies: - appdirsjs "^1.2.4" - chalk "^4.1.2" - find-up "^5.0.0" - mime "^2.4.1" - node-fetch "^2.6.0" - open "^6.2.0" - ora "^5.4.1" - semver "^7.5.2" - shell-quote "^1.7.3" - -"@react-native-community/cli-types@11.3.7": - version "11.3.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-11.3.7.tgz#12fe7cff3da08bd27e11116531b2e001939854b9" - integrity sha512-OhSr/TiDQkXjL5YOs8+hvGSB+HltLn5ZI0+A3DCiMsjUgTTsYh+Z63OtyMpNjrdCEFcg0MpfdU2uxstCS6Dc5g== - dependencies: - joi "^17.2.1" - -"@react-native-community/cli@11.3.7": - version "11.3.7" - resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-11.3.7.tgz#564c0054269d8385fa9d301750b2e56dbb5c0cc9" - integrity sha512-Ou8eDlF+yh2rzXeCTpMPYJ2fuqsusNOhmpYPYNQJQ2h6PvaF30kPomflgRILems+EBBuggRtcT+I+1YH4o/q6w== - dependencies: - "@react-native-community/cli-clean" "11.3.7" - "@react-native-community/cli-config" "11.3.7" - "@react-native-community/cli-debugger-ui" "11.3.7" - "@react-native-community/cli-doctor" "11.3.7" - "@react-native-community/cli-hermes" "11.3.7" - "@react-native-community/cli-plugin-metro" "11.3.7" - "@react-native-community/cli-server-api" "11.3.7" - "@react-native-community/cli-tools" "11.3.7" - "@react-native-community/cli-types" "11.3.7" - chalk "^4.1.2" - commander "^9.4.1" - execa "^5.0.0" - find-up "^4.1.0" - fs-extra "^8.1.0" - graceful-fs "^4.1.3" - prompts "^2.4.0" - semver "^7.5.2" - -"@react-native/assets-registry@^0.72.0": - version "0.72.0" - resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.72.0.tgz#c82a76a1d86ec0c3907be76f7faf97a32bbed05d" - integrity sha512-Im93xRJuHHxb1wniGhBMsxLwcfzdYreSZVQGDoMJgkd6+Iky61LInGEHnQCTN0fKNYF1Dvcofb4uMmE1RQHXHQ== - -"@react-native/codegen@^0.72.7": - version "0.72.7" - resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.72.7.tgz#b6832ce631ac63143024ea094a6b5480a780e589" - integrity sha512-O7xNcGeXGbY+VoqBGNlZ3O05gxfATlwE1Q1qQf5E38dK+tXn5BY4u0jaQ9DPjfE8pBba8g/BYI1N44lynidMtg== - dependencies: - "@babel/parser" "^7.20.0" - flow-parser "^0.206.0" - jscodeshift "^0.14.0" - nullthrows "^1.1.1" - -"@react-native/eslint-config@^0.72.2": - version "0.72.2" - resolved "https://registry.yarnpkg.com/@react-native/eslint-config/-/eslint-config-0.72.2.tgz#31da4cec65ad2805d4db9fdda138452821d72133" - integrity sha512-rAYuQQXzi63W7+9Pu/+23od/b/lTSzHjMFibum3sKgdG2LIyvhoMEWQ5+Chu7TqebqYy1b9SDn/KEMHvpWFtNg== - dependencies: - "@babel/core" "^7.20.0" - "@babel/eslint-parser" "^7.20.0" - "@react-native/eslint-plugin" "^0.72.0" - "@typescript-eslint/eslint-plugin" "^5.30.5" - "@typescript-eslint/parser" "^5.30.5" - eslint-config-prettier "^8.5.0" - eslint-plugin-eslint-comments "^3.2.0" - eslint-plugin-ft-flow "^2.0.1" - eslint-plugin-jest "^26.5.3" - eslint-plugin-prettier "^4.2.1" - eslint-plugin-react "^7.30.1" - eslint-plugin-react-hooks "^4.6.0" - eslint-plugin-react-native "^4.0.0" - -"@react-native/eslint-plugin@^0.72.0": - version "0.72.0" - resolved "https://registry.yarnpkg.com/@react-native/eslint-plugin/-/eslint-plugin-0.72.0.tgz#7ec4c6a73dfde4bd6b4a4d3c462cfdc2637bf91d" - integrity sha512-xWQthnyKd+H22TBqeJUTFebsyWAAwzUb7EQCT8F/WMZsS1sv5UG+2cM/cU9/2HEbVZgxHYuLIi915WznjKPvlg== - -"@react-native/gradle-plugin@^0.72.11": - version "0.72.11" - resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.72.11.tgz#c063ef12778706611de7a1e42b74b14d9405fb9f" - integrity sha512-P9iRnxiR2w7EHcZ0mJ+fmbPzMby77ZzV6y9sJI3lVLJzF7TLSdbwcQyD3lwMsiL+q5lKUHoZJS4sYmih+P2HXw== - -"@react-native/js-polyfills@^0.72.1": - version "0.72.1" - resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.72.1.tgz#905343ef0c51256f128256330fccbdb35b922291" - integrity sha512-cRPZh2rBswFnGt5X5EUEPs0r+pAsXxYsifv/fgy9ZLQokuT52bPH+9xjDR+7TafRua5CttGW83wP4TntRcWNDA== - -"@react-native/metro-config@^0.72.11": - version "0.72.11" - resolved "https://registry.yarnpkg.com/@react-native/metro-config/-/metro-config-0.72.11.tgz#c775a22fbb138cedd4513ca46c06bfd6a9dad316" - integrity sha512-661EyQnDdVelyc0qP/ew7kKkGAh6N6KlkuPLC2SQ8sxaXskVU6fSuNlpLW4bUTBUDFKG8gEOU2hp6rzk4wQnGQ== - dependencies: - "@react-native/js-polyfills" "^0.72.1" - metro-config "0.76.8" - metro-react-native-babel-transformer "0.76.8" - metro-runtime "0.76.8" - -"@react-native/normalize-colors@*": - version "0.74.1" - resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.74.1.tgz#6e8ccf99954728dcd3cfe0d56e758ee5050a7bea" - integrity sha512-r+bTRs6pImqE3fx4h7bPzH2sOWSrnSHF/RJ7d00pNUj2P6ws3DdhS7WV+/7YosZkloYQfkiIkK3pIHvcYn665w== - -"@react-native/normalize-colors@^0.72.0": - version "0.72.0" - resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.72.0.tgz#14294b7ed3c1d92176d2a00df48456e8d7d62212" - integrity sha512-285lfdqSXaqKuBbbtP9qL2tDrfxdOFtIMvkKadtleRQkdOxx+uzGvFr82KHmc/sSiMtfXGp7JnFYWVh4sFl7Yw== - -"@react-native/virtualized-lists@^0.72.8": - version "0.72.8" - resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.72.8.tgz#a2c6a91ea0f1d40eb5a122fb063daedb92ed1dc3" - integrity sha512-J3Q4Bkuo99k7mu+jPS9gSUSgq+lLRSI/+ahXNwV92XgJ/8UgOTxu2LPwhJnBk/sQKxq7E8WkZBnBiozukQMqrw== - dependencies: - invariant "^2.2.4" - nullthrows "^1.1.1" - -"@react-navigation/core@^6.4.10": - version "6.4.10" - resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-6.4.10.tgz#0c52621968b35e3a75e189e823d3b9e3bad77aff" - integrity sha512-oYhqxETRHNHKsipm/BtGL0LI43Hs2VSFoWMbBdHK9OqgQPjTVUitslgLcPpo4zApCcmBWoOLX2qPxhsBda644A== - dependencies: - "@react-navigation/routers" "^6.1.9" - escape-string-regexp "^4.0.0" - nanoid "^3.1.23" - query-string "^7.1.3" - react-is "^16.13.0" - use-latest-callback "^0.1.7" - -"@react-navigation/elements@^1.3.21": - version "1.3.21" - resolved "https://registry.yarnpkg.com/@react-navigation/elements/-/elements-1.3.21.tgz#debac6becc6b6692da09ec30e705e476a780dfe1" - integrity sha512-eyS2C6McNR8ihUoYfc166O1D8VYVh9KIl0UQPI8/ZJVsStlfSTgeEEh+WXge6+7SFPnZ4ewzEJdSAHH+jzcEfg== - -"@react-navigation/native-stack@^6.9.14": - version "6.9.16" - resolved "https://registry.yarnpkg.com/@react-navigation/native-stack/-/native-stack-6.9.16.tgz#d3dfc1ebe51da34eff36d5475d7b33d982a59758" - integrity sha512-SrmBGr5YvRxDtdTacOkA/wvqwpt9kt+AsYpmt82hKMPKpu0v98WONedTXDzi6whhY3jeT2GZkwF8hyrJ+wDbTA== - dependencies: - "@react-navigation/elements" "^1.3.21" - warn-once "^0.1.0" - -"@react-navigation/native@^6.1.8": - version "6.1.9" - resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-6.1.9.tgz#8ef87095cd9c2ed094308c726157c7f6fc28796e" - integrity sha512-AMuJDpwXE7UlfyhIXaUCCynXmv69Kb8NzKgKJO7v0k0L+u6xUTbt6xvshmJ79vsvaFyaEH9Jg5FMzek5/S5qNw== - dependencies: - "@react-navigation/core" "^6.4.10" - escape-string-regexp "^4.0.0" - fast-deep-equal "^3.1.3" - nanoid "^3.1.23" - -"@react-navigation/routers@^6.1.9": - version "6.1.9" - resolved "https://registry.yarnpkg.com/@react-navigation/routers/-/routers-6.1.9.tgz#73f5481a15a38e36592a0afa13c3c064b9f90bed" - integrity sha512-lTM8gSFHSfkJvQkxacGM6VJtBt61ip2XO54aNfswD+KMw6eeZ4oehl7m0me3CR9hnDE4+60iAZR8sAhvCiI3NA== - dependencies: - nanoid "^3.1.23" - -"@sideway/address@^4.1.3": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" - integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@sideway/formula@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f" - integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== - -"@sideway/pinpoint@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" - integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== - -"@sinclair/typebox@^0.27.8": - version "0.27.8" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" - integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== - -"@sinonjs/commons@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.0.tgz#beb434fe875d965265e04722ccfc21df7f755d72" - integrity sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^10.0.2": - version "10.3.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" - integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== - dependencies: - "@sinonjs/commons" "^3.0.0" - -"@svgr/babel-plugin-add-jsx-attribute@8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz#4001f5d5dd87fa13303e36ee106e3ff3a7eb8b22" - integrity sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g== - -"@svgr/babel-plugin-remove-jsx-attribute@8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#69177f7937233caca3a1afb051906698f2f59186" - integrity sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA== - -"@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz#c2c48104cfd7dcd557f373b70a56e9e3bdae1d44" - integrity sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA== - -"@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz#8fbb6b2e91fa26ac5d4aa25c6b6e4f20f9c0ae27" - integrity sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ== - -"@svgr/babel-plugin-svg-dynamic-title@8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz#1d5ba1d281363fc0f2f29a60d6d936f9bbc657b0" - integrity sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og== - -"@svgr/babel-plugin-svg-em-dimensions@8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz#35e08df300ea8b1d41cb8f62309c241b0369e501" - integrity sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g== - -"@svgr/babel-plugin-transform-react-native-svg@8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz#90a8b63998b688b284f255c6a5248abd5b28d754" - integrity sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q== - -"@svgr/babel-plugin-transform-svg-component@8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz#013b4bfca88779711f0ed2739f3f7efcefcf4f7e" - integrity sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw== - -"@svgr/babel-preset@8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-8.1.0.tgz#0e87119aecdf1c424840b9d4565b7137cabf9ece" - integrity sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug== - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "8.0.0" - "@svgr/babel-plugin-remove-jsx-attribute" "8.0.0" - "@svgr/babel-plugin-remove-jsx-empty-expression" "8.0.0" - "@svgr/babel-plugin-replace-jsx-attribute-value" "8.0.0" - "@svgr/babel-plugin-svg-dynamic-title" "8.0.0" - "@svgr/babel-plugin-svg-em-dimensions" "8.0.0" - "@svgr/babel-plugin-transform-react-native-svg" "8.1.0" - "@svgr/babel-plugin-transform-svg-component" "8.0.0" - -"@svgr/core@^8.0.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-8.1.0.tgz#41146f9b40b1a10beaf5cc4f361a16a3c1885e88" - integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA== - dependencies: - "@babel/core" "^7.21.3" - "@svgr/babel-preset" "8.1.0" - camelcase "^6.2.0" - cosmiconfig "^8.1.3" - snake-case "^3.0.4" - -"@svgr/hast-util-to-babel-ast@8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz#6952fd9ce0f470e1aded293b792a2705faf4ffd4" - integrity sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q== - dependencies: - "@babel/types" "^7.21.3" - entities "^4.4.0" - -"@svgr/plugin-jsx@^8.0.1": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz#96969f04a24b58b174ee4cd974c60475acbd6928" - integrity sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA== - dependencies: - "@babel/core" "^7.21.3" - "@svgr/babel-preset" "8.1.0" - "@svgr/hast-util-to-babel-ast" "8.0.0" - svg-parser "^2.0.4" - -"@svgr/plugin-svgo@^8.0.1": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz#b115b7b967b564f89ac58feae89b88c3decd0f00" - integrity sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA== - dependencies: - cosmiconfig "^8.1.3" - deepmerge "^4.3.1" - svgo "^3.0.2" - -"@trysound/sax@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" - integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== - -"@tsconfig/react-native@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@tsconfig/react-native/-/react-native-3.0.2.tgz#f7db242eee4820f5a3d0edcc86c920bb7d9ec0f2" - integrity sha512-F7IoHEqf741lut4Z2K+IkWQRvXAhBiZMeY5L7BysG7Z2Z3MlIyFR+AagD8jQ/CqC1vowGnRwfLjeuwIpaeoJxA== - -"@types/babel__core@^7.1.14": - version "7.20.3" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.3.tgz#d5625a50b6f18244425a1359a858c73d70340778" - integrity sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA== - dependencies: - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.6" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.6.tgz#676f89f67dc8ddaae923f70ebc5f1fa800c031a8" - integrity sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.3" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.3.tgz#db9ac539a2fe05cfe9e168b24f360701bde41f5f" - integrity sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.20.3" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.3.tgz#a971aa47441b28ef17884ff945d0551265a2d058" - integrity sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw== - dependencies: - "@babel/types" "^7.20.7" - -"@types/graceful-fs@^4.1.3": - version "4.1.8" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.8.tgz#417e461e4dc79d957dc3107f45fe4973b09c2915" - integrity sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw== - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#fdfdd69fa16d530047d9963635bd77c71a08c068" - integrity sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ== - -"@types/istanbul-lib-report@*": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz#394798d5f727402eb5ec99eb9618ffcd2b7645a1" - integrity sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz#0313e2608e6d6955d195f55361ddeebd4b74c6e7" - integrity sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/json-schema@^7.0.9": - version "7.0.14" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.14.tgz#74a97a5573980802f32c8e47b663530ab3b6b7d1" - integrity sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw== - -"@types/node@*": - version "20.8.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.7.tgz#ad23827850843de973096edfc5abc9e922492a25" - integrity sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ== - dependencies: - undici-types "~5.25.1" - -"@types/prop-types@*": - version "15.7.9" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.9.tgz#b6f785caa7ea1fe4414d9df42ee0ab67f23d8a6d" - integrity sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g== - -"@types/react-test-renderer@^18.0.0": - version "18.0.5" - resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-18.0.5.tgz#b67a6ff37acd93d1b971ec4c838f69d52e772db0" - integrity sha512-PsnmF4Hpi61PTRX+dTxkjgDdtZ09kFFgPXczoF+yBfOVxn7xBLPvKP1BUrSasYHmerj33rhoJuvpIMsJuyRqHw== - dependencies: - "@types/react" "*" - -"@types/react@*", "@types/react@^18.0.24": - version "18.2.31" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.31.tgz#74ae2630e4aa9af599584157abd3b95d96fb9b40" - integrity sha512-c2UnPv548q+5DFh03y8lEDeMfDwBn9G3dRwfkrxQMo/dOtRHUUO57k6pHvBIfH/VF4Nh+98mZ5aaSe+2echD5g== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/scheduler@*": - version "0.16.5" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.5.tgz#4751153abbf8d6199babb345a52e1eb4167d64af" - integrity sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw== - -"@types/semver@^7.3.12": - version "7.5.4" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.4.tgz#0a41252ad431c473158b22f9bfb9a63df7541cff" - integrity sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ== - -"@types/stack-utils@^2.0.0": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.2.tgz#01284dde9ef4e6d8cef6422798d9a3ad18a66f8b" - integrity sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw== - -"@types/yargs-parser@*": - version "21.0.2" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.2.tgz#7bd04c5da378496ef1695a1008bf8f71847a8b8b" - integrity sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw== - -"@types/yargs@^15.0.0": - version "15.0.17" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.17.tgz#bea870ba551b43831bfaa75de2e4a3849c39322b" - integrity sha512-cj53I8GUcWJIgWVTSVe2L7NJAB5XWGdsoMosVvUgv1jEnMbAcsbaCzt1coUcyi8Sda5PgTWAooG8jNyDTD+CWA== - dependencies: - "@types/yargs-parser" "*" - -"@types/yargs@^16.0.0": - version "16.0.7" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.7.tgz#b0d0502cb5f6c17994df72a600049f10bbf17203" - integrity sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg== - dependencies: - "@types/yargs-parser" "*" - -"@types/yargs@^17.0.8": - version "17.0.29" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.29.tgz#06aabc72497b798c643c812a8b561537fea760cf" - integrity sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA== - dependencies: - "@types/yargs-parser" "*" - -"@typescript-eslint/eslint-plugin@^5.30.5": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" - integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== - dependencies: - "@eslint-community/regexpp" "^4.4.0" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/type-utils" "5.62.0" - "@typescript-eslint/utils" "5.62.0" - debug "^4.3.4" - graphemer "^1.4.0" - ignore "^5.2.0" - natural-compare-lite "^1.4.0" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/parser@^5.30.5": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" - integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== - dependencies: - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - -"@typescript-eslint/type-utils@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" - integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== - dependencies: - "@typescript-eslint/typescript-estree" "5.62.0" - "@typescript-eslint/utils" "5.62.0" - debug "^4.3.4" - tsutils "^3.21.0" - -"@typescript-eslint/types@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" - integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== - -"@typescript-eslint/typescript-estree@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.10.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - eslint-scope "^5.1.1" - semver "^7.3.7" - -"@typescript-eslint/visitor-keys@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" - integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== - dependencies: - "@typescript-eslint/types" "5.62.0" - eslint-visitor-keys "^3.3.0" - -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - -accepts@^1.3.7, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn@^8.8.2, acorn@^8.9.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" - integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== - -ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -anser@^1.4.9: - version "1.4.10" - resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.10.tgz#befa3eddf282684bd03b63dcda3927aef8c2e35b" - integrity sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww== - -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-fragments@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/ansi-fragments/-/ansi-fragments-0.2.1.tgz#24409c56c4cc37817c3d7caa99d8969e2de5a05e" - integrity sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w== - dependencies: - colorette "^1.0.7" - slice-ansi "^2.0.0" - strip-ansi "^5.0.0" - -ansi-regex@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" - integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== - -ansi-regex@^5.0.0, ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -anymatch@^3.0.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -appdirsjs@^1.2.4: - version "1.2.7" - resolved "https://registry.yarnpkg.com/appdirsjs/-/appdirsjs-1.2.7.tgz#50b4b7948a26ba6090d4aede2ae2dc2b051be3b3" - integrity sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-buffer-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" - integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== - dependencies: - call-bind "^1.0.2" - is-array-buffer "^3.0.1" - -array-includes@^3.1.6: - version "3.1.7" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" - integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - is-string "^1.0.7" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array.prototype.flat@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" - integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -array.prototype.flatmap@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" - integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -array.prototype.tosorted@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz#620eff7442503d66c799d95503f82b475745cefd" - integrity sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - get-intrinsic "^1.2.1" - -arraybuffer.prototype.slice@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" - integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== - dependencies: - array-buffer-byte-length "^1.0.0" - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - is-array-buffer "^3.0.2" - is-shared-array-buffer "^1.0.2" - -asap@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== - -ast-types@0.15.2: - version "0.15.2" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.15.2.tgz#39ae4809393c4b16df751ee563411423e85fb49d" - integrity sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg== - dependencies: - tslib "^2.0.1" - -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async@^3.2.2: - version "3.2.4" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" - integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== - -asynciterator.prototype@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz#8c5df0514936cdd133604dfcc9d3fb93f09b2b62" - integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg== - dependencies: - has-symbols "^1.0.3" - -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== - -babel-core@^7.0.0-bridge.0: - version "7.0.0-bridge.0" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" - integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== - -babel-jest@^29.2.1, babel-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" - integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== - dependencies: - "@jest/transform" "^29.7.0" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^29.6.3" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - -babel-plugin-istanbul@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" - integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.1.14" - "@types/babel__traverse" "^7.0.6" - -babel-plugin-polyfill-corejs2@^0.4.6: - version "0.4.6" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz#b2df0251d8e99f229a8e60fc4efa9a68b41c8313" - integrity sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q== - dependencies: - "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.4.3" - semver "^6.3.1" - -babel-plugin-polyfill-corejs3@^0.8.5: - version "0.8.6" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz#25c2d20002da91fe328ff89095c85a391d6856cf" - integrity sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.3" - core-js-compat "^3.33.1" - -babel-plugin-polyfill-regenerator@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz#d4c49e4b44614607c13fb769bcd85c72bb26a4a5" - integrity sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.3" - -babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: - version "7.0.0-beta.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf" - integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ== - -babel-plugin-transform-flow-enums@^0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz#d1d0cc9bdc799c850ca110d0ddc9f21b9ec3ef25" - integrity sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ== - dependencies: - "@babel/plugin-syntax-flow" "^7.12.1" - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -babel-preset-fbjs@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz#38a14e5a7a3b285a3f3a86552d650dca5cf6111c" - integrity sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow== - dependencies: - "@babel/plugin-proposal-class-properties" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.0.0" - "@babel/plugin-syntax-class-properties" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - "@babel/plugin-transform-arrow-functions" "^7.0.0" - "@babel/plugin-transform-block-scoped-functions" "^7.0.0" - "@babel/plugin-transform-block-scoping" "^7.0.0" - "@babel/plugin-transform-classes" "^7.0.0" - "@babel/plugin-transform-computed-properties" "^7.0.0" - "@babel/plugin-transform-destructuring" "^7.0.0" - "@babel/plugin-transform-flow-strip-types" "^7.0.0" - "@babel/plugin-transform-for-of" "^7.0.0" - "@babel/plugin-transform-function-name" "^7.0.0" - "@babel/plugin-transform-literals" "^7.0.0" - "@babel/plugin-transform-member-expression-literals" "^7.0.0" - "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/plugin-transform-object-super" "^7.0.0" - "@babel/plugin-transform-parameters" "^7.0.0" - "@babel/plugin-transform-property-literals" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-shorthand-properties" "^7.0.0" - "@babel/plugin-transform-spread" "^7.0.0" - "@babel/plugin-transform-template-literals" "^7.0.0" - babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" - -babel-preset-jest@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" - integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== - dependencies: - babel-plugin-jest-hoist "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-js@^1.1.2, base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -bl@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browserslist@^4.21.9, browserslist@^4.22.1: - version "4.22.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" - integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== - dependencies: - caniuse-lite "^1.0.30001541" - electron-to-chromium "^1.4.535" - node-releases "^2.0.13" - update-browserslist-db "^1.0.13" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== - -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" - integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== - dependencies: - function-bind "^1.1.2" - get-intrinsic "^1.2.1" - set-function-length "^1.1.1" - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -caniuse-lite@^1.0.30001541: - version "1.0.30001553" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001553.tgz#e64e7dc8fd4885cd246bb476471420beb5e474b5" - integrity sha512-N0ttd6TrFfuqKNi+pMgWJTb9qrdJu4JSpgPFLe/lrD19ugC6fZgF0pUewRowDwzdDnb9V41mFcdlYgl/PyKf4A== - -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - 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" - -chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -ci-info@^3.2.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" - integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== - -cjs-module-lexer@^1.0.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" - integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-spinners@^2.5.0: - version "2.9.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.1.tgz#9c0b9dad69a6d47cbb4333c14319b060ed395a35" - integrity sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ== - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - 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" - -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -collect-v8-coverage@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" - integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colorette@^1.0.7: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" - integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== - -command-exists@^1.2.8: - version "1.2.9" - resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" - integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -commander@^9.4.1: - version "9.5.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" - integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== - -commander@~2.13.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" - integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== - -compare-versions@^3.4.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" - integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.1: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -connect@^3.6.5: - version "3.7.0" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" - integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== - dependencies: - debug "2.6.9" - finalhandler "1.1.2" - parseurl "~1.3.3" - utils-merge "1.0.1" - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -core-js-compat@^3.31.0, core-js-compat@^3.33.1: - version "3.33.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.1.tgz#debe80464107d75419e00c2ee29f35982118ff84" - integrity sha512-6pYKNOgD/j/bkC5xS5IIg6bncid3rfrI42oBH1SQJbsmYPKF7rhzcFzYCcxYMmNQQ0rCEB8WqpW7QHndOggaeQ== - dependencies: - browserslist "^4.22.1" - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cosmiconfig@^5.0.5, cosmiconfig@^5.1.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -cosmiconfig@^8.1.3: - version "8.3.6" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" - integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== - dependencies: - import-fresh "^3.3.0" - js-yaml "^4.1.0" - parse-json "^5.2.0" - path-type "^4.0.0" - -create-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" - integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-config "^29.7.0" - jest-util "^29.7.0" - prompts "^2.0.1" - -cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -css-select@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" - integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== - dependencies: - boolbase "^1.0.0" - css-what "^6.1.0" - domhandler "^5.0.2" - domutils "^3.0.1" - nth-check "^2.0.1" - -css-tree@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-tree@^2.2.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" - integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== - dependencies: - mdn-data "2.0.30" - source-map-js "^1.0.1" - -css-tree@~2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.2.1.tgz#36115d382d60afd271e377f9c5f67d02bd48c032" - integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== - dependencies: - mdn-data "2.0.28" - source-map-js "^1.0.1" - -css-what@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" - integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== - -csso@^5.0.5: - version "5.0.5" - resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6" - integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== - dependencies: - css-tree "~2.2.0" - -csstype@^3.0.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" - integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== - -dayjs@^1.8.15: - version "1.11.10" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" - integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== - -debug@2.6.9, debug@^2.2.0: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - -decode-uri-component@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" - integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== - -dedent@^1.0.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff" - integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^4.2.2, deepmerge@^4.3.0, deepmerge@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - -defaults@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" - integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== - dependencies: - clone "^1.0.2" - -define-data-property@^1.0.1, define-data-property@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" - integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== - dependencies: - get-intrinsic "^1.2.1" - gopd "^1.0.1" - has-property-descriptors "^1.0.0" - -define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0, define-properties@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" - integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== - dependencies: - define-data-property "^1.0.1" - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -denodeify@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" - integrity sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg== - -depd@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -deprecated-react-native-prop-types@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-4.1.0.tgz#8ed03a64c21b7fbdd2d000957b6838d4f38d2c66" - integrity sha512-WfepZHmRbbdTvhcolb8aOKEvQdcmTMn5tKLbqbXmkBvjFjRVWAYqsXk/DBsV8TZxws8SdGHLuHaJrHSQUPRdfw== - dependencies: - "@react-native/normalize-colors" "*" - invariant "*" - prop-types "*" - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -diff-sequences@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" - integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== - -dijkstrajs@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz#4c8dbdea1f0f6478bff94d9c49c784d623e4fc23" - integrity sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-serializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" - integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.2" - entities "^4.2.0" - -domelementtype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" - integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - -domhandler@^5.0.2, domhandler@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" - integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== - dependencies: - domelementtype "^2.3.0" - -domutils@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" - integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== - dependencies: - dom-serializer "^2.0.0" - domelementtype "^2.3.0" - domhandler "^5.0.3" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -electron-to-chromium@^1.4.535: - version "1.4.565" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.565.tgz#205f3746a759ec3c43bce98b9eef5445f2721ea9" - integrity sha512-XbMoT6yIvg2xzcbs5hCADi0dXBh4//En3oFXmtPX+jiyyiCTiM9DGFT2SLottjpEs9Z8Mh8SqahbR96MaHfuSg== - -emittery@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" - integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -encode-utf8@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda" - integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -entities@^4.2.0, entities@^4.4.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== - -envinfo@^7.7.2: - version "7.10.0" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.10.0.tgz#55146e3909cc5fe63c22da63fb15b05aeac35b13" - integrity sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -error-stack-parser@^2.0.6: - version "2.1.4" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" - integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== - dependencies: - stackframe "^1.3.4" - -errorhandler@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/errorhandler/-/errorhandler-1.5.1.tgz#b9ba5d17cf90744cd1e851357a6e75bf806a9a91" - integrity sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A== - dependencies: - accepts "~1.3.7" - escape-html "~1.0.3" - -es-abstract@^1.22.1: - version "1.22.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" - integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== - dependencies: - array-buffer-byte-length "^1.0.0" - arraybuffer.prototype.slice "^1.0.2" - available-typed-arrays "^1.0.5" - call-bind "^1.0.5" - es-set-tostringtag "^2.0.1" - es-to-primitive "^1.2.1" - function.prototype.name "^1.1.6" - get-intrinsic "^1.2.2" - get-symbol-description "^1.0.0" - globalthis "^1.0.3" - gopd "^1.0.1" - has-property-descriptors "^1.0.0" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - internal-slot "^1.0.5" - is-array-buffer "^3.0.2" - is-callable "^1.2.7" - is-negative-zero "^2.0.2" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - is-string "^1.0.7" - is-typed-array "^1.1.12" - is-weakref "^1.0.2" - object-inspect "^1.13.1" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.5.1" - safe-array-concat "^1.0.1" - safe-regex-test "^1.0.0" - string.prototype.trim "^1.2.8" - string.prototype.trimend "^1.0.7" - string.prototype.trimstart "^1.0.7" - typed-array-buffer "^1.0.0" - typed-array-byte-length "^1.0.0" - typed-array-byte-offset "^1.0.0" - typed-array-length "^1.0.4" - unbox-primitive "^1.0.2" - which-typed-array "^1.1.13" - -es-iterator-helpers@^1.0.12: - version "1.0.15" - resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40" - integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g== - dependencies: - asynciterator.prototype "^1.0.0" - call-bind "^1.0.2" - define-properties "^1.2.1" - es-abstract "^1.22.1" - es-set-tostringtag "^2.0.1" - function-bind "^1.1.1" - get-intrinsic "^1.2.1" - globalthis "^1.0.3" - has-property-descriptors "^1.0.0" - has-proto "^1.0.1" - has-symbols "^1.0.3" - internal-slot "^1.0.5" - iterator.prototype "^1.1.2" - safe-array-concat "^1.0.1" - -es-set-tostringtag@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" - integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== - dependencies: - get-intrinsic "^1.2.2" - has-tostringtag "^1.0.0" - hasown "^2.0.0" - -es-shim-unscopables@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" - integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== - dependencies: - hasown "^2.0.0" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-config-prettier@^8.5.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz#3a06a662130807e2502fc3ff8b4143d8a0658e11" - integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg== - -eslint-plugin-eslint-comments@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz#9e1cd7b4413526abb313933071d7aba05ca12ffa" - integrity sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ== - dependencies: - escape-string-regexp "^1.0.5" - ignore "^5.0.5" - -eslint-plugin-ft-flow@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-2.0.3.tgz#3b3c113c41902bcbacf0e22b536debcfc3c819e8" - integrity sha512-Vbsd/b+LYA99jUbsL6viEUWShFaYQt2YQs3QN3f+aeszOhh2sgdcU0mjzDyD4yyBvMc8qy2uwvBBWfMzEX06tg== - dependencies: - lodash "^4.17.21" - string-natural-compare "^3.0.1" - -eslint-plugin-jest@^26.5.3: - version "26.9.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-26.9.0.tgz#7931c31000b1c19e57dbfb71bbf71b817d1bf949" - integrity sha512-TWJxWGp1J628gxh2KhaH1H1paEdgE2J61BBF1I59c6xWeL5+D1BzMxGDN/nXAfX+aSkR5u80K+XhskK6Gwq9ng== - dependencies: - "@typescript-eslint/utils" "^5.10.0" - -eslint-plugin-prettier@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" - integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== - dependencies: - prettier-linter-helpers "^1.0.0" - -eslint-plugin-react-hooks@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" - integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== - -eslint-plugin-react-native-globals@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-native-globals/-/eslint-plugin-react-native-globals-0.1.2.tgz#ee1348bc2ceb912303ce6bdbd22e2f045ea86ea2" - integrity sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g== - -eslint-plugin-react-native@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-native/-/eslint-plugin-react-native-4.1.0.tgz#5343acd3b2246bc1b857ac38be708f070d18809f" - integrity sha512-QLo7rzTBOl43FvVqDdq5Ql9IoElIuTdjrz9SKAXCvULvBoRZ44JGSkx9z4999ZusCsb4rK3gjS8gOGyeYqZv2Q== - dependencies: - eslint-plugin-react-native-globals "^0.1.1" - -eslint-plugin-react@^7.30.1: - version "7.33.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz#69ee09443ffc583927eafe86ffebb470ee737608" - integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== - dependencies: - array-includes "^3.1.6" - array.prototype.flatmap "^1.3.1" - array.prototype.tosorted "^1.1.1" - doctrine "^2.1.0" - es-iterator-helpers "^1.0.12" - estraverse "^5.3.0" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.1.2" - object.entries "^1.1.6" - object.fromentries "^2.0.6" - object.hasown "^1.1.2" - object.values "^1.1.6" - prop-types "^15.8.1" - resolve "^2.0.0-next.4" - semver "^6.3.1" - string.prototype.matchall "^4.0.8" - -eslint-scope@5.1.1, eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint@^8.19.0: - version "8.52.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.52.0.tgz#d0cd4a1fac06427a61ef9242b9353f36ea7062fc" - integrity sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.2" - "@eslint/js" "8.52.0" - "@humanwhocodes/config-array" "^0.11.13" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esprima@^4.0.0, esprima@~4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -event-target-shim@^5.0.0, event-target-shim@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== - -expect@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" - integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== - dependencies: - "@jest/expect-utils" "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - -expo-checkbox@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/expo-checkbox/-/expo-checkbox-2.5.0.tgz#2c5a6a6fdfe35dc6ffed17b1558ef89fdfa486f6" - integrity sha512-0ilRRQ1c50wY4DEzu5Vg/gyWYOpq2j4Js3m6+zP7Y526G9yL+13fexjPd+7sMSEZhPopGGPp9y82uiIhkfVMKA== - -expo-font@^11.6.0: - version "11.6.0" - resolved "https://registry.yarnpkg.com/expo-font/-/expo-font-11.6.0.tgz#7c1c8c82e3b437d54d911808fdf03578763913f3" - integrity sha512-ekfU0MN7vzJNGwQCJhxnhF2M9Fq/RtVF5xSQpr8+f4ISPimmKfEcArMHKCl4oG3saFVjSRX7fLbo38WOv3z5Mw== - dependencies: - fontfaceobserver "^2.1.0" - -expo-haptics@^12.6.0: - version "12.6.0" - resolved "https://registry.yarnpkg.com/expo-haptics/-/expo-haptics-12.6.0.tgz#1e32e5411c15e91df1f757faf1a53484cc47cf6d" - integrity sha512-/kw75+2qKfr+K1wIjul0BFG1YUqidXYt1wMzsEmdDTCBU/P/xTKX5O3X5W3mdAeUSvA8FFPbij0IHbyw3W4XKg== - -expo-modules-core@^1.5.11: - version "1.5.11" - resolved "https://registry.yarnpkg.com/expo-modules-core/-/expo-modules-core-1.5.11.tgz#6ee33641cec5ef9c629393a267cef122110d2bf0" - integrity sha512-1Dj2t74nVjxq6xEQf2b9WFfAMhPzVnR0thY0PfRFgob4STyj3sq1U4PIHVWvKQBtDKIa227DrNRb+Hu+LqKWQg== - dependencies: - compare-versions "^3.4.0" - invariant "^2.2.4" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" - integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== - -fast-glob@^3.2.9: - version "3.3.1" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" - integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== - 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" - -fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fast-xml-parser@^4.0.12: - version "4.3.2" - resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.3.2.tgz#761e641260706d6e13251c4ef8e3f5694d4b0d79" - integrity sha512-rmrXUXwbJedoXkStenj1kkljNF7ugn5ZjR9FJcwmCfcCbtOMDghPajbc+Tck6vE6F5XsDmx+Pr2le9fw8+pXBg== - dependencies: - strnum "^1.0.5" - -fastq@^1.6.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" - integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== - dependencies: - reusify "^1.0.4" - -fb-watchman@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" - integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== - dependencies: - bser "2.1.1" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -filter-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" - integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== - -finalhandler@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-cache-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.1.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.1.tgz#a02a15fdec25a8f844ff7cc658f03dd99eb4609b" - integrity sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q== - dependencies: - flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" - -flatted@^3.2.9: - version "3.2.9" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" - integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== - -flow-enums-runtime@^0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/flow-enums-runtime/-/flow-enums-runtime-0.0.5.tgz#95884bfcc82edaf27eef7e1dd09732331cfbafbc" - integrity sha512-PSZF9ZuaZD03sT9YaIs0FrGJ7lSUw7rHZIex+73UYVXg46eL/wxN5PaVcPJFudE2cJu5f0fezitV5aBkLHPUOQ== - -flow-parser@0.*: - version "0.219.3" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.219.3.tgz#f817121332acb168f4a71ba2dfa7bce8c2723aa1" - integrity sha512-dyPC0+TwAcBMQ1IZhSpj91mxZ31AI9FJ3q/ZMt8kdKaITnDCGmyUyWOwUfAKBVLrUTkdaTfpla0muhwOGY+dXw== - -flow-parser@^0.206.0: - version "0.206.0" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.206.0.tgz#f4f794f8026535278393308e01ea72f31000bfef" - integrity sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w== - -fontfaceobserver@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz#5fb392116e75d5024b7ec8e4f2ce92106d1488c8" - integrity sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg== - -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@^2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.1, function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" - integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - functions-have-names "^1.2.3" - -functions-have-names@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.1, get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" - integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== - dependencies: - function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -glob-parent@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@^7.1.3, glob@^7.1.4: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - 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" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0: - version "13.23.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02" - integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== - dependencies: - type-fest "^0.20.2" - -globalthis@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" - integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== - dependencies: - define-properties "^1.1.3" - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - 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" - -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -graceful-fs@^4.1.11, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -has-bigints@^1.0.1, has-bigints@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" - integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" - integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== - dependencies: - get-intrinsic "^1.2.2" - -has-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" - integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== - -has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -hasown@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" - integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== - dependencies: - function-bind "^1.1.2" - -hermes-estree@0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.12.0.tgz#8a289f9aee854854422345e6995a48613bac2ca8" - integrity sha512-+e8xR6SCen0wyAKrMT3UD0ZCCLymKhRgjEB5sS28rKiFir/fXgLoeRilRUssFCILmGHb+OvHDUlhxs0+IEyvQw== - -hermes-parser@0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.12.0.tgz#114dc26697cfb41a6302c215b859b74224383773" - integrity sha512-d4PHnwq6SnDLhYl3LHNHvOg7nQ6rcI7QVil418REYksv0Mh3cEkHDcuhGxNQ3vgnLSLl4QSvDrFCwQNYdpWlzw== - dependencies: - hermes-estree "0.12.0" - -hermes-profile-transformer@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz#bd0f5ecceda80dd0ddaae443469ab26fb38fc27b" - integrity sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ== - dependencies: - source-map "^0.7.3" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -ieee754@^1.1.13: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore@^5.0.5, ignore@^5.2.0: - version "5.2.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" - integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== - -image-size@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.0.2.tgz#d778b6d0ab75b2737c1556dd631652eb963bc486" - integrity sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg== - dependencies: - queue "6.0.2" - -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - -import-fresh@^3.2.1, import-fresh@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -internal-slot@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" - integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== - dependencies: - get-intrinsic "^1.2.2" - hasown "^2.0.0" - side-channel "^1.0.4" - -invariant@*, invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -ip@^1.1.5: - version "1.1.8" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" - integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== - -is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" - integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.0" - is-typed-array "^1.1.10" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-async-function@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" - integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== - dependencies: - has-tostringtag "^1.0.0" - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - -is-core-module@^2.13.0: - version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== - dependencies: - hasown "^2.0.0" - -is-date-object@^1.0.1, is-date-object@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-finalizationregistry@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" - integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== - dependencies: - call-bind "^1.0.2" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-generator-function@^1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" - integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== - dependencies: - has-tostringtag "^1.0.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - -is-map@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" - integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== - -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== - -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-obj@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== - -is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-set@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" - integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== - -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== - dependencies: - call-bind "^1.0.2" - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: - version "1.1.12" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" - integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== - dependencies: - which-typed-array "^1.1.11" - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -is-weakmap@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" - integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== - -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - -is-weakset@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" - integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== - -isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" - integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== - -istanbul-lib-instrument@^5.0.4: - version "5.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" - integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - -istanbul-lib-instrument@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz#71e87707e8041428732518c6fb5211761753fbdf" - integrity sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^7.5.4" - -istanbul-lib-report@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" - integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^4.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.1.3: - version "3.1.6" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.6.tgz#2544bcab4768154281a2f0870471902704ccaa1a" - integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -iterator.prototype@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" - integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== - dependencies: - define-properties "^1.2.1" - get-intrinsic "^1.2.1" - has-symbols "^1.0.3" - reflect.getprototypeof "^1.0.4" - set-function-name "^2.0.1" - -jest-changed-files@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" - integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== - dependencies: - execa "^5.0.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - -jest-circus@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" - integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^1.0.0" - is-generator-fn "^2.0.0" - jest-each "^29.7.0" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - pretty-format "^29.7.0" - pure-rand "^6.0.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-cli@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" - integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== - dependencies: - "@jest/core" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - chalk "^4.0.0" - create-jest "^29.7.0" - exit "^0.1.2" - import-local "^3.0.2" - jest-config "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - yargs "^17.3.1" - -jest-config@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" - integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== - dependencies: - "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.7.0" - "@jest/types" "^29.6.3" - babel-jest "^29.7.0" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-circus "^29.7.0" - jest-environment-node "^29.7.0" - jest-get-type "^29.6.3" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-runner "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-json-comments "^3.1.1" - -jest-diff@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" - integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== - dependencies: - chalk "^4.0.0" - diff-sequences "^29.6.3" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-docblock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" - integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== - dependencies: - detect-newline "^3.0.0" - -jest-each@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" - integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - jest-get-type "^29.6.3" - jest-util "^29.7.0" - pretty-format "^29.7.0" - -jest-environment-node@^29.2.1, jest-environment-node@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" - integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - jest-util "^29.7.0" - -jest-get-type@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" - integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== - -jest-haste-map@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" - integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== - dependencies: - "@jest/types" "^29.6.3" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - jest-worker "^29.7.0" - micromatch "^4.0.4" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.2" - -jest-leak-detector@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" - integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== - dependencies: - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-matcher-utils@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" - integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== - dependencies: - chalk "^4.0.0" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-message-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" - integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.6.3" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-mock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" - integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-util "^29.7.0" - -jest-pnp-resolver@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" - integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== - -jest-regex-util@^27.0.6: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" - integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== - -jest-regex-util@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" - integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== - -jest-resolve-dependencies@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" - integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== - dependencies: - jest-regex-util "^29.6.3" - jest-snapshot "^29.7.0" - -jest-resolve@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" - integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== - dependencies: - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-pnp-resolver "^1.2.2" - jest-util "^29.7.0" - jest-validate "^29.7.0" - resolve "^1.20.0" - resolve.exports "^2.0.0" - slash "^3.0.0" - -jest-runner@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" - integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== - dependencies: - "@jest/console" "^29.7.0" - "@jest/environment" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.13.1" - graceful-fs "^4.2.9" - jest-docblock "^29.7.0" - jest-environment-node "^29.7.0" - jest-haste-map "^29.7.0" - jest-leak-detector "^29.7.0" - jest-message-util "^29.7.0" - jest-resolve "^29.7.0" - jest-runtime "^29.7.0" - jest-util "^29.7.0" - jest-watcher "^29.7.0" - jest-worker "^29.7.0" - p-limit "^3.1.0" - source-map-support "0.5.13" - -jest-runtime@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" - integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/globals" "^29.7.0" - "@jest/source-map" "^29.6.3" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - strip-bom "^4.0.0" - -jest-snapshot@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" - integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== - dependencies: - "@babel/core" "^7.11.6" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-jsx" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^29.7.0" - graceful-fs "^4.2.9" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - natural-compare "^1.4.0" - pretty-format "^29.7.0" - semver "^7.5.3" - -jest-util@^27.2.0: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" - integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" - integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-validate@^29.2.1, jest-validate@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" - integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== - dependencies: - "@jest/types" "^29.6.3" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^29.6.3" - leven "^3.1.0" - pretty-format "^29.7.0" - -jest-watcher@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" - integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== - dependencies: - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.13.1" - jest-util "^29.7.0" - string-length "^4.0.1" - -jest-worker@^27.2.0: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest-worker@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" - integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== - dependencies: - "@types/node" "*" - jest-util "^29.7.0" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest@^29.2.1: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" - integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== - dependencies: - "@jest/core" "^29.7.0" - "@jest/types" "^29.6.3" - import-local "^3.0.2" - jest-cli "^29.7.0" - -joi@^17.2.1: - version "17.11.0" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.11.0.tgz#aa9da753578ec7720e6f0ca2c7046996ed04fc1a" - integrity sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ== - dependencies: - "@hapi/hoek" "^9.0.0" - "@hapi/topo" "^5.0.0" - "@sideway/address" "^4.1.3" - "@sideway/formula" "^3.0.1" - "@sideway/pinpoint" "^2.0.0" - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsc-android@^250231.0.0: - version "250231.0.0" - resolved "https://registry.yarnpkg.com/jsc-android/-/jsc-android-250231.0.0.tgz#91720f8df382a108872fa4b3f558f33ba5e95262" - integrity sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw== - -jsc-safe-url@^0.2.2: - version "0.2.4" - resolved "https://registry.yarnpkg.com/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz#141c14fbb43791e88d5dc64e85a374575a83477a" - integrity sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q== - -jscodeshift@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.14.0.tgz#7542e6715d6d2e8bde0b4e883f0ccea358b46881" - integrity sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA== - dependencies: - "@babel/core" "^7.13.16" - "@babel/parser" "^7.13.16" - "@babel/plugin-proposal-class-properties" "^7.13.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" - "@babel/plugin-proposal-optional-chaining" "^7.13.12" - "@babel/plugin-transform-modules-commonjs" "^7.13.8" - "@babel/preset-flow" "^7.13.13" - "@babel/preset-typescript" "^7.13.0" - "@babel/register" "^7.13.16" - babel-core "^7.0.0-bridge.0" - chalk "^4.1.2" - flow-parser "0.*" - graceful-fs "^4.2.4" - micromatch "^4.0.4" - neo-async "^2.5.0" - node-dir "^0.1.17" - recast "^0.21.0" - temp "^0.8.4" - write-file-atomic "^2.3.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json5@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" - -"jsx-ast-utils@^2.4.1 || ^3.0.0": - version "3.3.5" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" - integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== - dependencies: - array-includes "^3.1.6" - array.prototype.flat "^1.3.1" - object.assign "^4.1.4" - object.values "^1.1.6" - -keyv@^4.5.3: - version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.throttle@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" - integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== - -lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -logkitty@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/logkitty/-/logkitty-0.7.1.tgz#8e8d62f4085a826e8d38987722570234e33c6aa7" - integrity sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ== - dependencies: - ansi-fragments "^0.2.1" - dayjs "^1.8.15" - yargs "^15.1.0" - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -make-dir@^2.0.0, make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" - integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== - dependencies: - semver "^7.5.3" - -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== - -mdn-data@2.0.28: - version "2.0.28" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba" - integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== - -mdn-data@2.0.30: - version "2.0.30" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" - integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== - -memoize-one@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" - integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== - -merge-options@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-3.0.4.tgz#84709c2aa2a4b24c1981f66c179fe5565cc6dbb7" - integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ== - dependencies: - is-plain-obj "^2.1.0" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -metro-babel-transformer@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.76.8.tgz#5efd1027353b36b73706164ef09c290dceac096a" - integrity sha512-Hh6PW34Ug/nShlBGxkwQJSgPGAzSJ9FwQXhUImkzdsDgVu6zj5bx258J8cJVSandjNoQ8nbaHK6CaHlnbZKbyA== - dependencies: - "@babel/core" "^7.20.0" - hermes-parser "0.12.0" - nullthrows "^1.1.1" - -metro-cache-key@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.76.8.tgz#8a0a5e991c06f56fcc584acadacb313c312bdc16" - integrity sha512-buKQ5xentPig9G6T37Ww/R/bC+/V1MA5xU/D8zjnhlelsrPG6w6LtHUS61ID3zZcMZqYaELWk5UIadIdDsaaLw== - -metro-cache@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.76.8.tgz#296c1c189db2053b89735a8f33dbe82575f53661" - integrity sha512-QBJSJIVNH7Hc/Yo6br/U/qQDUpiUdRgZ2ZBJmvAbmAKp2XDzsapnMwK/3BGj8JNWJF7OLrqrYHsRsukSbUBpvQ== - dependencies: - metro-core "0.76.8" - rimraf "^3.0.2" - -metro-config@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.76.8.tgz#20bd5397fcc6096f98d2a813a7cecb38b8af062d" - integrity sha512-SL1lfKB0qGHALcAk2zBqVgQZpazDYvYFGwCK1ikz0S6Y/CM2i2/HwuZN31kpX6z3mqjv/6KvlzaKoTb1otuSAA== - dependencies: - connect "^3.6.5" - cosmiconfig "^5.0.5" - jest-validate "^29.2.1" - metro "0.76.8" - metro-cache "0.76.8" - metro-core "0.76.8" - metro-runtime "0.76.8" - -metro-core@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.76.8.tgz#917c8157c63406cb223522835abb8e7c6291dcad" - integrity sha512-sl2QLFI3d1b1XUUGxwzw/KbaXXU/bvFYrSKz6Sg19AdYGWFyzsgZ1VISRIDf+HWm4R/TJXluhWMEkEtZuqi3qA== - dependencies: - lodash.throttle "^4.1.1" - metro-resolver "0.76.8" - -metro-file-map@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.76.8.tgz#a1db1185b6c316904ba6b53d628e5d1323991d79" - integrity sha512-A/xP1YNEVwO1SUV9/YYo6/Y1MmzhL4ZnVgcJC3VmHp/BYVOXVStzgVbWv2wILe56IIMkfXU+jpXrGKKYhFyHVw== - dependencies: - anymatch "^3.0.3" - debug "^2.2.0" - fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - invariant "^2.2.4" - jest-regex-util "^27.0.6" - jest-util "^27.2.0" - jest-worker "^27.2.0" - micromatch "^4.0.4" - node-abort-controller "^3.1.1" - nullthrows "^1.1.1" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.3.2" - -metro-inspector-proxy@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.76.8.tgz#6b8678a7461b0b42f913a7881cc9319b4d3cddff" - integrity sha512-Us5o5UEd4Smgn1+TfHX4LvVPoWVo9VsVMn4Ldbk0g5CQx3Gu0ygc/ei2AKPGTwsOZmKxJeACj7yMH2kgxQP/iw== - dependencies: - connect "^3.6.5" - debug "^2.2.0" - node-fetch "^2.2.0" - ws "^7.5.1" - yargs "^17.6.2" - -metro-minify-terser@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.76.8.tgz#915ab4d1419257fc6a0b9fa15827b83fe69814bf" - integrity sha512-Orbvg18qXHCrSj1KbaeSDVYRy/gkro2PC7Fy2tDSH1c9RB4aH8tuMOIXnKJE+1SXxBtjWmQ5Yirwkth2DyyEZA== - dependencies: - terser "^5.15.0" - -metro-minify-uglify@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.76.8.tgz#74745045ea2dd29f8783db483b2fce58385ba695" - integrity sha512-6l8/bEvtVaTSuhG1FqS0+Mc8lZ3Bl4RI8SeRIifVLC21eeSDp4CEBUWSGjpFyUDfi6R5dXzYaFnSgMNyfxADiQ== - dependencies: - uglify-es "^3.1.9" - -metro-react-native-babel-preset@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.76.8.tgz#7476efae14363cbdfeeec403b4f01d7348e6c048" - integrity sha512-Ptza08GgqzxEdK8apYsjTx2S8WDUlS2ilBlu9DR1CUcHmg4g3kOkFylZroogVAUKtpYQNYwAvdsjmrSdDNtiAg== - dependencies: - "@babel/core" "^7.20.0" - "@babel/plugin-proposal-async-generator-functions" "^7.0.0" - "@babel/plugin-proposal-class-properties" "^7.18.0" - "@babel/plugin-proposal-export-default-from" "^7.0.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0" - "@babel/plugin-proposal-numeric-separator" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.20.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" - "@babel/plugin-proposal-optional-chaining" "^7.20.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-export-default-from" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.18.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" - "@babel/plugin-syntax-optional-chaining" "^7.0.0" - "@babel/plugin-transform-arrow-functions" "^7.0.0" - "@babel/plugin-transform-async-to-generator" "^7.20.0" - "@babel/plugin-transform-block-scoping" "^7.0.0" - "@babel/plugin-transform-classes" "^7.0.0" - "@babel/plugin-transform-computed-properties" "^7.0.0" - "@babel/plugin-transform-destructuring" "^7.20.0" - "@babel/plugin-transform-flow-strip-types" "^7.20.0" - "@babel/plugin-transform-function-name" "^7.0.0" - "@babel/plugin-transform-literals" "^7.0.0" - "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" - "@babel/plugin-transform-parameters" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-react-jsx-self" "^7.0.0" - "@babel/plugin-transform-react-jsx-source" "^7.0.0" - "@babel/plugin-transform-runtime" "^7.0.0" - "@babel/plugin-transform-shorthand-properties" "^7.0.0" - "@babel/plugin-transform-spread" "^7.0.0" - "@babel/plugin-transform-sticky-regex" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.5.0" - "@babel/plugin-transform-unicode-regex" "^7.0.0" - "@babel/template" "^7.0.0" - babel-plugin-transform-flow-enums "^0.0.2" - react-refresh "^0.4.0" - -metro-react-native-babel-transformer@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.76.8.tgz#c3a98e1f4cd5faf1e21eba8e004b94a90c4db69b" - integrity sha512-3h+LfS1WG1PAzhq8QF0kfXjxuXetbY/lgz8vYMQhgrMMp17WM1DNJD0gjx8tOGYbpbBC1qesJ45KMS4o5TA73A== - dependencies: - "@babel/core" "^7.20.0" - babel-preset-fbjs "^3.4.0" - hermes-parser "0.12.0" - metro-react-native-babel-preset "0.76.8" - nullthrows "^1.1.1" - -metro-resolver@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.76.8.tgz#0862755b9b84e26853978322464fb37c6fdad76d" - integrity sha512-KccOqc10vrzS7ZhG2NSnL2dh3uVydarB7nOhjreQ7C4zyWuiW9XpLC4h47KtGQv3Rnv/NDLJYeDqaJ4/+140HQ== - -metro-runtime@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.76.8.tgz#74b2d301a2be5f3bbde91b8f1312106f8ffe50c3" - integrity sha512-XKahvB+iuYJSCr3QqCpROli4B4zASAYpkK+j3a0CJmokxCDNbgyI4Fp88uIL6rNaZfN0Mv35S0b99SdFXIfHjg== - dependencies: - "@babel/runtime" "^7.0.0" - react-refresh "^0.4.0" - -metro-source-map@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.76.8.tgz#f085800152a6ba0b41ca26833874d31ec36c5a53" - integrity sha512-Hh0ncPsHPVf6wXQSqJqB3K9Zbudht4aUtNpNXYXSxH+pteWqGAXnjtPsRAnCsCWl38wL0jYF0rJDdMajUI3BDw== - dependencies: - "@babel/traverse" "^7.20.0" - "@babel/types" "^7.20.0" - invariant "^2.2.4" - metro-symbolicate "0.76.8" - nullthrows "^1.1.1" - ob1 "0.76.8" - source-map "^0.5.6" - vlq "^1.0.0" - -metro-symbolicate@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.76.8.tgz#f102ac1a306d51597ecc8fdf961c0a88bddbca03" - integrity sha512-LrRL3uy2VkzrIXVlxoPtqb40J6Bf1mlPNmUQewipc3qfKKFgtPHBackqDy1YL0njDsWopCKcfGtFYLn0PTUn3w== - dependencies: - invariant "^2.2.4" - metro-source-map "0.76.8" - nullthrows "^1.1.1" - source-map "^0.5.6" - through2 "^2.0.1" - vlq "^1.0.0" - -metro-transform-plugins@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.76.8.tgz#d77c28a6547a8e3b72250f740fcfbd7f5408f8ba" - integrity sha512-PlkGTQNqS51Bx4vuufSQCdSn2R2rt7korzngo+b5GCkeX5pjinPjnO2kNhQ8l+5bO0iUD/WZ9nsM2PGGKIkWFA== - dependencies: - "@babel/core" "^7.20.0" - "@babel/generator" "^7.20.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.20.0" - nullthrows "^1.1.1" - -metro-transform-worker@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.76.8.tgz#b9012a196cee205170d0c899b8b175b9305acdea" - integrity sha512-mE1fxVAnJKmwwJyDtThildxxos9+DGs9+vTrx2ktSFMEVTtXS/bIv2W6hux1pqivqAfyJpTeACXHk5u2DgGvIQ== - dependencies: - "@babel/core" "^7.20.0" - "@babel/generator" "^7.20.0" - "@babel/parser" "^7.20.0" - "@babel/types" "^7.20.0" - babel-preset-fbjs "^3.4.0" - metro "0.76.8" - metro-babel-transformer "0.76.8" - metro-cache "0.76.8" - metro-cache-key "0.76.8" - metro-source-map "0.76.8" - metro-transform-plugins "0.76.8" - nullthrows "^1.1.1" - -metro@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro/-/metro-0.76.8.tgz#ba526808b99977ca3f9ac5a7432fd02a340d13a6" - integrity sha512-oQA3gLzrrYv3qKtuWArMgHPbHu8odZOD9AoavrqSFllkPgOtmkBvNNDLCELqv5SjBfqjISNffypg+5UGG3y0pg== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/core" "^7.20.0" - "@babel/generator" "^7.20.0" - "@babel/parser" "^7.20.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.20.0" - "@babel/types" "^7.20.0" - accepts "^1.3.7" - async "^3.2.2" - chalk "^4.0.0" - ci-info "^2.0.0" - connect "^3.6.5" - debug "^2.2.0" - denodeify "^1.2.1" - error-stack-parser "^2.0.6" - graceful-fs "^4.2.4" - hermes-parser "0.12.0" - image-size "^1.0.2" - invariant "^2.2.4" - jest-worker "^27.2.0" - jsc-safe-url "^0.2.2" - lodash.throttle "^4.1.1" - metro-babel-transformer "0.76.8" - metro-cache "0.76.8" - metro-cache-key "0.76.8" - metro-config "0.76.8" - metro-core "0.76.8" - metro-file-map "0.76.8" - metro-inspector-proxy "0.76.8" - metro-minify-terser "0.76.8" - metro-minify-uglify "0.76.8" - metro-react-native-babel-preset "0.76.8" - metro-resolver "0.76.8" - metro-runtime "0.76.8" - metro-source-map "0.76.8" - metro-symbolicate "0.76.8" - metro-transform-plugins "0.76.8" - metro-transform-worker "0.76.8" - mime-types "^2.1.27" - node-fetch "^2.2.0" - nullthrows "^1.1.1" - rimraf "^3.0.2" - serialize-error "^2.1.0" - source-map "^0.5.6" - strip-ansi "^6.0.0" - throat "^5.0.0" - ws "^7.5.1" - yargs "^17.6.2" - -micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.27, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.4.1: - version "2.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" - integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -mkdirp@^0.5.1: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -nanoid@^3.1.23: - version "3.3.6" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" - integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== - -natural-compare-lite@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" - integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.5.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -nocache@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/nocache/-/nocache-3.0.4.tgz#5b37a56ec6e09fc7d401dceaed2eab40c8bfdf79" - integrity sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw== - -node-abort-controller@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548" - integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== - -node-dir@^0.1.17: - version "0.1.17" - resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" - integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== - dependencies: - minimatch "^3.0.2" - -node-fetch@^2.2.0, node-fetch@^2.6.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" - integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== - dependencies: - whatwg-url "^5.0.0" - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== - -node-releases@^2.0.13: - version "2.0.13" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" - integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== - -node-stream-zip@^1.9.1: - version "1.15.0" - resolved "https://registry.yarnpkg.com/node-stream-zip/-/node-stream-zip-1.15.0.tgz#158adb88ed8004c6c49a396b50a6a5de3bca33ea" - integrity sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw== - -normalize-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -nth-check@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" - integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== - dependencies: - boolbase "^1.0.0" - -nullthrows@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" - integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== - -ob1@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.76.8.tgz#ac4c459465b1c0e2c29aaa527e09fc463d3ffec8" - integrity sha512-dlBkJJV5M/msj9KYA9upc+nUWVwuOFFTbu28X6kZeGwcuW+JxaHSBZ70SYQnk5M+j5JbNLR6yKHmgW4M5E7X5g== - -object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-inspect@^1.13.1, object-inspect@^1.9.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" - integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" - integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -object.entries@^1.1.6: - version "1.1.7" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" - integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -object.fromentries@^2.0.6: - version "2.0.7" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" - integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -object.hasown@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.3.tgz#6a5f2897bb4d3668b8e79364f98ccf971bda55ae" - integrity sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA== - dependencies: - define-properties "^1.2.0" - es-abstract "^1.22.1" - -object.values@^1.1.6: - version "1.1.7" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" - integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.0, onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -open@^6.2.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" - integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== - dependencies: - is-wsl "^1.1.0" - -optionator@^0.9.3: - version "0.9.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" - integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== - dependencies: - "@aashutoshrathi/word-wrap" "^1.2.3" - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - -ora@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== - dependencies: - bl "^4.1.0" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -p-limit@^2.0.0, p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2, p-limit@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - 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" - -parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -path-dirname@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pirates@^4.0.4, pirates@^4.0.5: - version "4.0.6" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" - integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pngjs@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" - integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^2.4.1: - version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - -pretty-format@^26.5.2, pretty-format@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" - integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== - dependencies: - "@jest/types" "^26.6.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^17.0.1" - -pretty-format@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" - integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== - dependencies: - "@jest/schemas" "^29.6.3" - ansi-styles "^5.0.0" - react-is "^18.0.0" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -promise@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/promise/-/promise-8.3.0.tgz#8cb333d1edeb61ef23869fbb8a4ea0279ab60e0a" - integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== - dependencies: - asap "~2.0.6" - -prompts@^2.0.1, prompts@^2.4.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -prop-types@*, prop-types@^15.6.2, prop-types@^15.8.0, prop-types@^15.8.1: - version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - -punycode@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" - integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== - -pure-rand@^6.0.0: - version "6.0.4" - resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.4.tgz#50b737f6a925468679bff00ad20eade53f37d5c7" - integrity sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA== - -qrcode@^1.5.1: - version "1.5.3" - resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.3.tgz#03afa80912c0dccf12bc93f615a535aad1066170" - integrity sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg== - dependencies: - dijkstrajs "^1.0.1" - encode-utf8 "^1.0.3" - pngjs "^5.0.0" - yargs "^15.3.1" - -query-string@^7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328" - integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg== - dependencies: - decode-uri-component "^0.2.2" - filter-obj "^1.1.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -queue@6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65" - integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== - dependencies: - inherits "~2.0.3" - -range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -react-devtools-core@^4.27.2: - version "4.28.4" - resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.28.4.tgz#fb8183eada77093f4c2f9830e664bf22255abe27" - integrity sha512-IUZKLv3CimeM07G3vX4H4loxVpByrzq3HvfTX7v9migalwvLs9ZY5D3S3pKR33U+GguYfBBdMMZyToFhsSE/iQ== - dependencies: - shell-quote "^1.6.1" - ws "^7" - -react-freeze@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/react-freeze/-/react-freeze-1.0.3.tgz#5e3ca90e682fed1d73a7cb50c2c7402b3e85618d" - integrity sha512-ZnXwLQnGzrDpHBHiC56TXFXvmolPeMjTn1UOm610M4EXGzbEDR7oOIyS2ZiItgbs6eZc4oU/a0hpk8PrcKvv5g== - -"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^18.0.0, react-is@^18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" - integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== - -react-is@^16.13.0, react-is@^16.13.1: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-is@^17.0.1: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - -react-native-iphone-x-helper@^1.0.3: - version "1.3.1" - resolved "https://registry.yarnpkg.com/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.3.1.tgz#20c603e9a0e765fd6f97396638bdeb0e5a60b010" - integrity sha512-HOf0jzRnq2/aFUcdCJ9w9JGzN3gdEg0zFE4FyYlp4jtidqU03D5X7ZegGKfT1EWteR0gPBGp9ye5T5FvSWi9Yg== - -react-native-keyboard-aware-scroll-view@^0.9.5: - version "0.9.5" - resolved "https://registry.yarnpkg.com/react-native-keyboard-aware-scroll-view/-/react-native-keyboard-aware-scroll-view-0.9.5.tgz#e2e9665d320c188e6b1f22f151b94eb358bf9b71" - integrity sha512-XwfRn+T/qBH9WjTWIBiJD2hPWg0yJvtaEw6RtPCa5/PYHabzBaWxYBOl0usXN/368BL1XktnZPh8C2lmTpOREA== - dependencies: - prop-types "^15.6.2" - react-native-iphone-x-helper "^1.0.3" - -react-native-qrcode-svg@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/react-native-qrcode-svg/-/react-native-qrcode-svg-6.2.0.tgz#62b62c5997ff23ba22544e289a6112a08f8ea306" - integrity sha512-rb2PgUwT8QpQyReVYNvzRY84AHsMh81354Tnkfp6MfqRbcdJURhnBWLBOO11pLMS6eXiwlq4SkcQxy88hRq+Dw== - dependencies: - prop-types "^15.8.0" - qrcode "^1.5.1" - -react-native-safe-area-context@^4.7.2: - version "4.7.3" - resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-4.7.3.tgz#149542a05fa68b2892568e8b338bc1e4e005cd0d" - integrity sha512-Z+oldEQ/tHRU5X++ePdIGosPT9Fa93Mtky/Ptdh7qei4HqBUOcMnIj0KKCJGPRYyvN7j/63Ix0YqqYyVUEof5g== - -react-native-screens@^3.25.0: - version "3.27.0" - resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-3.27.0.tgz#2ac39f78dee27df97d3b6fb11ebf8e5751aa986a" - integrity sha512-FzSUygZ7yLQyhDJZsl7wU68LwRpVtVdqOPWribmEU3Tf26FohFGGcfJx1D8lf2V2Teb8tI+IaLnXCKbyh2xffA== - dependencies: - react-freeze "^1.0.0" - warn-once "^0.1.0" - -react-native-svg-transformer@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/react-native-svg-transformer/-/react-native-svg-transformer-1.1.0.tgz#2032bc766e20533af8aec81df49c218f08d4dbbd" - integrity sha512-I/yIxryg7FH5DKAvKHL0VsOfARHPkXdgIl0AUhndWpQzUYgpFs+kJcCP7XoZR+gn0t36JE+q9f4x3p/arZFx5g== - dependencies: - "@svgr/core" "^8.0.0" - "@svgr/plugin-jsx" "^8.0.1" - "@svgr/plugin-svgo" "^8.0.1" - path-dirname "^1.0.2" - -react-native-svg@^13.14.0: - version "13.14.0" - resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-13.14.0.tgz#879930cfe10e877e51ebb77dfcc2cd65fc6b0d21" - integrity sha512-27ZnxUkHgWICimhuj6MuqBkISN53lVvgWJB7pIypjXysAyM+nqgQBPh4vXg+7MbqLBoYvR4PiBgKfwwGAqVxHg== - dependencies: - css-select "^5.1.0" - css-tree "^1.1.3" - -react-native@0.72.6: - version "0.72.6" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.72.6.tgz#9f8d090694907e2f83af22e115cc0e4a3d5fa626" - integrity sha512-RafPY2gM7mcrFySS8TL8x+TIO3q7oAlHpzEmC7Im6pmXni6n1AuufGaVh0Narbr1daxstw7yW7T9BKW5dpVc2A== - dependencies: - "@jest/create-cache-key-function" "^29.2.1" - "@react-native-community/cli" "11.3.7" - "@react-native-community/cli-platform-android" "11.3.7" - "@react-native-community/cli-platform-ios" "11.3.7" - "@react-native/assets-registry" "^0.72.0" - "@react-native/codegen" "^0.72.7" - "@react-native/gradle-plugin" "^0.72.11" - "@react-native/js-polyfills" "^0.72.1" - "@react-native/normalize-colors" "^0.72.0" - "@react-native/virtualized-lists" "^0.72.8" - abort-controller "^3.0.0" - anser "^1.4.9" - base64-js "^1.1.2" - deprecated-react-native-prop-types "4.1.0" - event-target-shim "^5.0.1" - flow-enums-runtime "^0.0.5" - invariant "^2.2.4" - jest-environment-node "^29.2.1" - jsc-android "^250231.0.0" - memoize-one "^5.0.0" - metro-runtime "0.76.8" - metro-source-map "0.76.8" - mkdirp "^0.5.1" - nullthrows "^1.1.1" - pretty-format "^26.5.2" - promise "^8.3.0" - react-devtools-core "^4.27.2" - react-refresh "^0.4.0" - react-shallow-renderer "^16.15.0" - regenerator-runtime "^0.13.2" - scheduler "0.24.0-canary-efb381bbf-20230505" - stacktrace-parser "^0.1.10" - use-sync-external-store "^1.0.0" - whatwg-fetch "^3.0.0" - ws "^6.2.2" - yargs "^17.6.2" - -react-refresh@^0.4.0: - version "0.4.3" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.4.3.tgz#966f1750c191672e76e16c2efa569150cc73ab53" - integrity sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA== - -react-shallow-renderer@^16.15.0: - version "16.15.0" - resolved "https://registry.yarnpkg.com/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz#48fb2cf9b23d23cde96708fe5273a7d3446f4457" - integrity sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA== - dependencies: - object-assign "^4.1.1" - react-is "^16.12.0 || ^17.0.0 || ^18.0.0" - -react-test-renderer@18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-18.2.0.tgz#1dd912bd908ff26da5b9fca4fd1c489b9523d37e" - integrity sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA== - dependencies: - react-is "^18.2.0" - react-shallow-renderer "^16.15.0" - scheduler "^0.23.0" - -react@18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" - integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== - dependencies: - loose-envify "^1.1.0" - -readable-stream@^3.4.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@~2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - 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" - -readline@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/readline/-/readline-1.3.0.tgz#c580d77ef2cfc8752b132498060dc9793a7ac01c" - integrity sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg== - -recast@^0.21.0: - version "0.21.5" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.21.5.tgz#e8cd22bb51bcd6130e54f87955d33a2b2e57b495" - integrity sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg== - dependencies: - ast-types "0.15.2" - esprima "~4.0.0" - source-map "~0.6.1" - tslib "^2.0.1" - -reflect.getprototypeof@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" - integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - globalthis "^1.0.3" - which-builtin-type "^1.1.3" - -regenerate-unicode-properties@^10.1.0: - version "10.1.1" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" - integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== - dependencies: - regenerate "^1.4.2" - -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.13.2: - version "0.13.11" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== - -regenerator-runtime@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" - integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== - -regenerator-transform@^0.15.2: - version "0.15.2" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" - integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== - dependencies: - "@babel/runtime" "^7.8.4" - -regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" - integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - set-function-name "^2.0.0" - -regexpu-core@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" - integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== - dependencies: - "@babel/regjsgen" "^0.8.0" - regenerate "^1.4.2" - regenerate-unicode-properties "^10.1.0" - regjsparser "^0.9.1" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.1.0" - -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== - dependencies: - jsesc "~0.5.0" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve.exports@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" - integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== - -resolve@^1.14.2, resolve@^1.20.0: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^2.0.0-next.4: - version "2.0.0-next.5" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" - integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rimraf@~2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -safe-array-concat@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" - integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" - has-symbols "^1.0.3" - isarray "^2.0.5" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex-test@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" - integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" - is-regex "^1.1.4" - -scheduler@0.24.0-canary-efb381bbf-20230505: - version "0.24.0-canary-efb381bbf-20230505" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz#5dddc60e29f91cd7f8b983d7ce4a99c2202d178f" - integrity sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA== - dependencies: - loose-envify "^1.1.0" - -scheduler@^0.23.0: - version "0.23.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" - integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== - dependencies: - loose-envify "^1.1.0" - -semver@^5.6.0: - version "5.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" - integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== - -semver@^6.3.0, semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.3.7, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -send@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" - -serialize-error@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-2.1.0.tgz#50b679d5635cdf84667bdc8e59af4e5b81d5f60a" - integrity sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw== - -serve-static@^1.13.1: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.18.0" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - -set-function-length@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" - integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== - dependencies: - define-data-property "^1.1.1" - get-intrinsic "^1.2.1" - gopd "^1.0.1" - has-property-descriptors "^1.0.0" - -set-function-name@^2.0.0, set-function-name@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" - integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== - dependencies: - define-data-property "^1.0.1" - functions-have-names "^1.2.3" - has-property-descriptors "^1.0.0" - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@^1.6.1, shell-quote@^1.7.3: - version "1.8.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" - integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - -snake-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" - integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -source-map-js@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - -source-map-support@0.5.13: - version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-support@^0.5.16, source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3: - version "0.7.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - -split-on-first@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" - integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -stack-utils@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" - integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== - dependencies: - escape-string-regexp "^2.0.0" - -stackframe@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" - integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== - -stacktrace-parser@^0.1.10: - version "0.1.10" - resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" - integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== - dependencies: - type-fest "^0.7.1" - -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - -strict-uri-encode@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" - integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== - -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -string-natural-compare@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" - integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - 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" - -string.prototype.matchall@^4.0.8: - version "4.0.10" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz#a1553eb532221d4180c51581d6072cd65d1ee100" - integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - has-symbols "^1.0.3" - internal-slot "^1.0.5" - regexp.prototype.flags "^1.5.0" - set-function-name "^2.0.0" - side-channel "^1.0.4" - -string.prototype.trim@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" - integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -string.prototype.trimend@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" - integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -string.prototype.trimstart@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" - integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^5.0.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -strnum@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" - integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== - -sudo-prompt@^9.0.0: - version "9.2.1" - resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-9.2.1.tgz#77efb84309c9ca489527a4e749f287e6bdd52afd" - integrity sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -svg-parser@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" - integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== - -svgo@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.0.2.tgz#5e99eeea42c68ee0dc46aa16da093838c262fe0a" - integrity sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ== - dependencies: - "@trysound/sax" "0.2.0" - commander "^7.2.0" - css-select "^5.1.0" - css-tree "^2.2.1" - csso "^5.0.5" - picocolors "^1.0.0" - -temp@^0.8.4: - version "0.8.4" - resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" - integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== - dependencies: - rimraf "~2.6.2" - -terser@^5.15.0: - version "5.22.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.22.0.tgz#4f18103f84c5c9437aafb7a14918273310a8a49d" - integrity sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw== - dependencies: - "@jridgewell/source-map" "^0.3.3" - acorn "^8.8.2" - commander "^2.20.0" - source-map-support "~0.5.20" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -throat@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" - integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== - -through2@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.0.1, tslib@^2.0.3: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-fest@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" - integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== - -typed-array-buffer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" - integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" - is-typed-array "^1.1.10" - -typed-array-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" - integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== - dependencies: - call-bind "^1.0.2" - for-each "^0.3.3" - has-proto "^1.0.1" - is-typed-array "^1.1.10" - -typed-array-byte-offset@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" - integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - has-proto "^1.0.1" - is-typed-array "^1.1.10" - -typed-array-length@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" - integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== - dependencies: - call-bind "^1.0.2" - for-each "^0.3.3" - is-typed-array "^1.1.9" - -typescript@4.9.5: - version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== - -uglify-es@^3.1.9: - version "3.3.9" - resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" - integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ== - dependencies: - commander "~2.13.0" - source-map "~0.6.1" - -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" - integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - dependencies: - call-bind "^1.0.2" - has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" - -undici-types@~5.25.1: - version "5.25.3" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.25.3.tgz#e044115914c85f0bcbb229f346ab739f064998c3" - integrity sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA== - -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== - -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" - integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== - -unicode-property-aliases-ecmascript@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" - integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -update-browserslist-db@^1.0.13: - version "1.0.13" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" - integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -use-latest-callback@^0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/use-latest-callback/-/use-latest-callback-0.1.7.tgz#f189fa4e58ee18c7a2d9de53f92210e118d1b14f" - integrity sha512-Hlrl0lskgZZpo2vIpZ4rA7qA/rAGn2PcDvDH1M47AogqMPB0qlGEdsa66AVkIUiEEDpfxA9/N6hY6MqtaNoqWA== - -use-sync-external-store@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" - integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -v8-to-istanbul@^9.0.1: - version "9.1.3" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz#ea456604101cd18005ac2cae3cdd1aa058a6306b" - integrity sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg== - dependencies: - "@jridgewell/trace-mapping" "^0.3.12" - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^2.0.0" - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -vlq@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/vlq/-/vlq-1.0.1.tgz#c003f6e7c0b4c1edd623fd6ee50bbc0d6a1de468" - integrity sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w== - -walker@^1.0.7, walker@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" - -warn-once@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/warn-once/-/warn-once-0.1.1.tgz#952088f4fb56896e73fd4e6a3767272a3fccce43" - integrity sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q== - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -whatwg-fetch@^3.0.0: - version "3.6.19" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz#caefd92ae630b91c07345537e67f8354db470973" - integrity sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-builtin-type@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" - integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== - dependencies: - function.prototype.name "^1.1.5" - has-tostringtag "^1.0.0" - is-async-function "^2.0.0" - is-date-object "^1.0.5" - is-finalizationregistry "^1.0.2" - is-generator-function "^1.0.10" - is-regex "^1.1.4" - is-weakref "^1.0.2" - isarray "^2.0.5" - which-boxed-primitive "^1.0.2" - which-collection "^1.0.1" - which-typed-array "^1.1.9" - -which-collection@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" - integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== - dependencies: - is-map "^2.0.1" - is-set "^2.0.1" - is-weakmap "^2.0.1" - is-weakset "^2.0.1" - -which-module@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" - integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== - -which-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.9: - version "1.1.13" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" - integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.4" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@^2.3.0: - version "2.4.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -write-file-atomic@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" - integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^3.0.7" - -ws@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" - integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== - dependencies: - async-limiter "~1.0.0" - -ws@^7, ws@^7.5.1: - version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== - -xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^2.2.1: - version "2.3.3" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.3.tgz#01f6d18ef036446340007db8e016810e5d64aad9" - integrity sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ== - -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^15.1.0, yargs@^15.3.1: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - 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" - -yargs@^17.3.1, yargs@^17.6.2: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - 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" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From d1d1e7ecd51b78f7fb2f8901e8da9239da917fcb Mon Sep 17 00:00:00 2001 From: Jona Date: Wed, 25 Oct 2023 04:00:23 -0300 Subject: [PATCH 004/159] new initial project --- .eslintrc.json | 3 + .gitignore | 35 + README.md | 36 + next.config.js | 7 + package.json | 31 + pnpm-lock.yaml | 2410 +++++++++++++++++++++ prettier.config.js | 7 + public/next.svg | 1 + public/vercel.svg | 1 + src/app/favicon.ico | Bin 0 -> 25931 bytes src/app/layout.tsx | 43 + src/app/page.tsx | 57 + src/app/payment/layout.tsx | 13 + src/app/payment/page.tsx | 168 ++ src/components/Icons/Bitcoin.tsx | 29 + src/components/Layout/Container/index.tsx | 16 + src/components/Layout/Container/style.tsx | 19 + src/components/Loader/Loader.module.css | 142 ++ src/components/Loader/Loader.tsx | 18 + src/components/TokenList/index.tsx | 36 + src/components/TokenList/style.tsx | 14 + src/components/UI/Alert/index.tsx | 47 + src/components/UI/Alert/style.tsx | 83 + src/components/UI/Button/ButtonGroup.tsx | 13 + src/components/UI/Button/index.tsx | 80 + src/components/UI/Button/style.tsx | 65 + src/components/UI/Confetti/index.js | 40 + src/components/UI/Confetti/style.tsx | 34 + src/components/UI/Divider/index.tsx | 14 + src/components/UI/Divider/style.tsx | 15 + src/components/UI/Flex/index.tsx | 35 + src/components/UI/Flex/style.tsx | 23 + src/components/UI/Heading/index.tsx | 24 + src/components/UI/Heading/style.tsx | 60 + src/components/UI/Icon/index.tsx | 21 + src/components/UI/Icon/style.tsx | 26 + src/components/UI/Keyboard/index.tsx | 75 + src/components/UI/LinkButton/index.tsx | 67 + src/components/UI/LinkButton/style.tsx | 47 + src/components/UI/QRCode/index.tsx | 24 + src/components/UI/QRCode/style.tsx | 22 + src/components/UI/Sheet/index.tsx | 63 + src/components/UI/Sheet/style.tsx | 53 + src/components/UI/Text/index.tsx | 35 + src/components/UI/Text/style.tsx | 18 + src/components/UI/index.tsx | 13 + src/context/LaWalletContext.tsx | 22 + src/context/TransferContext.tsx | 18 + src/hooks/useConfiguration.ts | 50 + src/hooks/useCurrencyConverter.ts | 95 + src/hooks/useNumpad.ts | 121 ++ src/lib/formatter.ts | 94 + src/lib/registry.js | 25 + src/styles/GlobalStyles.ts | 44 + src/styles/fonts.ts | 30 + src/styles/fonts/IAAB3.woff2 | Bin 0 -> 18140 bytes src/styles/fonts/SF-Bold.woff2 | Bin 0 -> 22604 bytes src/styles/fonts/SF-Regular.woff2 | Bin 0 -> 20844 bytes src/styles/theme.ts | 38 + src/types/config.ts | 29 + src/types/styled.d.ts | 8 + tsconfig.json | 28 + 62 files changed, 4685 insertions(+) create mode 100644 .eslintrc.json create mode 100644 .gitignore create mode 100644 README.md create mode 100644 next.config.js create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 prettier.config.js create mode 100644 public/next.svg create mode 100644 public/vercel.svg create mode 100644 src/app/favicon.ico create mode 100644 src/app/layout.tsx create mode 100644 src/app/page.tsx create mode 100644 src/app/payment/layout.tsx create mode 100644 src/app/payment/page.tsx create mode 100644 src/components/Icons/Bitcoin.tsx create mode 100644 src/components/Layout/Container/index.tsx create mode 100644 src/components/Layout/Container/style.tsx create mode 100644 src/components/Loader/Loader.module.css create mode 100644 src/components/Loader/Loader.tsx create mode 100644 src/components/TokenList/index.tsx create mode 100644 src/components/TokenList/style.tsx create mode 100644 src/components/UI/Alert/index.tsx create mode 100644 src/components/UI/Alert/style.tsx create mode 100644 src/components/UI/Button/ButtonGroup.tsx create mode 100644 src/components/UI/Button/index.tsx create mode 100644 src/components/UI/Button/style.tsx create mode 100644 src/components/UI/Confetti/index.js create mode 100644 src/components/UI/Confetti/style.tsx create mode 100644 src/components/UI/Divider/index.tsx create mode 100644 src/components/UI/Divider/style.tsx create mode 100644 src/components/UI/Flex/index.tsx create mode 100644 src/components/UI/Flex/style.tsx create mode 100644 src/components/UI/Heading/index.tsx create mode 100644 src/components/UI/Heading/style.tsx create mode 100644 src/components/UI/Icon/index.tsx create mode 100644 src/components/UI/Icon/style.tsx create mode 100644 src/components/UI/Keyboard/index.tsx create mode 100644 src/components/UI/LinkButton/index.tsx create mode 100644 src/components/UI/LinkButton/style.tsx create mode 100644 src/components/UI/QRCode/index.tsx create mode 100644 src/components/UI/QRCode/style.tsx create mode 100644 src/components/UI/Sheet/index.tsx create mode 100644 src/components/UI/Sheet/style.tsx create mode 100644 src/components/UI/Text/index.tsx create mode 100644 src/components/UI/Text/style.tsx create mode 100644 src/components/UI/index.tsx create mode 100644 src/context/LaWalletContext.tsx create mode 100644 src/context/TransferContext.tsx create mode 100644 src/hooks/useConfiguration.ts create mode 100644 src/hooks/useCurrencyConverter.ts create mode 100644 src/hooks/useNumpad.ts create mode 100644 src/lib/formatter.ts create mode 100644 src/lib/registry.js create mode 100644 src/styles/GlobalStyles.ts create mode 100644 src/styles/fonts.ts create mode 100644 src/styles/fonts/IAAB3.woff2 create mode 100644 src/styles/fonts/SF-Bold.woff2 create mode 100644 src/styles/fonts/SF-Regular.woff2 create mode 100644 src/styles/theme.ts create mode 100644 src/types/config.ts create mode 100644 src/types/styled.d.ts create mode 100644 tsconfig.json diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..bffb357 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8f322f0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,35 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/README.md b/README.md new file mode 100644 index 0000000..c403366 --- /dev/null +++ b/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. diff --git a/next.config.js b/next.config.js new file mode 100644 index 0000000..2e9e6ec --- /dev/null +++ b/next.config.js @@ -0,0 +1,7 @@ +const path = require('path'); + +module.exports = { + sassOptions: { + includePaths: [path.join(__dirname, 'styles')], + }, +}; diff --git a/package.json b/package.json new file mode 100644 index 0000000..40e1f91 --- /dev/null +++ b/package.json @@ -0,0 +1,31 @@ +{ + "name": "react-pos", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@bitcoin-design/bitcoin-icons-react": "^0.1.10", + "confetti-js": "^0.0.18", + "date-fns": "^2.30.0", + "next": "13.5.6", + "prettier": "^3.0.3", + "react": "^18", + "react-dom": "^18", + "react-qr-code": "^2.0.12", + "sass": "^1.69.4", + "styled-components": "^6.1.0" + }, + "devDependencies": { + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "eslint": "^8", + "eslint-config-next": "13.5.6", + "typescript": "^5" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..d8be01e --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,2410 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@bitcoin-design/bitcoin-icons-react': + specifier: ^0.1.10 + version: 0.1.10(react@18.0.0) + confetti-js: + specifier: ^0.0.18 + version: 0.0.18 + date-fns: + specifier: ^2.30.0 + version: 2.30.0 + next: + specifier: 13.5.6 + version: 13.5.6(react-dom@18.0.0)(react@18.0.0)(sass@1.69.4) + prettier: + specifier: ^3.0.3 + version: 3.0.3 + react: + specifier: ^18 + version: 18.0.0 + react-dom: + specifier: ^18 + version: 18.0.0(react@18.0.0) + react-qr-code: + specifier: ^2.0.12 + version: 2.0.12(react@18.0.0) + sass: + specifier: ^1.69.4 + version: 1.69.4 + styled-components: + specifier: ^6.1.0 + version: 6.1.0(react-dom@18.0.0)(react@18.0.0) + +devDependencies: + '@types/node': + specifier: ^20 + version: 20.0.0 + '@types/react': + specifier: ^18 + version: 18.0.0 + '@types/react-dom': + specifier: ^18 + version: 18.0.0 + eslint: + specifier: ^8 + version: 8.0.0 + eslint-config-next: + specifier: 13.5.6 + version: 13.5.6(eslint@8.0.0)(typescript@5.0.2) + typescript: + specifier: ^5 + version: 5.0.2 + +packages: + + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + dev: true + + /@babel/runtime@7.23.2: + resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.0 + + /@bitcoin-design/bitcoin-icons-react@0.1.10(react@18.0.0): + resolution: {integrity: sha512-f7GSutKHa4EK4LWI/phnGCJsN8fzFbVAVQ4F1MYxiza34LVmXmbgHUmdP/BR8ZeQSIbZLt19inpJZDBtQvYe4Q==} + peerDependencies: + react: '>= 16' + dependencies: + react: 18.0.0 + dev: false + + /@emotion/is-prop-valid@1.2.1: + resolution: {integrity: sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==} + dependencies: + '@emotion/memoize': 0.8.1 + dev: false + + /@emotion/memoize@0.8.1: + resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} + dev: false + + /@emotion/unitless@0.8.1: + resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} + dev: false + + /@eslint/eslintrc@1.4.1: + resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.23.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/config-array@0.6.0: + resolution: {integrity: sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/object-schema@1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + dev: true + + /@next/env@13.5.6: + resolution: {integrity: sha512-Yac/bV5sBGkkEXmAX5FWPS9Mmo2rthrOPRQQNfycJPkjUAUclomCPH7QFVCDQ4Mp2k2K1SSM6m0zrxYrOwtFQw==} + dev: false + + /@next/eslint-plugin-next@13.5.6: + resolution: {integrity: sha512-ng7pU/DDsxPgT6ZPvuprxrkeew3XaRf4LAT4FabaEO/hAbvVx4P7wqnqdbTdDn1kgTvsI4tpIgT4Awn/m0bGbg==} + dependencies: + glob: 7.1.7 + dev: true + + /@next/swc-darwin-arm64@13.5.6: + resolution: {integrity: sha512-5nvXMzKtZfvcu4BhtV0KH1oGv4XEW+B+jOfmBdpFI3C7FrB/MfujRpWYSBBO64+qbW8pkZiSyQv9eiwnn5VIQA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-darwin-x64@13.5.6: + resolution: {integrity: sha512-6cgBfxg98oOCSr4BckWjLLgiVwlL3vlLj8hXg2b+nDgm4bC/qVXXLfpLB9FHdoDu4057hzywbxKvmYGmi7yUzA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-gnu@13.5.6: + resolution: {integrity: sha512-txagBbj1e1w47YQjcKgSU4rRVQ7uF29YpnlHV5xuVUsgCUf2FmyfJ3CPjZUvpIeXCJAoMCFAoGnbtX86BK7+sg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-musl@13.5.6: + resolution: {integrity: sha512-cGd+H8amifT86ZldVJtAKDxUqeFyLWW+v2NlBULnLAdWsiuuN8TuhVBt8ZNpCqcAuoruoSWynvMWixTFcroq+Q==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-gnu@13.5.6: + resolution: {integrity: sha512-Mc2b4xiIWKXIhBy2NBTwOxGD3nHLmq4keFk+d4/WL5fMsB8XdJRdtUlL87SqVCTSaf1BRuQQf1HvXZcy+rq3Nw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-musl@13.5.6: + resolution: {integrity: sha512-CFHvP9Qz98NruJiUnCe61O6GveKKHpJLloXbDSWRhqhkJdZD2zU5hG+gtVJR//tyW897izuHpM6Gtf6+sNgJPQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-arm64-msvc@13.5.6: + resolution: {integrity: sha512-aFv1ejfkbS7PUa1qVPwzDHjQWQtknzAZWGTKYIAaS4NMtBlk3VyA6AYn593pqNanlicewqyl2jUhQAaFV/qXsg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-ia32-msvc@13.5.6: + resolution: {integrity: sha512-XqqpHgEIlBHvzwG8sp/JXMFkLAfGLqkbVsyN+/Ih1mR8INb6YCc2x/Mbwi6hsAgUnqQztz8cvEbHJUbSl7RHDg==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-x64-msvc@13.5.6: + resolution: {integrity: sha512-Cqfe1YmOS7k+5mGu92nl5ULkzpKuxJrP3+4AEuPmrpFZ3BHxTY3TnHmU1On3bFmFFs6FbTcdF58CCUProGpIGQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + dev: true + + /@rushstack/eslint-patch@1.5.1: + resolution: {integrity: sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==} + dev: true + + /@swc/helpers@0.5.2: + resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} + dependencies: + tslib: 2.6.2 + dev: false + + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true + + /@types/node@20.0.0: + resolution: {integrity: sha512-cD2uPTDnQQCVpmRefonO98/PPijuOnnEy5oytWJFPY1N9aJCz2wJ5kSGWO+zJoed2cY2JxQh6yBuUq4vIn61hw==} + dev: true + + /@types/prop-types@15.7.9: + resolution: {integrity: sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==} + dev: true + + /@types/react-dom@18.0.0: + resolution: {integrity: sha512-49897Y0UiCGmxZqpC8Blrf6meL8QUla6eb+BBhn69dTXlmuOlzkfr7HHY/O8J25e1lTUMs+YYxSlVDAaGHCOLg==} + dependencies: + '@types/react': 18.0.0 + dev: true + + /@types/react@18.0.0: + resolution: {integrity: sha512-7+K7zEQYu7NzOwQGLR91KwWXXDzmTFODRVizJyIALf6RfLv2GDpqpknX64pvRVILXCpXi7O/pua8NGk44dLvJw==} + dependencies: + '@types/prop-types': 15.7.9 + '@types/scheduler': 0.16.5 + csstype: 3.1.2 + dev: true + + /@types/scheduler@0.16.5: + resolution: {integrity: sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw==} + dev: true + + /@types/stylis@4.2.2: + resolution: {integrity: sha512-Rm17MsTpQQP5Jq4BF7CdrxJsDufoiL/q5IbJZYZmOZAJALyijgF7BzLgobXUqraNcQdqFYLYGeglDp6QzaxPpg==} + dev: false + + /@typescript-eslint/parser@6.9.0(eslint@8.0.0)(typescript@5.0.2): + resolution: {integrity: sha512-GZmjMh4AJ/5gaH4XF2eXA8tMnHWP+Pm1mjQR2QN4Iz+j/zO04b9TOvJYOX2sCNIQHtRStKTxRY1FX7LhpJT4Gw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 6.9.0 + '@typescript-eslint/types': 6.9.0 + '@typescript-eslint/typescript-estree': 6.9.0(typescript@5.0.2) + '@typescript-eslint/visitor-keys': 6.9.0 + debug: 4.3.4 + eslint: 8.0.0 + typescript: 5.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@6.9.0: + resolution: {integrity: sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.9.0 + '@typescript-eslint/visitor-keys': 6.9.0 + dev: true + + /@typescript-eslint/types@6.9.0: + resolution: {integrity: sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + + /@typescript-eslint/typescript-estree@6.9.0(typescript@5.0.2): + resolution: {integrity: sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.9.0 + '@typescript-eslint/visitor-keys': 6.9.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.0.2) + typescript: 5.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/visitor-keys@6.9.0: + resolution: {integrity: sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.9.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /acorn-jsx@5.3.2(acorn@8.10.0): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.10.0 + dev: true + + /acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: false + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + dependencies: + dequal: 2.0.3 + dev: true + + /array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + dependencies: + call-bind: 1.0.5 + is-array-buffer: 3.0.2 + dev: true + + /array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + is-string: 1.0.7 + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /array.prototype.findlastindex@1.2.3: + resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + get-intrinsic: 1.2.2 + dev: true + + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.tosorted@1.1.2: + resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + get-intrinsic: 1.2.2 + dev: true + + /arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 + dev: true + + /ast-types-flow@0.0.7: + resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} + dev: true + + /asynciterator.prototype@1.0.0: + resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} + dependencies: + has-symbols: 1.0.3 + dev: true + + /available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + dev: true + + /axe-core@4.8.2: + resolution: {integrity: sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g==} + engines: {node: '>=4'} + dev: true + + /axobject-query@3.2.1: + resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + dependencies: + dequal: 2.0.3 + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: false + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + + /busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: 1.1.0 + dev: false + + /call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + dependencies: + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + set-function-length: 1.1.1 + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camelize@1.0.1: + resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} + dev: false + + /caniuse-lite@1.0.30001553: + resolution: {integrity: sha512-N0ttd6TrFfuqKNi+pMgWJTb9qrdJu4JSpgPFLe/lrD19ugC6fZgF0pUewRowDwzdDnb9V41mFcdlYgl/PyKf4A==} + dev: false + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: false + + /client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + dev: false + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /confetti-js@0.0.18: + resolution: {integrity: sha512-0B7pYmZGBZuBkN32ydjWRpJLfRUT9KZYkQKkC4SGrAsUq0XE2DLY5foCWBXMXXVg7sFKs3qIb+qsDx1eFTeSvA==} + dev: false + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /css-color-keywords@1.0.0: + resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} + engines: {node: '>=4'} + dev: false + + /css-to-react-native@3.2.0: + resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + dependencies: + camelize: 1.0.1 + css-color-keywords: 1.0.0 + postcss-value-parser: 4.2.0 + dev: false + + /csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + + /damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + dev: true + + /date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} + dependencies: + '@babel/runtime': 7.23.2 + dev: false + + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: true + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: true + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + has-property-descriptors: 1.0.1 + object-keys: 1.1.1 + dev: true + + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + dev: true + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + + /enhanced-resolve@5.15.0: + resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: true + + /enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + dev: true + + /es-abstract@1.22.3: + resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + arraybuffer.prototype.slice: 1.0.2 + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + es-set-tostringtag: 2.0.2 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.2 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + internal-slot: 1.0.6 + is-array-buffer: 3.0.2 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.12 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.5.1 + safe-array-concat: 1.0.1 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.0 + typed-array-byte-length: 1.0.0 + typed-array-byte-offset: 1.0.0 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.13 + dev: true + + /es-iterator-helpers@1.0.15: + resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} + dependencies: + asynciterator.prototype: 1.0.0 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-set-tostringtag: 2.0.2 + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + globalthis: 1.0.3 + has-property-descriptors: 1.0.1 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.6 + iterator.prototype: 1.1.2 + safe-array-concat: 1.0.1 + dev: true + + /es-set-tostringtag@2.0.2: + resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + has-tostringtag: 1.0.0 + hasown: 2.0.0 + dev: true + + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + dependencies: + hasown: 2.0.0 + dev: true + + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /eslint-config-next@13.5.6(eslint@8.0.0)(typescript@5.0.2): + resolution: {integrity: sha512-o8pQsUHTo9aHqJ2YiZDym5gQAMRf7O2HndHo/JZeY7TDD+W4hk6Ma8Vw54RHiBeb7OWWO5dPirQB+Is/aVQ7Kg==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@next/eslint-plugin-next': 13.5.6 + '@rushstack/eslint-patch': 1.5.1 + '@typescript-eslint/parser': 6.9.0(eslint@8.0.0)(typescript@5.0.2) + eslint: 8.0.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.9.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0)(eslint@8.0.0) + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.9.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.0.0) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.0.0) + eslint-plugin-react: 7.33.2(eslint@8.0.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.0.0) + typescript: 5.0.2 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + dependencies: + debug: 3.2.7 + is-core-module: 2.13.1 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.9.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0)(eslint@8.0.0): + resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + dependencies: + debug: 4.3.4 + enhanced-resolve: 5.15.0 + eslint: 8.0.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.9.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.0.0) + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.9.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.0.0) + fast-glob: 3.3.1 + get-tsconfig: 4.7.2 + is-core-module: 2.13.1 + is-glob: 4.0.3 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.9.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.0.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 6.9.0(eslint@8.0.0)(typescript@5.0.2) + debug: 3.2.7 + eslint: 8.0.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.9.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0)(eslint@8.0.0) + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.9.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.0.0): + resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 6.9.0(eslint@8.0.0)(typescript@5.0.2) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.0.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.9.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.0.0) + hasown: 2.0.0 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 + semver: 6.3.1 + tsconfig-paths: 3.14.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.0.0): + resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + '@babel/runtime': 7.23.2 + aria-query: 5.3.0 + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + ast-types-flow: 0.0.7 + axe-core: 4.8.2 + axobject-query: 3.2.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 8.0.0 + has: 1.0.4 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.5 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + semver: 6.3.1 + dev: true + + /eslint-plugin-react-hooks@4.6.0(eslint@8.0.0): + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.0.0 + dev: true + + /eslint-plugin-react@7.33.2(eslint@8.0.0): + resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + array.prototype.tosorted: 1.1.2 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.15 + eslint: 8.0.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + object.hasown: 1.1.3 + object.values: 1.1.7 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.10 + dev: true + + /eslint-scope@6.0.0: + resolution: {integrity: sha512-uRDL9MWmQCkaFus8RF5K9/L/2fn+80yoW3jkD53l4shjCh26fCtvJGasxjUqP5OT87SYTxCVA3BwTUzuELx9kA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-utils@3.0.0(eslint@8.0.0): + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 8.0.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + dev: true + + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.0.0: + resolution: {integrity: sha512-03spzPzMAO4pElm44m60Nj08nYonPGQXmw6Ceai/S4QK82IgwWO1EXx1s9namKzVlbVu3Jf81hb+N+8+v21/HQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint/eslintrc': 1.4.1 + '@humanwhocodes/config-array': 0.6.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + enquirer: 2.4.1 + escape-string-regexp: 4.0.0 + eslint-scope: 6.0.0 + eslint-utils: 3.0.0(eslint@8.0.0) + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + functional-red-black-tree: 1.0.1 + glob-parent: 6.0.2 + globals: 13.23.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + progress: 2.0.3 + regexpp: 3.2.0 + semver: 7.5.4 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + v8-compile-cache: 2.4.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.10.0 + acorn-jsx: 5.3.2(acorn@8.10.0) + eslint-visitor-keys: 3.4.3 + dev: true + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + dependencies: + reusify: 1.0.4 + dev: true + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.1.1 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + + /flat-cache@3.1.1: + resolution: {integrity: sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==} + engines: {node: '>=12.0.0'} + dependencies: + flatted: 3.2.9 + keyv: 4.5.4 + rimraf: 3.0.2 + dev: true + + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + dev: true + + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + functions-have-names: 1.2.3 + dev: true + + /functional-red-black-tree@1.0.1: + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + dev: true + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + + /get-intrinsic@1.2.2: + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + dependencies: + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + dev: true + + /get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + dev: true + + /get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: false + + /glob@7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /globals@13.23.0: + resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.1 + dev: true + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.1 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.2 + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + dependencies: + get-intrinsic: 1.2.2 + dev: true + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: true + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: true + + /has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /has@1.0.4: + resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} + engines: {node: '>= 0.4.0'} + dev: true + + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + + /ignore@4.0.6: + resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} + engines: {node: '>= 4'} + dev: true + + /ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + dev: true + + /immutable@4.3.4: + resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} + dev: false + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /internal-slot@1.0.6: + resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + hasown: 2.0.0 + side-channel: 1.0.4 + dev: true + + /is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-typed-array: 1.1.12 + dev: true + + /is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: false + + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + dev: true + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true + + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.0 + dev: true + + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + /is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + dependencies: + call-bind: 1.0.5 + dev: true + + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + + /is-map@2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + dev: true + + /is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: true + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + dev: true + + /is-set@2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + dev: true + + /is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.5 + dev: true + + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.13 + dev: true + + /is-weakmap@2.0.1: + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + dev: true + + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.5 + dev: true + + /is-weakset@2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + dev: true + + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.4 + set-function-name: 2.0.1 + dev: true + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + dependencies: + array-includes: 3.1.7 + array.prototype.flat: 1.3.2 + object.assign: 4.1.4 + object.values: 1.1.7 + dev: true + + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: true + + /language-subtag-registry@0.3.22: + resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + dev: true + + /language-tags@1.0.5: + resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} + dependencies: + language-subtag-registry: 0.3.22 + dev: true + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + + /nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: false + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /next@13.5.6(react-dom@18.0.0)(react@18.0.0)(sass@1.69.4): + resolution: {integrity: sha512-Y2wTcTbO4WwEsVb4A8VSnOsG1I9ok+h74q0ZdxkwM3EODqrs4pasq7O0iUxbcS9VtWMicG7f3+HAj0r1+NtKSw==} + engines: {node: '>=16.14.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + sass: + optional: true + dependencies: + '@next/env': 13.5.6 + '@swc/helpers': 0.5.2 + busboy: 1.6.0 + caniuse-lite: 1.0.30001553 + postcss: 8.4.31 + react: 18.0.0 + react-dom: 18.0.0(react@18.0.0) + sass: 1.69.4 + styled-jsx: 5.1.1(react@18.0.0) + watchpack: 2.4.0 + optionalDependencies: + '@next/swc-darwin-arm64': 13.5.6 + '@next/swc-darwin-x64': 13.5.6 + '@next/swc-linux-arm64-gnu': 13.5.6 + '@next/swc-linux-arm64-musl': 13.5.6 + '@next/swc-linux-x64-gnu': 13.5.6 + '@next/swc-linux-x64-musl': 13.5.6 + '@next/swc-win32-arm64-msvc': 13.5.6 + '@next/swc-win32-ia32-msvc': 13.5.6 + '@next/swc-win32-x64-msvc': 13.5.6 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + dev: false + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: false + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + dev: true + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object.assign@4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + + /object.entries@1.1.7: + resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /object.groupby@1.0.1: + resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + dev: true + + /object.hasown@1.1.3: + resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} + dependencies: + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /object.values@1.1.7: + resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: false + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: false + + /postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: false + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier@3.0.3: + resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} + engines: {node: '>=14'} + hasBin: true + dev: false + + /progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: true + + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + /punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + dev: true + + /qr.js@0.0.0: + resolution: {integrity: sha512-c4iYnWb+k2E+vYpRimHqSu575b1/wKl4XFeJGpFmrJQz5I88v9aY2czh7s0w36srfCM1sXgC/xpoJz5dJfq+OQ==} + dev: false + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /react-dom@18.0.0(react@18.0.0): + resolution: {integrity: sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw==} + peerDependencies: + react: ^18.0.0 + dependencies: + loose-envify: 1.4.0 + react: 18.0.0 + scheduler: 0.21.0 + dev: false + + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + /react-qr-code@2.0.12(react@18.0.0): + resolution: {integrity: sha512-k+pzP5CKLEGBRwZsDPp98/CAJeXlsYRHM2iZn1Sd5Th/HnKhIZCSg27PXO58zk8z02RaEryg+60xa4vyywMJwg==} + peerDependencies: + react: ^16.x || ^17.x || ^18.x + react-native-svg: '*' + peerDependenciesMeta: + react-native-svg: + optional: true + dependencies: + prop-types: 15.8.1 + qr.js: 0.0.0 + react: 18.0.0 + dev: false + + /react@18.0.0: + resolution: {integrity: sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + dev: false + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: false + + /reflect.getprototypeof@1.0.4: + resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + globalthis: 1.0.3 + which-builtin-type: 1.1.3 + dev: true + + /regenerator-runtime@0.14.0: + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + + /regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + set-function-name: 2.0.1 + dev: true + + /regexpp@3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + dev: true + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /safe-array-concat@1.0.1: + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + + /safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-regex: 1.1.4 + dev: true + + /sass@1.69.4: + resolution: {integrity: sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + chokidar: 3.5.3 + immutable: 4.3.4 + source-map-js: 1.0.2 + dev: false + + /scheduler@0.21.0: + resolution: {integrity: sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==} + dependencies: + loose-envify: 1.4.0 + dev: false + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /set-function-length@1.1.1: + resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: true + + /set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.1 + dev: true + + /shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + dev: false + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + object-inspect: 1.13.1 + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + dev: false + + /streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + dev: false + + /string.prototype.matchall@4.0.10: + resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + internal-slot: 1.0.6 + regexp.prototype.flags: 1.5.1 + set-function-name: 2.0.1 + side-channel: 1.0.4 + dev: true + + /string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /styled-components@6.1.0(react-dom@18.0.0)(react@18.0.0): + resolution: {integrity: sha512-VWNfYYBuXzuLS/QYEeoPgMErP26WL+dX9//rEh80B2mmlS1yRxRxuL5eax4m6ybYEUoHWlTy2XOU32767mlMkg==} + engines: {node: '>= 16'} + peerDependencies: + react: '>= 16.8.0' + react-dom: '>= 16.8.0' + dependencies: + '@emotion/is-prop-valid': 1.2.1 + '@emotion/unitless': 0.8.1 + '@types/stylis': 4.2.2 + css-to-react-native: 3.2.0 + csstype: 3.1.2 + postcss: 8.4.31 + react: 18.0.0 + react-dom: 18.0.0(react@18.0.0) + shallowequal: 1.1.0 + stylis: 4.3.0 + tslib: 2.6.2 + dev: false + + /styled-jsx@5.1.1(react@18.0.0): + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + dependencies: + client-only: 0.0.1 + react: 18.0.0 + dev: false + + /stylis@4.3.0: + resolution: {integrity: sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ==} + dev: false + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + + /ts-api-utils@1.0.3(typescript@5.0.2): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.0.2 + dev: true + + /tsconfig-paths@3.14.2: + resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: false + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.5 + for-each: 0.3.3 + is-typed-array: 1.1.12 + dev: true + + /typescript@5.0.2: + resolution: {integrity: sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==} + engines: {node: '>=12.20'} + hasBin: true + dev: true + + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.5 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.0 + dev: true + + /v8-compile-cache@2.4.0: + resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} + dev: true + + /watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + dev: false + + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.0 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.13 + dev: true + + /which-collection@1.0.1: + resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + dependencies: + is-map: 2.0.2 + is-set: 2.0.2 + is-weakmap: 2.0.1 + is-weakset: 2.0.2 + dev: true + + /which-typed-array@1.1.13: + resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true diff --git a/prettier.config.js b/prettier.config.js new file mode 100644 index 0000000..64603cb --- /dev/null +++ b/prettier.config.js @@ -0,0 +1,7 @@ +module.exports = { + semi: false, + singleQuote: true, + arrowParens: 'avoid', + trailingComma: 'none', + endOfLine: 'auto', +}; diff --git a/public/next.svg b/public/next.svg new file mode 100644 index 0000000..5174b28 --- /dev/null +++ b/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vercel.svg b/public/vercel.svg new file mode 100644 index 0000000..d2f8422 --- /dev/null +++ b/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/app/favicon.ico b/src/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 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 LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/src/app/layout.tsx b/src/app/layout.tsx new file mode 100644 index 0000000..fb32f60 --- /dev/null +++ b/src/app/layout.tsx @@ -0,0 +1,43 @@ +'use client' + +import { ReactNode } from 'react' +import Script from 'next/script' +import { ThemeProvider } from 'styled-components' + +import { LaWalletProvider } from '@/context/LaWalletContext' + +import StyledComponentsRegistry from '@/lib/registry' + +import theme from '@/styles/theme' +import { fontSecondary } from '@/styles/fonts' +import GlobalStyles from '@/styles/GlobalStyles' + +interface ProviderProps { + children: ReactNode +} + +// Metadata +const APP_NAME = 'LaPOS' + +const Providers = (props: ProviderProps) => { + const { children } = props + + return ( + + + {APP_NAME} + + + + + + + {children} + + + + + ) +} + +export default Providers diff --git a/src/app/page.tsx b/src/app/page.tsx new file mode 100644 index 0000000..82a681c --- /dev/null +++ b/src/app/page.tsx @@ -0,0 +1,57 @@ +'use client' + +import { useContext } from 'react' +import { useRouter } from 'next/navigation' + +import { LaWalletContext } from '@/context/LaWalletContext' +import { formatToPreference } from '@/lib/formatter' + +import { + Flex, + Heading, + Text, + Divider, + LinkButton, + Button, + Keyboard +} from '@/components/UI' +import Container from '@/components/Layout/Container' +import TokenList from '@/components/TokenList' +import { useNumpad } from '@/hooks/useNumpad' + +export default function Home() { + const router = useRouter() + + const { userConfig } = useContext(LaWalletContext) + const numpadData = useNumpad(userConfig.props.currency) + + const handleClick = () => { + // POC + router.push('/payment') + } + + return ( + + + + + {userConfig.props.currency !== 'SAT' && $} + + {formatToPreference( + userConfig.props.currency, + numpadData.intAmount[numpadData.usedCurrency] + )} + + + + + + + + + + + + + ) +} diff --git a/src/app/payment/layout.tsx b/src/app/payment/layout.tsx new file mode 100644 index 0000000..fb321b6 --- /dev/null +++ b/src/app/payment/layout.tsx @@ -0,0 +1,13 @@ +import type { Metadata } from 'next' + +export const metadata: Metadata = { + title: 'Pago - LaWallet' +} + +export default function RootLayout({ + children +}: { + children: React.ReactNode +}) { + return <>{children} +} diff --git a/src/app/payment/page.tsx b/src/app/payment/page.tsx new file mode 100644 index 0000000..512addb --- /dev/null +++ b/src/app/payment/page.tsx @@ -0,0 +1,168 @@ +'use client' + +import { useContext, useState } from 'react' +import { useRouter } from 'next/navigation' +import { + CheckIcon, + CreditCardIcon +} from '@bitcoin-design/bitcoin-icons-react/filled' + +import { LaWalletContext } from '@/context/LaWalletContext' +import { formatToPreference } from '@/lib/formatter' + +import { + Flex, + Heading, + Text, + Divider, + LinkButton, + Button, + Keyboard, + QRCode, + Confetti, + Icon, + Sheet +} from '@/components/UI' +import Container from '@/components/Layout/Container' +import TokenList from '@/components/TokenList' +import { Loader } from '@/components/Loader/Loader' +import { useNumpad } from '@/hooks/useNumpad' + +import theme from '@/styles/theme' + +export default function Home() { + const router = useRouter() + + const { userConfig } = useContext(LaWalletContext) + const numpadData = useNumpad(userConfig.props.currency) + + const [finished, setFinished] = useState(false) + const [showSheet, setShowSeet] = useState(false) + + const handlePrint = () => {} + + const handleCloseSheet = () => { + setShowSeet(false) + } + + return ( + <> + {finished ? ( + <> + + + + + + + + + Pago acreditado + + + {userConfig.props.currency !== 'SAT' && $} + + {formatToPreference( + userConfig.props.currency, + numpadData.intAmount[numpadData.usedCurrency] + )} + + + + + + + + + + + + + + + ) : ( + <> + + + + + + Esperando pago + + + {userConfig.props.currency !== 'SAT' && $} + + {formatToPreference( + userConfig.props.currency, + numpadData.intAmount[numpadData.usedCurrency] + )} + + + {userConfig.props.currency} + + + + + + + + + + + + + + + + + + + + + + + )} + + + + + + + + + + Sostenga su dispositivo cerca de la etiqueta NFC. + + + + + + ) +} diff --git a/src/components/Icons/Bitcoin.tsx b/src/components/Icons/Bitcoin.tsx new file mode 100644 index 0000000..19e4a55 --- /dev/null +++ b/src/components/Icons/Bitcoin.tsx @@ -0,0 +1,29 @@ +export default function Component() { + return ( + + + + + + + + + + + + ) +} diff --git a/src/components/Layout/Container/index.tsx b/src/components/Layout/Container/index.tsx new file mode 100644 index 0000000..9a59dfc --- /dev/null +++ b/src/components/Layout/Container/index.tsx @@ -0,0 +1,16 @@ +'use client' + +import { ContainerCustom } from './style' + +interface ContainerProps { + children: any + size?: 'small' | 'medium' +} + +export default function Container(props: ContainerProps) { + const { children, size = 'medium' } = props + + return ( + {children} + ) +} diff --git a/src/components/Layout/Container/style.tsx b/src/components/Layout/Container/style.tsx new file mode 100644 index 0000000..1116b9c --- /dev/null +++ b/src/components/Layout/Container/style.tsx @@ -0,0 +1,19 @@ +'use client' + +import { styled } from 'styled-components' + +interface ContainerProps { + $isSmall?: boolean +} + +export const ContainerCustom = styled.div` + display: flex; + flex-direction: column; + flex: 1; + width: 100%; + height: 100%; + max-width: ${props => (props.$isSmall ? '450px' : '720px')}; + + margin: 0 auto; + padding: 0 0.8em; +` diff --git a/src/components/Loader/Loader.module.css b/src/components/Loader/Loader.module.css new file mode 100644 index 0000000..2730c0e --- /dev/null +++ b/src/components/Loader/Loader.module.css @@ -0,0 +1,142 @@ +.loaderContainer { + display: flex; + justify-content: center; + align-items: center; + height: 100%; + width: 100%; + margin: 1rem auto; + text-align: center; +} + +.buttonLoader, +.loader { + width: 28px; + height: 28px; + border-radius: 50%; + display: inline-block; + border-top: 2px solid #fff; + border-right: 2px solid transparent; + -webkit-box-sizing: border-box; + box-sizing: border-box; + -webkit-animation: rotation 1s linear infinite; + animation: rotation 1s linear infinite; +} + +@-webkit-keyframes rotation { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes rotation { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +/** * MODAL LOADER * **/ +.modalLoader { + width: 48px; + height: 48px; + border-radius: 50%; + display: inline-block; + border-top: 4px solid #c31d98; + border-right: 4px solid transparent; + -webkit-box-sizing: border-box; + box-sizing: border-box; + -webkit-animation: rotate 1s linear infinite; + animation: rotate 1s linear infinite; + margin: 4rem auto; + text-align: center; +} + +.modalLoader::after { + content: ''; + -webkit-box-sizing: border-box; + box-sizing: border-box; + position: absolute; + left: 0; + top: 0; + width: 48px; + height: 48px; + border-radius: 50%; + border-bottom: 4px solid #4fb8f1; + border-left: 4px solid transparent; +} + +@-webkit-keyframes rotate { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes rotate { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +/** * MAIN LOADER * **/ +.loaderMain { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -ms-grid-column: 1; + -ms-grid-column-span: 4; + grid-column: 1/5; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; + margin: auto; +} + +/** * LOAD ERROR * **/ +.loadError { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + padding: 0px; + gap: 0px; + margin: 1rem auto; +} + +@media screen and (min-width: 768px) { + .loadError { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + padding: 16px; + gap: 8px; + margin: 0 auto; + } +} diff --git a/src/components/Loader/Loader.tsx b/src/components/Loader/Loader.tsx new file mode 100644 index 0000000..a0ac03e --- /dev/null +++ b/src/components/Loader/Loader.tsx @@ -0,0 +1,18 @@ +import styles from './Loader.module.css' + +export const Loader = () => { + return ( +

+ ) +} + +export const MainLoader = () => +export const BtnLoader = () => { + return +} + +export const ModalLoader = () => { + return +} diff --git a/src/components/TokenList/index.tsx b/src/components/TokenList/index.tsx new file mode 100644 index 0000000..794c836 --- /dev/null +++ b/src/components/TokenList/index.tsx @@ -0,0 +1,36 @@ +'use client' + +import Container from '@/components/Layout/Container' +import { Flex, Button } from '@/components/UI' + +import { TokenList } from './style' +import { LaWalletContext } from '@/context/LaWalletContext' +import { useContext } from 'react' +import { CurrenciesList } from '@/types/config' + +export default function Component() { + const { userConfig } = useContext(LaWalletContext) + + return ( + + + + {CurrenciesList.map(currency => { + const selected: boolean = userConfig.props.currency === currency + + return ( + + ) + })} + + + + ) +} diff --git a/src/components/TokenList/style.tsx b/src/components/TokenList/style.tsx new file mode 100644 index 0000000..0b6ec10 --- /dev/null +++ b/src/components/TokenList/style.tsx @@ -0,0 +1,14 @@ +'use client' + +import { styled } from 'styled-components' + +interface TokenListProps {} + +export const TokenList = styled.div` + width: 100%; + + button { + width: 100%; + max-width: 80px; + } +` diff --git a/src/components/UI/Alert/index.tsx b/src/components/UI/Alert/index.tsx new file mode 100644 index 0000000..2e06592 --- /dev/null +++ b/src/components/UI/Alert/index.tsx @@ -0,0 +1,47 @@ +'use client' + +import { + CheckIcon, + AlertIcon +} from '@bitcoin-design/bitcoin-icons-react/filled' + +import theme from '@/styles/theme' + +import Text from '../Text' +import Icon from '../Icon' + +import { Alert } from './style' + +interface AlertProps { + title: string | undefined + description: string | undefined + type: 'success' | 'warning' | 'error' | undefined + isOpen: boolean +} + +export default function Component(props: AlertProps) { + const { title, description, type, isOpen = false } = props + + const isSuccess = type === 'success' + + return ( + +
+ {isSuccess ? : } +
+ {title && ( + + {title} + + )} + {description && {description}} +
+
+
+
+ ) +} diff --git a/src/components/UI/Alert/style.tsx b/src/components/UI/Alert/style.tsx new file mode 100644 index 0000000..5ddf43c --- /dev/null +++ b/src/components/UI/Alert/style.tsx @@ -0,0 +1,83 @@ +'use client' + +import { styled } from 'styled-components' + +import theme from '@/styles/theme' + +interface AlertProps { + $background?: string + $color?: string + $isOpen: boolean +} + +export const Alert = styled.div` + position: absolute; + top: 40px; + right: 0; + left: 0; + z-index: ${props => (props.$isOpen ? 10 : -1)}; + opacity: ${props => (props.$isOpen ? 1 : 0)}; + transform: ${props => + props.$isOpen ? 'translateY(-20px)' : 'translateY(0px)'}; + transition-duration: 0.3s; + + display: flex; + justify-content: center; + align-items: center; + gap: 16px; + height: 60px; + + padding: 0 20px; + + .box { + position: relative; + overflow: hidden; + + display: ${props => (props.$isOpen ? 'flex' : 'none')}; + align-items: center; + gap: 12px; + width: 100%; + max-width: 300px; + height: auto; + + padding: 12px; + padding-bottom: 18px; + + background-color: ${theme.colors.white}; + box-shadow: 0 18px 40px 4px ${props => props.$background}; + border-radius: 4px; + + color: ${theme.colors.background}; + + > div { + &:first-child { + min-width: 24px; + min-height: 24px; + + background-color: ${props => props.$color}; + border-radius: 24px; + + color: ${theme.colors.text}; + } + + &:last-child { + display: flex; + flex-direction: column; + gap: 4px; + } + } + } + + .progress { + position: absolute; + bottom: 0; + left: 0; + + width: 100%; + height: 6px; + + background-color: ${props => props.$color}; + + transition: width 3s; + } +` diff --git a/src/components/UI/Button/ButtonGroup.tsx b/src/components/UI/Button/ButtonGroup.tsx new file mode 100644 index 0000000..dbd0919 --- /dev/null +++ b/src/components/UI/Button/ButtonGroup.tsx @@ -0,0 +1,13 @@ +'use client' + +import { ButtonGroup } from './style' + +interface ComponentProps { + children: any +} + +export default function Component(props: ComponentProps) { + const { children } = props + + return {children} +} diff --git a/src/components/UI/Button/index.tsx b/src/components/UI/Button/index.tsx new file mode 100644 index 0000000..2f8625c --- /dev/null +++ b/src/components/UI/Button/index.tsx @@ -0,0 +1,80 @@ +'use client' + +import theme from '@/styles/theme' +import { ButtonCustom } from './style' +import { ReactNode } from 'react' + +type Color = 'primary' | 'secondary' | 'error' +type Variant = 'filled' | 'bezeled' | 'bezeledGray' | 'borderless' +type Size = 'small' | 'normal' + +interface ButtonProps { + children: ReactNode + color?: Color + variant?: Variant + size?: Size + disabled?: boolean + componentName?: string + tabIndex?: number + onClick: (e: any) => void + onTouchStart?: () => void + onTouchEnd?: () => void + onMouseDown?: () => void + onMouseUp?: () => void +} + +function variantsList(variant: Variant, color: Color) { + const list = { + filled: { + background: theme.colors[color], + color: theme.colors.black + }, + bezeled: { + background: theme.colors[`${color}15`], + color: theme.colors[color] + }, + bezeledGray: { + background: theme.colors.gray15, + color: theme.colors[color] + }, + borderless: { + background: theme.colors.transparent, + color: theme.colors[color] + } + } + + return list[variant] +} + +export default function Button(props: ButtonProps) { + const { + children, + color = 'primary', + variant = 'filled', + size = 'normal', + disabled = false, + tabIndex = 0, + onClick, + onTouchStart, + onTouchEnd, + onMouseDown, + onMouseUp + } = props + + return ( + + {children} + + ) +} diff --git a/src/components/UI/Button/style.tsx b/src/components/UI/Button/style.tsx new file mode 100644 index 0000000..3f10c31 --- /dev/null +++ b/src/components/UI/Button/style.tsx @@ -0,0 +1,65 @@ +'use client' + +import { styled } from 'styled-components' + +import theme from '@/styles/theme' + +interface ButtonCustomProps { + $background?: string + $color?: string + $isSmall?: boolean +} + +export const ButtonCustom = styled.button` + display: flex; + align-items: center; + justify-content: center; + gap: 8px; + flex: ${props => (props.$isSmall ? 'inherit' : 1)}; + min-width: ${props => (props.$isSmall ? '30px' : '50px')}; + min-height: ${props => (props.$isSmall ? '30px' : '50px')}; + + padding: ${props => (props.$isSmall ? '4px 6px' : '12px 8px')}; + + border: none; + border-radius: 50px; + background-color: ${props => props.$background}; + + color: ${props => props.$color}; + font-size: ${props => (props.$isSmall ? '.7em' : '.8em')}; + font-weight: 700; + text-align: center; + + cursor: pointer; + + svg { + width: 18px; + + color: ${props => props.$color}; + } + + &:not(:disabled) { + &:hover { + opacity: 0.85; + } + + &:active { + opacity: 0.65; + } + } + + &:disabled { + background-color: ${theme.colors.gray40}; + cursor: not-allowed; + } +` + +export const ButtonGroup = styled.div` + display: flex; + gap: 8px; + + padding: 4px; + + background-color: ${theme.colors.gray15}; + border-radius: 24px; +` diff --git a/src/components/UI/Confetti/index.js b/src/components/UI/Confetti/index.js new file mode 100644 index 0000000..1ca8b73 --- /dev/null +++ b/src/components/UI/Confetti/index.js @@ -0,0 +1,40 @@ +'use client' + +import { useEffect } from 'react' +import ConfettiGenerator from 'confetti-js' + +import { Confetti } from './style' + +const settings = { + target: 'confetti-box', + max: '25', + size: '1', + animate: true, + props: ['square'], + colors: [ + [86, 182, 140], + [253, 200, 0], + [233, 80, 83] + ], + clock: '35', + rotate: true, + width: '600', + height: '600', + start_from_edge: true, + respawn: false +} + +export default function Component() { + useEffect(() => { + const confetti = new ConfettiGenerator(settings) + confetti.render() + + return () => confetti.clear() + }, []) + + return ( + + + + ) +} diff --git a/src/components/UI/Confetti/style.tsx b/src/components/UI/Confetti/style.tsx new file mode 100644 index 0000000..d9baf07 --- /dev/null +++ b/src/components/UI/Confetti/style.tsx @@ -0,0 +1,34 @@ +'use client' + +import { styled } from 'styled-components' + +interface ConfettiProps {} + +export const Confetti = styled.div` + position: absolute; + top: -100px; + left: 0; + z-index: -1; + overflow-x: hidden; + + display: flex; + justify-content: center; + width: 100%; + height: 100dvh; + + &:before { + content: ''; + + position: absolute; + bottom: 0; + left: 0; + + width: 100%; + height: 65%; + background: linear-gradient( + to top, + rgba(28, 28, 28, 1), + rgba(28, 28, 28, 0) + ); + } +` diff --git a/src/components/UI/Divider/index.tsx b/src/components/UI/Divider/index.tsx new file mode 100644 index 0000000..4cb489b --- /dev/null +++ b/src/components/UI/Divider/index.tsx @@ -0,0 +1,14 @@ +'use client' + +import { DividerCustom } from './style' + +interface DividerProps { + x?: number + y?: number +} + +export default function Divider(props: DividerProps) { + const { x = 0, y = 0 } = props + + return +} diff --git a/src/components/UI/Divider/style.tsx b/src/components/UI/Divider/style.tsx new file mode 100644 index 0000000..716c957 --- /dev/null +++ b/src/components/UI/Divider/style.tsx @@ -0,0 +1,15 @@ +'use client' + +import { styled } from 'styled-components' +import theme from '@/styles/theme' + +interface DividerCustomProps { + $x?: number + $y?: number +} + +export const DividerCustom = styled.div` + width: 100%; + + min-height: ${props => props.$y}px; +` diff --git a/src/components/UI/Flex/index.tsx b/src/components/UI/Flex/index.tsx new file mode 100644 index 0000000..9e38bf3 --- /dev/null +++ b/src/components/UI/Flex/index.tsx @@ -0,0 +1,35 @@ +'use client' + +import { FlexCustom } from './style' + +interface FlexProps { + children: any + gap?: 0 | 2 | 4 | 8 + direction?: 'row' | 'column' + flex?: 0 | 1 | 'initial' + justify?: 'start' | 'end' | 'space-between' | 'center' + align?: 'start' | 'center' | 'end' +} + +export default function Flex(props: FlexProps) { + const { + children, + gap = 0, + direction = 'row', + flex = 'initial', + justify = 'start', + align = 'start' + } = props + + return ( + + {children} + + ) +} diff --git a/src/components/UI/Flex/style.tsx b/src/components/UI/Flex/style.tsx new file mode 100644 index 0000000..8026614 --- /dev/null +++ b/src/components/UI/Flex/style.tsx @@ -0,0 +1,23 @@ +'use client' + +import { styled } from 'styled-components' + +interface FlexCustomProps { + $gap?: string + $direction: 'row' | 'column' + $flex?: 0 | 1 | 'initial' + $justify?: 'start' | 'end' | 'space-between' | 'center' + $align?: 'start' | 'center' | 'end' +} + +export const FlexCustom = styled.div` + position: relative; + + display: flex; + flex-direction: ${props => props.$direction}; + gap: ${props => props.$gap}; + flex: ${props => props.$flex}; + justify-content: ${props => props.$justify}; + align-items: ${props => props.$align}; + width: 100%; +` diff --git a/src/components/UI/Heading/index.tsx b/src/components/UI/Heading/index.tsx new file mode 100644 index 0000000..4ab8a99 --- /dev/null +++ b/src/components/UI/Heading/index.tsx @@ -0,0 +1,24 @@ +'use client' + +import { fontPrimary } from '@/styles/fonts' + +import { HeadingBox, HeadingCustom } from './style' + +interface HeadingProps { + children: any + as?: string + align?: 'left' | 'center' | 'right' + color?: string +} + +export default function Heading(props: HeadingProps) { + const { children, as = 'h1', align = 'left', color } = props + + return ( + + + {children} + + + ) +} diff --git a/src/components/UI/Heading/style.tsx b/src/components/UI/Heading/style.tsx new file mode 100644 index 0000000..bf58639 --- /dev/null +++ b/src/components/UI/Heading/style.tsx @@ -0,0 +1,60 @@ +'use client' + +import { styled } from 'styled-components' + +export const HeadingBox = styled.div` + h1 { + font-size: 1.6em; + line-height: 1.1em; + + @media (min-width: 800px) { + font-size: 2.1em; + line-height: 1em; + } + } + + h2 { + font-size: 1.3em; + line-height: 1.6em; + + @media (min-width: 800px) { + font-size: 1.6em; + line-height: 1.9em; + } + } + + h3 { + font-size: 1.1em; + line-height: 1.4em; + + @media (min-width: 800px) { + font-size: 1.3em; + line-height: 1.7em; + } + } + + h4 { + font-size: 1em; + line-height: 1.3em; + } + + h5 { + font-size: 0.9em; + line-height: 1.2em; + } + + h6 { + font-size: 0.8em; + line-height: 1.1em; + } +` + +interface HeadingProps { + $align: 'left' | 'center' | 'right' + $color?: string +} + +export const HeadingCustom = styled.div` + color: ${props => props.$color}; + text-align: ${props => props.$align}; +` diff --git a/src/components/UI/Icon/index.tsx b/src/components/UI/Icon/index.tsx new file mode 100644 index 0000000..f495455 --- /dev/null +++ b/src/components/UI/Icon/index.tsx @@ -0,0 +1,21 @@ +'use client' + +import { Icon } from './style' + +interface ComponentProps { + children: any + size?: 'small' | 'normal' + color?: string +} + +export default function Component(props: ComponentProps) { + const { children, size = 'normal', color = 'currentColor' } = props + + const isSmall = size === 'small' + + return ( + + {children} + + ) +} diff --git a/src/components/UI/Icon/style.tsx b/src/components/UI/Icon/style.tsx new file mode 100644 index 0000000..4ce5a12 --- /dev/null +++ b/src/components/UI/Icon/style.tsx @@ -0,0 +1,26 @@ +'use client' + +import { styled } from 'styled-components' + +interface IconProps { + $isSmall: boolean + $color: string +} + +export const Icon = styled.div` + display: flex; + align-items: center; + justify-content: center; + min-width: ${props => (props.$isSmall ? '18px' : '24px')}; + min-height: ${props => (props.$isSmall ? '18px' : '24px')}; + width: ${props => (props.$isSmall ? '18px' : '24px')}; + height: ${props => (props.$isSmall ? '18px' : '24px')}; + + svg, + img { + width: 100%; + height: 100%; + + color: ${props => props.$color}; + } +` diff --git a/src/components/UI/Keyboard/index.tsx b/src/components/UI/Keyboard/index.tsx new file mode 100644 index 0000000..b14071a --- /dev/null +++ b/src/components/UI/Keyboard/index.tsx @@ -0,0 +1,75 @@ +import { ClearCharacterIcon } from '@bitcoin-design/bitcoin-icons-react/filled' + +import { Flex, Button } from '@/components/UI' +import { IUseNumpad } from '@/hooks/useNumpad' + +const timeOut: Record = {} +type KeyboardProps = { + numpadData: IUseNumpad +} + +export default function Component({ numpadData }: KeyboardProps) { + const { handleNumpad, resetAmount, deleteNumber } = numpadData + + const handleDeleteOnMouseDown = () => + (timeOut.reset = setTimeout(() => resetAmount(), 500)) + + const handleDeleteOnMouseUp = () => clearTimeout(timeOut?.reset) + + return ( + + + + + + + + + + + + + + + + + + + + + + + ) +} diff --git a/src/components/UI/LinkButton/index.tsx b/src/components/UI/LinkButton/index.tsx new file mode 100644 index 0000000..8c481b3 --- /dev/null +++ b/src/components/UI/LinkButton/index.tsx @@ -0,0 +1,67 @@ +'use client' + +import theme from '@/styles/theme' +import { LinkButton } from './style' + +type Color = 'primary' | 'secondary' | 'error' +type Variant = 'filled' | 'bezeled' | 'bezeledGray' | 'borderless' +type Size = 'small' | 'normal' + +interface ComponentProps { + children: any + color?: Color + variant?: Variant + size?: Size + // disabled?: boolean; + componentName?: string + tabIndex?: number + href: string +} + +function variantsList(variant: Variant, color: Color) { + const list = { + filled: { + background: theme.colors[color], + color: theme.colors.black + }, + bezeled: { + background: theme.colors[`${color}15`], + color: theme.colors[color] + }, + bezeledGray: { + background: theme.colors.gray15, + color: theme.colors[color] + }, + borderless: { + background: theme.colors.transparent, + color: theme.colors[color] + } + } + + return list[variant] +} + +export default function Component(props: ComponentProps) { + const { + children, + color = 'primary', + variant = 'filled', + size = 'normal', + // disabled = false, + tabIndex = 0, + href + } = props + + return ( + + {children} + + ) +} diff --git a/src/components/UI/LinkButton/style.tsx b/src/components/UI/LinkButton/style.tsx new file mode 100644 index 0000000..ee84097 --- /dev/null +++ b/src/components/UI/LinkButton/style.tsx @@ -0,0 +1,47 @@ +'use client' + +import { styled } from 'styled-components' + +interface LinkButtonProps { + $background?: string + $color?: string + $isSmall?: boolean +} + +export const LinkButton = styled.a` + display: flex; + align-items: center; + justify-content: center; + gap: 8px; + flex: ${props => (props.$isSmall ? 'inherit' : 1)}; + min-width: ${props => (props.$isSmall ? '30px' : '50px')}; + min-height: ${props => (props.$isSmall ? '30px' : '50px')}; + + padding: ${props => (props.$isSmall ? '4px 6px' : '12px 8px')}; + + border: none; + border-radius: 50px; + background-color: ${props => props.$background}; + + color: ${props => props.$color}; + font-size: ${props => (props.$isSmall ? '.7em' : '.8em')}; + font-weight: 700; + text-align: center; + + cursor: pointer; + text-decoration: none; + + svg { + width: 18px; + + color: ${props => props.$color}; + } + + &:hover { + opacity: 0.85; + } + + &:active { + opacity: 0.65; + } +` diff --git a/src/components/UI/QRCode/index.tsx b/src/components/UI/QRCode/index.tsx new file mode 100644 index 0000000..18063d2 --- /dev/null +++ b/src/components/UI/QRCode/index.tsx @@ -0,0 +1,24 @@ +'use client' + +import ReactQRCode from 'react-qr-code' + +import theme from '@/styles/theme' +import { QRCode } from './style' + +interface ComponentProps { + value: string + size?: number +} + +export default function Component({ value, size = 150 }: ComponentProps) { + return ( + + + + ) +} diff --git a/src/components/UI/QRCode/style.tsx b/src/components/UI/QRCode/style.tsx new file mode 100644 index 0000000..b1c3944 --- /dev/null +++ b/src/components/UI/QRCode/style.tsx @@ -0,0 +1,22 @@ +'use client' + +import { styled } from 'styled-components' + +import theme from '@/styles/theme' + +interface QRCodeProps { + $isSmall: boolean +} + +export const QRCode = styled.div` + display: flex; + flex: 1; + justify-content: center; + align-items: center; + width: 100%; + height: 100%; + + padding: ${props => (props.$isSmall ? '16px 0' : '32px 0')}; + + background-color: ${theme.colors.white}; +` diff --git a/src/components/UI/Sheet/index.tsx b/src/components/UI/Sheet/index.tsx new file mode 100644 index 0000000..a2452a5 --- /dev/null +++ b/src/components/UI/Sheet/index.tsx @@ -0,0 +1,63 @@ +'use client' + +import { useState, useEffect } from 'react' + +import Container from '../../Layout/Container' + +import Flex from '../Flex' +import Divider from '../Divider' +import Button from '../Button' +import Heading from '../Heading' + +import { Sheet, SheetContent } from './style' +// import { useTranslation } from '@/hooks/useTranslations' + +interface ComponentProps { + children: any + isOpen: boolean + onClose: () => void + title?: string +} + +export default function Component(props: ComponentProps) { + const { children, isOpen, onClose, title } = props + // const { t } = useTranslation() + + const [open, setOpen] = useState(false) + + useEffect(() => { + setOpen(isOpen) + }, [isOpen]) + + const handleClose = () => { + setOpen(false) + onClose() + } + + return ( + + + + + + {title} + + + + + + + {children} + + + + + + + + + + ) +} diff --git a/src/components/UI/Sheet/style.tsx b/src/components/UI/Sheet/style.tsx new file mode 100644 index 0000000..ebb3724 --- /dev/null +++ b/src/components/UI/Sheet/style.tsx @@ -0,0 +1,53 @@ +'use client' + +import { styled } from 'styled-components' + +import theme from '@/styles/theme' + +interface SheetProps { + $isOpen?: boolean +} + +export const Sheet = styled.div` + position: fixed; + overflow-x: hidden; + bottom: 0; + left: 0; + z-index: 3; + + display: flex; + align-items: flex-end; + width: 100%; + height: 100%; + + background-color: ${props => + props.$isOpen ? 'rgba(0,0,0,.8)' : 'transparent'}; + + transform: ${props => (props.$isOpen ? 'translateY(0)' : 'translateY(100%)')}; + transition-duration: 0.2s; + transform: ${props => (props.$isOpen ? 1 : 0)}; +` + +interface SheetContentProps { + $isOpen?: boolean +} + +export const SheetContent = styled.div` + position: relative; + z-index: 2; + overflow: hidden; + + display: flex; + flex-direction: column; + width: 100%; + height: calc(65dvh); + + margin-top: 60px; + padding-top: 24px; + + background-color: ${theme.colors.gray15}; + border-radius: 12px 12px 0 0; + + transform: ${props => (props.$isOpen ? 'translateY(0)' : 'translateY(100%)')}; + transition-duration: 0.4s; +` diff --git a/src/components/UI/Text/index.tsx b/src/components/UI/Text/index.tsx new file mode 100644 index 0000000..ba73374 --- /dev/null +++ b/src/components/UI/Text/index.tsx @@ -0,0 +1,35 @@ +'use client' + +import { fontSecondary } from '@/styles/fonts' + +import { Text } from './style' + +interface TextProps { + children: any + size?: 'small' | 'normal' + align?: 'left' | 'center' | 'right' + isBold?: boolean + color?: string +} + +export default function Component(props: TextProps) { + const { + children, + size = 'normal', + align = 'left', + isBold = false, + color + } = props + + return ( + + {children} + + ) +} diff --git a/src/components/UI/Text/style.tsx b/src/components/UI/Text/style.tsx new file mode 100644 index 0000000..aafdecb --- /dev/null +++ b/src/components/UI/Text/style.tsx @@ -0,0 +1,18 @@ +'use client' + +import { styled } from 'styled-components' + +interface TextProps { + $isSmall?: boolean + $isBold?: boolean + $align?: string + $color?: string +} + +export const Text = styled.p` + color: ${props => props.$color}; + font-size: ${props => (props.$isSmall ? '.7rem' : '.8rem')}; + line-height: ${props => (props.$isSmall ? '.9rem' : '1rem')}; + text-align: ${props => props.$align}; + font-weight: ${props => (props.$isBold ? 700 : 400)}; +` diff --git a/src/components/UI/index.tsx b/src/components/UI/index.tsx new file mode 100644 index 0000000..02b1306 --- /dev/null +++ b/src/components/UI/index.tsx @@ -0,0 +1,13 @@ +export { default as Alert } from './Alert' +export { default as Button } from './Button' +export { default as ButtonGroup } from './Button/ButtonGroup' +export { default as Divider } from './Divider' +export { default as Flex } from './Flex' +export { default as Heading } from './Heading' +export { default as QRCode } from './QRCode' +export { default as Text } from './Text' +export { default as LinkButton } from './LinkButton' +export { default as Icon } from './Icon' +export { default as Keyboard } from './Keyboard' +export { default as Confetti } from './Confetti' +export { default as Sheet } from './Sheet' diff --git a/src/context/LaWalletContext.tsx b/src/context/LaWalletContext.tsx new file mode 100644 index 0000000..0cfc7c4 --- /dev/null +++ b/src/context/LaWalletContext.tsx @@ -0,0 +1,22 @@ +import { createContext } from 'react' +import useConfiguration, { ConfigReturns } from '@/hooks/useConfiguration' + +interface LaWalletContextType { + userConfig: ConfigReturns +} + +export const LaWalletContext = createContext({} as LaWalletContextType) + +export function LaWalletProvider({ children }: { children: React.ReactNode }) { + const userConfig: ConfigReturns = useConfiguration() + + const value = { + userConfig + } + + return ( + + {children} + + ) +} diff --git a/src/context/TransferContext.tsx b/src/context/TransferContext.tsx new file mode 100644 index 0000000..6d3c3f2 --- /dev/null +++ b/src/context/TransferContext.tsx @@ -0,0 +1,18 @@ +import useTransfer, { TransferContextType } from '@/hooks/useTransfer' +import { createContext, useContext } from 'react' + +export const TransferContext = createContext({} as TransferContextType) + +export function TransferProvider({ children }: { children: React.ReactNode }) { + const transferValue = useTransfer() + + return ( + + {children} + + ) +} + +export const useTransferContext = () => { + return useContext(TransferContext) +} diff --git a/src/hooks/useConfiguration.ts b/src/hooks/useConfiguration.ts new file mode 100644 index 0000000..5908985 --- /dev/null +++ b/src/hooks/useConfiguration.ts @@ -0,0 +1,50 @@ +import { AvailableCurrencies, ConfigProps, defaultConfig } from '@/types/config' +import { useEffect, useState } from 'react' + +export type ConfigReturns = { + props: ConfigProps + loading: boolean + toggleHideBalance: () => void + changeCurrency: (currency: AvailableCurrencies) => void +} + +const useConfiguration = (): ConfigReturns => { + const [loading, setLoading] = useState(true) + const [props, setProps] = useState(defaultConfig) + + const saveConfiguration = (newConfig: ConfigProps) => { + setProps(newConfig) + localStorage.setItem('config', JSON.stringify(newConfig)) + } + + const toggleHideBalance = () => + saveConfiguration({ + ...props, + hideBalance: !props.hideBalance + }) + + const changeCurrency = (currency: AvailableCurrencies) => + saveConfiguration({ + ...props, + currency + }) + const preloadConfig = () => { + const storagedConfig: string | null = localStorage.getItem('config') + if (!storagedConfig) { + setLoading(false) + return + } + + const parsedConfig: ConfigProps = JSON.parse(storagedConfig) + setProps(parsedConfig) + setLoading(false) + } + + useEffect(() => { + preloadConfig() + }, []) + + return { props, loading, toggleHideBalance, changeCurrency } +} + +export default useConfiguration diff --git a/src/hooks/useCurrencyConverter.ts b/src/hooks/useCurrencyConverter.ts new file mode 100644 index 0000000..2716bfa --- /dev/null +++ b/src/hooks/useCurrencyConverter.ts @@ -0,0 +1,95 @@ +import { decimalsToUse, roundToDown } from '@/lib/formatter' +import { AvailableCurrencies } from '@/types/config' +import { useEffect, useState } from 'react' + +const ENDPOINT_PRICE_BTC: string = 'https://api.yadio.io/exrates/btc' +const UPDATE_PRICES_TIME: number = 60 * 1000 +const scaledBTC: number = 10 ** 8 + +type PricesInfo = Record + +export type UseConverterReturns = { + pricesData: PricesInfo + convertCurrency: ( + amount: number, + currencyA: AvailableCurrencies, + currencyB: AvailableCurrencies + ) => number +} + +const useCurrencyConverter = (): UseConverterReturns => { + const [pricesData, setPricesData] = useState({ + ARS: 0, + USD: 0, + SAT: 1 + }) + + const convertCurrency = ( + amount: number, + currencyA: AvailableCurrencies, + currencyB: AvailableCurrencies + ): number => { + let convertedAmount: number = 0 + if (!pricesData[currencyA] || !pricesData[currencyB]) return convertedAmount + + const multiplier: number = pricesData[currencyB] / pricesData[currencyA] + convertedAmount = amount * multiplier + + return Number( + roundToDown(convertedAmount, 8).toFixed(decimalsToUse(currencyB)) + ) + } + + const requestUpdatedPrices = (): Promise => { + return fetch(ENDPOINT_PRICE_BTC) + .then(res => res.json()) + .then(pricesResponse => { + const BTCPrices = pricesResponse.BTC + if (!BTCPrices) return false + + const updatedPrices: PricesInfo = { + ARS: BTCPrices.ARS / scaledBTC, + USD: BTCPrices.USD / scaledBTC, + SAT: 1 + } + + return updatedPrices + }) + } + + const updatePrices = async () => { + const updatedPrices: PricesInfo | false = await requestUpdatedPrices() + if (!updatedPrices) return + + localStorage.setItem( + 'prices', + JSON.stringify({ ...updatedPrices, lastUpdated: Date.now() }) + ) + + setPricesData(updatedPrices) + } + + const loadPrices = () => { + const storagedPrices: string | null = localStorage.getItem('prices') + if (!storagedPrices) { + updatePrices() + return + } + + const parsedPrices = JSON.parse(storagedPrices) + setPricesData(parsedPrices) + + if (parsedPrices.lastUpdated + UPDATE_PRICES_TIME < Date.now()) { + updatePrices() + return + } + } + + useEffect(() => { + loadPrices() + }, []) + + return { pricesData, convertCurrency } +} + +export default useCurrencyConverter diff --git a/src/hooks/useNumpad.ts b/src/hooks/useNumpad.ts new file mode 100644 index 0000000..095676e --- /dev/null +++ b/src/hooks/useNumpad.ts @@ -0,0 +1,121 @@ +import { decimalsToUse } from '@/lib/formatter' +import { AvailableCurrencies, CurrenciesList } from '@/types/config' +import { useState } from 'react' +import useCurrencyConverter from './useCurrencyConverter' + +type AmountType = Record +const defaultIntAmount: AmountType = { SAT: 0, ARS: 0, USD: 0 } + +export interface IUseNumpad { + usedCurrency: AvailableCurrencies + intAmount: AmountType + deleteNumber: () => void + concatNumber: (strNumber: string) => void + handleNumpad: (value: string) => void + resetAmount: () => void + modifyCurrency: (currency: AvailableCurrencies) => void + setCustomAmount: (amount: number, currency: AvailableCurrencies) => void + updateNumpadAmount: (new_amount: string) => void +} + +export const useNumpad = ( + currency: AvailableCurrencies, + maxAmount: number = -1 +): IUseNumpad => { + const { convertCurrency } = useCurrencyConverter() + const [usedCurrency, setUsedCurrency] = + useState(currency) + + const modifyCurrency = (new_currency: AvailableCurrencies) => { + setCustomAmount(intAmount[new_currency], new_currency) + setUsedCurrency(new_currency) + } + + const multiplier = (currency: AvailableCurrencies) => + 10 ** decimalsToUse(currency) + + const [intAmount, setIntAmount] = useState(defaultIntAmount) + const [strAmount, setStrAmount] = useState('0') + + const updateNumpadAmount = (new_amount: string) => { + const castAmount: number = Number(new_amount) + + const updatedAmount: number = castAmount + ? castAmount / multiplier(usedCurrency) + : 0 + + const formattedAmounts: AmountType = { ...defaultIntAmount } + + CurrenciesList.map(currency => { + if (currency === usedCurrency) { + formattedAmounts[usedCurrency] = updatedAmount + } else { + const convertedAmount: number = convertCurrency( + updatedAmount, + usedCurrency, + currency + ) + + formattedAmounts[currency] = convertedAmount + } + }) + + setStrAmount(new_amount) + setIntAmount(formattedAmounts) + } + + const concatNumber = (strNumber: string) => { + const concatedStr = strAmount.concat(strNumber.toString()) + if (concatedStr.length >= 12) return alert('MAX_AMOUNT') + + if (maxAmount !== -1) { + const scaledMaxAmount = maxAmount * multiplier(usedCurrency) + if (Number(concatedStr) > scaledMaxAmount) { + updateNumpadAmount(scaledMaxAmount.toFixed(0)) + return + } + } + + strAmount.length === 1 && strAmount === '0' + ? updateNumpadAmount(strNumber) + : updateNumpadAmount(concatedStr) + } + + const deleteNumber = () => { + if (strAmount.length === 1 && strAmount !== '0') { + updateNumpadAmount('0') + } else { + if (strAmount.length > 1) + updateNumpadAmount(strAmount.substring(0, strAmount.length - 1)) + } + } + + const resetAmount = () => updateNumpadAmount('0') + + const setCustomAmount = (amount: number, currency: AvailableCurrencies) => { + setStrAmount((amount * multiplier(currency)).toFixed(0).toString()) + } + + const handleNumpad = (value: string) => { + switch (value) { + case '0': + if (strAmount !== '0') concatNumber('0') + break + + default: + concatNumber(value) + } + } + + return { + usedCurrency, + intAmount, + deleteNumber, + concatNumber, + handleNumpad, + resetAmount, + modifyCurrency, + setCustomAmount, + updateNumpadAmount + } +} diff --git a/src/lib/formatter.ts b/src/lib/formatter.ts new file mode 100644 index 0000000..aed8191 --- /dev/null +++ b/src/lib/formatter.ts @@ -0,0 +1,94 @@ +import { format } from 'date-fns' +import { AvailableCurrencies, CurrenciesMetadata } from '@/types/config' +import { enUS, es } from 'date-fns/locale' +import { AvailableLanguages } from '@/translations' + +export const formatter = ( + minDecimals: number = 2, + maxDecimals: number = 2, + currency?: string +): Intl.NumberFormat => + new Intl.NumberFormat( + currency ? CurrenciesMetadata[currency].locale : 'es-AR', + { + // These options are needed to round to whole numbers if that's what you want. + minimumFractionDigits: minDecimals, // (this suffices for whole numbers, but will print 2500.10 as $2,500.1) + maximumFractionDigits: maxDecimals // (causes 2500.99 to be printed as $2,501) + } + ) + +export const decimalsToUse = (currency: AvailableCurrencies): number => { + switch (currency) { + case 'SAT': + return 0 + + case 'ARS': + return 0 + + default: + return 2 + } +} + +export const roundToDown = (num: number, decimals: number): number => { + const t = Math.pow(10, decimals) + return Number( + ( + Math.floor( + num * t + + (decimals > 0 ? 1 : 0) * + (Math.sign(num) * (10 / Math.pow(100, decimals))) + ) / t + ).toFixed(decimals) + ) +} + +export const roundNumber = (num: number, decimales: number = 5): number => { + const signo: number = num >= 0 ? 1 : -1 + num = num * signo + if (decimales === 0) return signo * Math.round(num) + + const multiplicador: number = Math.pow(10, decimales) + num = Math.round(num * multiplicador) / multiplicador + + return signo * num +} + +export const formatAddress = (address: string, size: number = 22): string => { + if (address) { + const formattedAddress: string = `${address.substring( + 0, + size + )}...${address.substring(address.length - 4, address.length)}` + + return formattedAddress + } + + return address +} + +export const dateFormatter = ( + lng: AvailableLanguages, + date: Date | number, + strFormat?: string +): string => { + return format(date, strFormat ?? 'MMM d, yyyy. HH:mm a', { + locale: lng === 'es' ? es : enUS + }) +} + +export const upperText = (text: string): string => + text ? text.toUpperCase() : '' +export const lowerText = (text: string): string => + text ? text.toLowerCase() : '' + +export const formatToPreference = ( + currency: AvailableCurrencies, + amount: number, + round?: boolean +): string => { + const maxDecimals: number = decimalsToUse(currency) + const minDecimals: number = round ? 2 : maxDecimals + + return formatter(minDecimals, maxDecimals, currency).format(amount) +} diff --git a/src/lib/registry.js b/src/lib/registry.js new file mode 100644 index 0000000..82ac153 --- /dev/null +++ b/src/lib/registry.js @@ -0,0 +1,25 @@ +'use client' + +import React, { useState } from 'react' +import { useServerInsertedHTML } from 'next/navigation' +import { ServerStyleSheet, StyleSheetManager } from 'styled-components' + +export default function StyledComponentsRegistry({ children }) { + // Only create stylesheet once with lazy initial state + // x-ref: https://reactjs.org/docs/hooks-reference.html#lazy-initial-state + const [styledComponentsStyleSheet] = useState(() => new ServerStyleSheet()) + + useServerInsertedHTML(() => { + const styles = styledComponentsStyleSheet.getStyleElement() + styledComponentsStyleSheet.instance.clearTag() + return <>{styles} + }) + + if (typeof window !== 'undefined') return <>{children} + + return ( + + {children} + + ) +} diff --git a/src/styles/GlobalStyles.ts b/src/styles/GlobalStyles.ts new file mode 100644 index 0000000..9f6cb8e --- /dev/null +++ b/src/styles/GlobalStyles.ts @@ -0,0 +1,44 @@ +'use client' + +import { createGlobalStyle } from 'styled-components' + +import theme from './theme' + +const GlobalStyles = createGlobalStyle` + * { + box-sizing: border-box; + + margin: 0; + padding: 0; + } + + html { + font-size: 20px; + } + + body { + overflow-x: hidden !important; + + display: flex; + flex-direction: column; + min-width: 100vw; + min-height: 100vh; + + background: ${theme.colors.background}; + + color: ${theme.colors.text}; + font-size: 1em; + font-weight: 400; + } + + ul { + list-style: none; + } + + a, + button { + font-family: var(--font-primary); + } +` + +export default GlobalStyles diff --git a/src/styles/fonts.ts b/src/styles/fonts.ts new file mode 100644 index 0000000..08ac91d --- /dev/null +++ b/src/styles/fonts.ts @@ -0,0 +1,30 @@ +import localFont from 'next/font/local' + +const fontPrimary = localFont({ + variable: '--font-primary', + src: [ + { + path: './fonts/IAAB3.woff2', + weight: '400', + style: 'normal' + } + ] +}) + +const fontSecondary = localFont({ + variable: '--font-secondary', + src: [ + { + path: './fonts/SF-Regular.woff2', + weight: '400', + style: 'normal' + }, + { + path: './fonts/SF-Bold.woff2', + weight: '700', + style: 'bold' + } + ] +}) + +export { fontPrimary, fontSecondary } diff --git a/src/styles/fonts/IAAB3.woff2 b/src/styles/fonts/IAAB3.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..791f7be22685970b9ddeb9bee63d27a064b23891 GIT binary patch literal 18140 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

jgb?UL$o(Ta)qmqgC#ofy402RjL3veP${u5R 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 literal 0 HcmV?d00001 diff --git a/src/styles/fonts/SF-Regular.woff2 b/src/styles/fonts/SF-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..084499b0fd5b1e1a0de5ad98d25d570175b245e9 GIT binary patch literal 20844 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 = + { + ARS: { + locale: 'es-AR' + }, + SAT: { + locale: 'es-AR' + }, + USD: { + locale: 'en-US' + } + } + +export type ConfigProps = { + hideBalance: boolean + currency: AvailableCurrencies +} + +export const defaultConfig: ConfigProps = { + hideBalance: false, + currency: 'SAT' +} diff --git a/src/types/styled.d.ts b/src/types/styled.d.ts new file mode 100644 index 0000000..d5b9724 --- /dev/null +++ b/src/types/styled.d.ts @@ -0,0 +1,8 @@ +import 'styled-components' +import { theme } from '@/styles/theme' + +type Theme = typeof theme + +declare module 'styled-components' { + export interface DefaultTheme extends Theme {} +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..408447f --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "baseUrl": "./src", + "paths": { + "@/*": ["./*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +} From ac84f1bba528d2ded0b538db58c0b39f26d0a881 Mon Sep 17 00:00:00 2001 From: Jona Date: Wed, 25 Oct 2023 04:03:25 -0300 Subject: [PATCH 005/159] chore: remove elements --- src/components/UI/Alert/index.tsx | 47 ----------------- src/components/UI/Alert/style.tsx | 83 ------------------------------- src/context/TransferContext.tsx | 18 ------- 3 files changed, 148 deletions(-) delete mode 100644 src/components/UI/Alert/index.tsx delete mode 100644 src/components/UI/Alert/style.tsx delete mode 100644 src/context/TransferContext.tsx diff --git a/src/components/UI/Alert/index.tsx b/src/components/UI/Alert/index.tsx deleted file mode 100644 index 2e06592..0000000 --- a/src/components/UI/Alert/index.tsx +++ /dev/null @@ -1,47 +0,0 @@ -'use client' - -import { - CheckIcon, - AlertIcon -} from '@bitcoin-design/bitcoin-icons-react/filled' - -import theme from '@/styles/theme' - -import Text from '../Text' -import Icon from '../Icon' - -import { Alert } from './style' - -interface AlertProps { - title: string | undefined - description: string | undefined - type: 'success' | 'warning' | 'error' | undefined - isOpen: boolean -} - -export default function Component(props: AlertProps) { - const { title, description, type, isOpen = false } = props - - const isSuccess = type === 'success' - - return ( - -

- {isSuccess ? : } -
- {title && ( - - {title} - - )} - {description && {description}} -
-
-
- - ) -} diff --git a/src/components/UI/Alert/style.tsx b/src/components/UI/Alert/style.tsx deleted file mode 100644 index 5ddf43c..0000000 --- a/src/components/UI/Alert/style.tsx +++ /dev/null @@ -1,83 +0,0 @@ -'use client' - -import { styled } from 'styled-components' - -import theme from '@/styles/theme' - -interface AlertProps { - $background?: string - $color?: string - $isOpen: boolean -} - -export const Alert = styled.div` - position: absolute; - top: 40px; - right: 0; - left: 0; - z-index: ${props => (props.$isOpen ? 10 : -1)}; - opacity: ${props => (props.$isOpen ? 1 : 0)}; - transform: ${props => - props.$isOpen ? 'translateY(-20px)' : 'translateY(0px)'}; - transition-duration: 0.3s; - - display: flex; - justify-content: center; - align-items: center; - gap: 16px; - height: 60px; - - padding: 0 20px; - - .box { - position: relative; - overflow: hidden; - - display: ${props => (props.$isOpen ? 'flex' : 'none')}; - align-items: center; - gap: 12px; - width: 100%; - max-width: 300px; - height: auto; - - padding: 12px; - padding-bottom: 18px; - - background-color: ${theme.colors.white}; - box-shadow: 0 18px 40px 4px ${props => props.$background}; - border-radius: 4px; - - color: ${theme.colors.background}; - - > div { - &:first-child { - min-width: 24px; - min-height: 24px; - - background-color: ${props => props.$color}; - border-radius: 24px; - - color: ${theme.colors.text}; - } - - &:last-child { - display: flex; - flex-direction: column; - gap: 4px; - } - } - } - - .progress { - position: absolute; - bottom: 0; - left: 0; - - width: 100%; - height: 6px; - - background-color: ${props => props.$color}; - - transition: width 3s; - } -` diff --git a/src/context/TransferContext.tsx b/src/context/TransferContext.tsx deleted file mode 100644 index 6d3c3f2..0000000 --- a/src/context/TransferContext.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import useTransfer, { TransferContextType } from '@/hooks/useTransfer' -import { createContext, useContext } from 'react' - -export const TransferContext = createContext({} as TransferContextType) - -export function TransferProvider({ children }: { children: React.ReactNode }) { - const transferValue = useTransfer() - - return ( - - {children} - - ) -} - -export const useTransferContext = () => { - return useContext(TransferContext) -} From 77db96022e714ebdd215b5fb26984de1773bec44 Mon Sep 17 00:00:00 2001 From: Jona Date: Wed, 25 Oct 2023 04:04:16 -0300 Subject: [PATCH 006/159] chore: remove elements --- src/components/UI/index.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/UI/index.tsx b/src/components/UI/index.tsx index 02b1306..64f9241 100644 --- a/src/components/UI/index.tsx +++ b/src/components/UI/index.tsx @@ -1,4 +1,3 @@ -export { default as Alert } from './Alert' export { default as Button } from './Button' export { default as ButtonGroup } from './Button/ButtonGroup' export { default as Divider } from './Divider' From 247e4177561f747b321664763551ee6a5e968a22 Mon Sep 17 00:00:00 2001 From: Jona Date: Wed, 25 Oct 2023 04:16:32 -0300 Subject: [PATCH 007/159] ajustment project --- src/app/layout.tsx | 9 +++- src/lib/formatter.ts | 2 + src/translations/index.ts | 14 ++++++ src/translations/locales/en/globals.json | 61 ++++++++++++++++++++++++ src/translations/locales/es/globals.json | 61 ++++++++++++++++++++++++ 5 files changed, 145 insertions(+), 2 deletions(-) create mode 100644 src/translations/index.ts create mode 100644 src/translations/locales/en/globals.json create mode 100644 src/translations/locales/es/globals.json diff --git a/src/app/layout.tsx b/src/app/layout.tsx index fb32f60..cc71d18 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -7,6 +7,7 @@ import { ThemeProvider } from 'styled-components' import { LaWalletProvider } from '@/context/LaWalletContext' import StyledComponentsRegistry from '@/lib/registry' +import { AvailableLanguages, defaultLocale } from '@/translations' import theme from '@/styles/theme' import { fontSecondary } from '@/styles/fonts' @@ -14,16 +15,20 @@ import GlobalStyles from '@/styles/GlobalStyles' interface ProviderProps { children: ReactNode + params: { lng: AvailableLanguages } } // Metadata const APP_NAME = 'LaPOS' const Providers = (props: ProviderProps) => { - const { children } = props + const { children, params } = props return ( - + {APP_NAME} diff --git a/src/lib/formatter.ts b/src/lib/formatter.ts index aed8191..f8e5b66 100644 --- a/src/lib/formatter.ts +++ b/src/lib/formatter.ts @@ -1,3 +1,5 @@ +// @ts-nocheck + import { format } from 'date-fns' import { AvailableCurrencies, CurrenciesMetadata } from '@/types/config' import { enUS, es } from 'date-fns/locale' diff --git a/src/translations/index.ts b/src/translations/index.ts new file mode 100644 index 0000000..7a1b82e --- /dev/null +++ b/src/translations/index.ts @@ -0,0 +1,14 @@ +import global_es from './locales/es/globals.json' +import global_en from './locales/en/globals.json' + +export type AvailableLanguages = 'es' | 'en' + +export const LanguagesList: AvailableLanguages[] = ['es', 'en'] +export const defaultLocale: AvailableLanguages = 'es' + +type DictionaryEntry = Record + +export const dictionaries: Record = { + en: global_en, + es: global_es +} diff --git a/src/translations/locales/en/globals.json b/src/translations/locales/en/globals.json new file mode 100644 index 0000000..fda31fb --- /dev/null +++ b/src/translations/locales/en/globals.json @@ -0,0 +1,61 @@ +{ + "HELLO": "Hello", + "BALANCE": "BALANCE", + "DEPOSIT": "Deposit", + "TRANSFER": "Transfer", + "LAST_ACTIVITY": "LAST ACTIVITY", + "SEE_ALL": "See all", + "USER": "User", + "START_USE_CARD": "Start using your card with these", + "FINISH_CARD_MODAL": "to finish it faster!", + "CONFIGURE_CARD": "CONFIGURING THE CARD WILL TAKE YOU LESS THAN", + "CONFIGURE_CARD_SECONDS": "60 SECONDS", + "REGISTER_USER": "Register your user", + "DEFINE_AMOUNT": "Enter an amount", + "WAITING_PAYMENT_OF": "Waiting for payment of", + "PAYMENT_RECEIVED": "Payment received", + "SCAN_QR": "Scan QR", + "SETTINGS": "Settings", + "HISTORY": "History", + "TODAY": "Today", + "YESTERDAY": "Yesterday", + "TRANSFER_MONEY": "Transfer money", + "TRANSFER_DATA_PLACEHOLDER": "Email, wallet, invoice...", + "LAST_RECIPIENTS": "Last recipients", + "AVAILABLE": "available", + "VALIDATE_INFO": "Validate the data", + "TRANSFER_TO": "You transferred to", + "YOU_PAID": "You paid", + "YOU_TRANSFER": "You transferred", + "YOU_SEND": "You sent", + "YOU_RECEIVE": "You received", + "PENDING": "Pending", + "PROCESSING": "Processing", + "CONFIRMED": "Confirmed", + "ERROR": "Error", + "STATUS": "Status", + "FEE": "Fee", + "DATE": "Date", + "CHANGE_LANGUAGE": "Change language", + "START": "Start", + "CONFIRM": "Confirm", + "CONTINUE": "Continue", + "CANCEL": "Cancel", + "COPY": "Copy", + "PASTE": "Paste", + "CREATE_INVOICE": "Create invoice", + "SCAN_QR_CODE": "Scan QR code", + "GENERATE": "Generate", + "LOGOUT": "Logout", + "CLOSE": "Close", + "GO_HOME": "Go home", + "SHARE": "Share", + "EMPTY_USERNAME": "Please enter a username", + "MAX_LENGTH_USERNAME": "Username cannot exceed 15 characters", + "INVALID_USERNAME": "You can only use alphanumeric characters", + "NAME_ALREADY_TAKEN": "The name you chose is already in use", + "INVALID_RECIPIENT": "The entered recipient is not valid", + "EMPTY_RECIPIENT": "Please enter a recipient", + "SHARE_INVOICE": "Share payment invoice", + "WAITING_PAYMENT": "Waiting for payment" +} diff --git a/src/translations/locales/es/globals.json b/src/translations/locales/es/globals.json new file mode 100644 index 0000000..16e5a93 --- /dev/null +++ b/src/translations/locales/es/globals.json @@ -0,0 +1,61 @@ +{ + "HELLO": "Hola", + "BALANCE": "BALANCE", + "DEPOSIT": "Depositar", + "TRANSFER": "Transferir", + "LAST_ACTIVITY": "ULTIMA ACTIVIDAD", + "SEE_ALL": "Ver todo", + "USER": "Usuario", + "START_USE_CARD": "Comienza a usar tu tarjeta con estos", + "FINISH_CARD_MODAL": "por terminarlo antes!", + "CONFIGURE_CARD": "CONFIGURAR LA TARJETA TE VA A LLEVAR MENOS DE", + "CONFIGURE_CARD_SECONDS": "60 SEGUNDOS", + "REGISTER_USER": "Registra tu usuario", + "DEFINE_AMOUNT": "Ingresa un monto", + "WAITING_PAYMENT_OF": "Esperando el pago de", + "PAYMENT_RECEIVED": "Pago recibido", + "SCAN_QR": "Escanear QR", + "SETTINGS": "Ajustes", + "HISTORY": "Historial", + "TODAY": "Hoy", + "YESTERDAY": "Ayer", + "TRANSFER_MONEY": "Transferir dinero", + "TRANSFER_DATA_PLACEHOLDER": "Correo, billetera, factura...", + "LAST_RECIPIENTS": "Ultimos destinos", + "AVAILABLE": "disponible", + "VALIDATE_INFO": "Valida los datos", + "TRANSFER_TO": "Le transferiste a", + "YOU_PAID": "Pagaste", + "YOU_TRANSFER": "Transferiste", + "YOU_SEND": "Enviaste", + "YOU_RECEIVE": "Recibiste", + "PENDING": "Pendiente", + "PROCESSING": "Procesando", + "CONFIRMED": "Confirmada", + "ERROR": "Error", + "STATUS": "Estado", + "FEE": "Comision", + "DATE": "Fecha", + "CHANGE_LANGUAGE": "Cambiar lenguaje", + "START": "Comenzar", + "CONFIRM": "Confirmar", + "CONTINUE": "Continuar", + "CANCEL": "Cancelar", + "COPY": "Copiar", + "PASTE": "Pegar", + "CREATE_INVOICE": "Crear factura", + "SCAN_QR_CODE": "Escanear código QR", + "GENERATE": "Generar", + "LOGOUT": "Cerrar sesion", + "CLOSE": "Cerrar", + "GO_HOME": "Ir al inicio", + "SHARE": "Compartir", + "EMPTY_USERNAME": "Escribe un nombre de usuario", + "MAX_LENGTH_USERNAME": "El nombre de usuario no puede superar los 15 caracteres", + "INVALID_USERNAME": "Solo puedes utilizar caracteres alfanuméricos", + "NAME_ALREADY_TAKEN": "El nombre que elegiste ya está en uso", + "INVALID_RECIPIENT": "El destinatario ingresado no es válido", + "EMPTY_RECIPIENT": "Escribe un destinatario", + "SHARE_INVOICE": "Compartir factura de pago", + "WAITING_PAYMENT": "Esperando el pago" +} From be5fba8db1ce65e820ffaee87750200a39a9973d Mon Sep 17 00:00:00 2001 From: Jona Date: Wed, 25 Oct 2023 04:20:22 -0300 Subject: [PATCH 008/159] chore: changed name on package.json --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 40e1f91..3a756b0 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "react-pos", + "name": "mobile-pos", "version": "0.1.0", "private": true, "scripts": { @@ -28,4 +28,4 @@ "eslint-config-next": "13.5.6", "typescript": "^5" } -} +} \ No newline at end of file From 0febf9bb6ad3b12ba7de5c56d836f6ced645df88 Mon Sep 17 00:00:00 2001 From: Jona Date: Wed, 25 Oct 2023 04:22:26 -0300 Subject: [PATCH 009/159] fix(component): size small for container on Sheet --- src/components/UI/Sheet/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/UI/Sheet/index.tsx b/src/components/UI/Sheet/index.tsx index a2452a5..f3fc4b2 100644 --- a/src/components/UI/Sheet/index.tsx +++ b/src/components/UI/Sheet/index.tsx @@ -44,7 +44,7 @@ export default function Component(props: ComponentProps) { - + {children} From 5381f4c93cc0b1186ce52d2bdd2e9835a8a711a9 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Wed, 25 Oct 2023 22:17:59 -0300 Subject: [PATCH 010/159] added .nvmrc --- .nvmrc | 1 + 1 file changed, 1 insertion(+) create mode 100644 .nvmrc diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..812d296 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v18.15 \ No newline at end of file From 193280b2c8144dbfee328b57f3fbfe19841fb58b Mon Sep 17 00:00:00 2001 From: Jona Date: Thu, 26 Oct 2023 13:56:55 -0300 Subject: [PATCH 011/159] feat(component): added Navbar --- src/components/Layout/Navbar/index.tsx | 37 ++++++++++++++++++++++++++ src/components/Layout/Navbar/style.tsx | 17 ++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 src/components/Layout/Navbar/index.tsx create mode 100644 src/components/Layout/Navbar/style.tsx diff --git a/src/components/Layout/Navbar/index.tsx b/src/components/Layout/Navbar/index.tsx new file mode 100644 index 0000000..321a96f --- /dev/null +++ b/src/components/Layout/Navbar/index.tsx @@ -0,0 +1,37 @@ +'use client' + +import { RefreshIcon } from '@bitcoin-design/bitcoin-icons-react/filled' + +import { Flex, Button } from '@/components/UI' +import Container from '../Container' + +import { Navbar } from './style' + +interface ComponentProps { + children?: any + theme?: 'primary' | 'secondary' +} + +export default function Component(props: ComponentProps) { + const { children, theme = 'primary' } = props + + return ( + + + + + {children} + + + + + + ) +} diff --git a/src/components/Layout/Navbar/style.tsx b/src/components/Layout/Navbar/style.tsx new file mode 100644 index 0000000..9f793b7 --- /dev/null +++ b/src/components/Layout/Navbar/style.tsx @@ -0,0 +1,17 @@ +'use client' + +import { styled } from 'styled-components' + +import theme from '@/styles/theme' + +interface NavbarProps { + $theme: 'primary' | 'secondary' +} + +export const Navbar = styled.div` + height: 60px; + + background-color: ${props => theme.colors[props.$theme]}; + + color: ${theme.colors.black}; +` From 4bda36466826a6ba4380ff9c163c7bc27a50aaf7 Mon Sep 17 00:00:00 2001 From: Jona Date: Thu, 26 Oct 2023 13:57:14 -0300 Subject: [PATCH 012/159] fix(page): integrated Navbar on Home --- src/app/page.tsx | 56 ++++++++++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 23 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index 82a681c..82e10c7 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -2,6 +2,7 @@ import { useContext } from 'react' import { useRouter } from 'next/navigation' +import { PantheonIcon } from '@bitcoin-design/bitcoin-icons-react/filled' import { LaWalletContext } from '@/context/LaWalletContext' import { formatToPreference } from '@/lib/formatter' @@ -11,11 +12,12 @@ import { Heading, Text, Divider, - LinkButton, Button, - Keyboard + Keyboard, + Icon } from '@/components/UI' import Container from '@/components/Layout/Container' +import Navbar from '@/components/Layout/Navbar' import TokenList from '@/components/TokenList' import { useNumpad } from '@/hooks/useNumpad' @@ -31,27 +33,35 @@ export default function Home() { } return ( - - - - - {userConfig.props.currency !== 'SAT' && $} - - {formatToPreference( - userConfig.props.currency, - numpadData.intAmount[numpadData.usedCurrency] - )} - + <> + + + + + Modo CAJA + + + + + + {userConfig.props.currency !== 'SAT' && $} + + {formatToPreference( + userConfig.props.currency, + numpadData.intAmount[numpadData.usedCurrency] + )} + + + - - - - - - - - - - + + + + + + + + + ) } From 541ac8ff463bcea6867748aebc493362f68c4be4 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Thu, 26 Oct 2023 14:07:52 -0300 Subject: [PATCH 013/159] added necessary packages --- package.json | 5 + pnpm-lock.yaml | 763 +++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 743 insertions(+), 25 deletions(-) diff --git a/package.json b/package.json index 3a756b0..f1a498c 100644 --- a/package.json +++ b/package.json @@ -10,13 +10,18 @@ }, "dependencies": { "@bitcoin-design/bitcoin-icons-react": "^0.1.10", + "@nostr-dev-kit/ndk": "^2.0.3", + "axios": "^1.5.1", "confetti-js": "^0.0.18", "date-fns": "^2.30.0", + "lnurl-pay": "^3.0.1", "next": "13.5.6", + "nostr-tools": "^1.17.0", "prettier": "^3.0.3", "react": "^18", "react-dom": "^18", "react-qr-code": "^2.0.12", + "react-use-storage": "^0.5.1", "sass": "^1.69.4", "styled-components": "^6.1.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d8be01e..b6fb214 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,15 +8,27 @@ dependencies: '@bitcoin-design/bitcoin-icons-react': specifier: ^0.1.10 version: 0.1.10(react@18.0.0) + '@nostr-dev-kit/ndk': + specifier: ^2.0.3 + version: 2.0.3(typescript@5.0.2) + axios: + specifier: ^1.5.1 + version: 1.5.1 confetti-js: specifier: ^0.0.18 version: 0.0.18 date-fns: specifier: ^2.30.0 version: 2.30.0 + lnurl-pay: + specifier: ^3.0.1 + version: 3.0.1 next: specifier: 13.5.6 version: 13.5.6(react-dom@18.0.0)(react@18.0.0)(sass@1.69.4) + nostr-tools: + specifier: ^1.17.0 + version: 1.17.0(typescript@5.0.2) prettier: specifier: ^3.0.3 version: 3.0.3 @@ -29,6 +41,9 @@ dependencies: react-qr-code: specifier: ^2.0.12 version: 2.0.12(react@18.0.0) + react-use-storage: + specifier: ^0.5.1 + version: 0.5.1(react-dom@18.0.0)(react@18.0.0) sass: specifier: ^1.69.4 version: 1.69.4 @@ -63,6 +78,31 @@ packages: engines: {node: '>=0.10.0'} dev: true + /@aws-crypto/sha256-js@5.2.0: + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.433.0 + tslib: 2.6.2 + dev: false + + /@aws-crypto/util@5.2.0: + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + dependencies: + '@aws-sdk/types': 3.433.0 + '@smithy/util-utf8': 2.0.0 + tslib: 2.6.2 + dev: false + + /@aws-sdk/types@3.433.0: + resolution: {integrity: sha512-0jEE2mSrNDd8VGFjTc1otYrwYPIkzZJEIK90ZxisKvQ/EURGBhNzWn7ejWB9XCMFT6XumYLBR0V9qq5UPisWtA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.4.0 + tslib: 2.6.2 + dev: false + /@babel/runtime@7.23.2: resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} engines: {node: '>=6.9.0'} @@ -214,6 +254,30 @@ packages: dev: false optional: true + /@noble/ciphers@0.2.0: + resolution: {integrity: sha512-6YBxJDAapHSdd3bLDv6x2wRPwq4QFMUaB3HvljNBUTThDd12eSm7/3F+2lnfzx2jvM+S6Nsy0jEt9QbPqSwqRw==} + dev: false + + /@noble/curves@1.1.0: + resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==} + dependencies: + '@noble/hashes': 1.3.1 + dev: false + + /@noble/hashes@1.3.1: + resolution: {integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==} + engines: {node: '>= 16'} + dev: false + + /@noble/hashes@1.3.2: + resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} + engines: {node: '>= 16'} + dev: false + + /@noble/secp256k1@2.0.0: + resolution: {integrity: sha512-rUGBd95e2a45rlmFTqQJYEFA4/gdIARFfuTuTqLglz0PZ6AKyzyXsEZZq7UZn8hZsvaBgpCzKKBJizT2cJERXw==} + dev: false + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -235,23 +299,96 @@ packages: fastq: 1.15.0 dev: true + /@nostr-dev-kit/ndk@2.0.3(typescript@5.0.2): + resolution: {integrity: sha512-rKIJBIU0dZHaXwj1TY18VSLYsoIe1aQ7TAxkH3WFx3lGTXCz+nlGh5bsyvgMBdbyb0iecdjsaKqBRpEWMzYC9g==} + dependencies: + '@noble/hashes': 1.3.2 + '@noble/secp256k1': 2.0.0 + '@scure/base': 1.1.1 + debug: 4.3.4 + eventemitter3: 5.0.1 + light-bolt11-decoder: 3.0.0 + node-fetch: 3.3.2 + nostr-tools: 1.17.0(typescript@5.0.2) + typescript-lru-cache: 2.0.0 + utf8-buffer: 1.0.0 + websocket-polyfill: 0.0.3 + transitivePeerDependencies: + - supports-color + - typescript + dev: false + /@rushstack/eslint-patch@1.5.1: resolution: {integrity: sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==} dev: true + /@scure/base@1.1.1: + resolution: {integrity: sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==} + dev: false + + /@scure/bip32@1.3.1: + resolution: {integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==} + dependencies: + '@noble/curves': 1.1.0 + '@noble/hashes': 1.3.2 + '@scure/base': 1.1.1 + dev: false + + /@scure/bip39@1.2.1: + resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} + dependencies: + '@noble/hashes': 1.3.2 + '@scure/base': 1.1.1 + dev: false + + /@smithy/is-array-buffer@2.0.0: + resolution: {integrity: sha512-z3PjFjMyZNI98JFRJi/U0nGoLWMSJlDjAW4QUX2WNZLas5C0CmVV6LJ01JI0k90l7FvpmixjWxPFmENSClQ7ug==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + dev: false + + /@smithy/types@2.4.0: + resolution: {integrity: sha512-iH1Xz68FWlmBJ9vvYeHifVMWJf82ONx+OybPW8ZGf5wnEv2S0UXcU4zwlwJkRXuLKpcSLHrraHbn2ucdVXLb4g==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + dev: false + + /@smithy/util-buffer-from@2.0.0: + resolution: {integrity: sha512-/YNnLoHsR+4W4Vf2wL5lGv0ksg8Bmk3GEGxn2vEQt52AQaPSCuaO5PM5VM7lP1K9qHRKHwrPGktqVoAHKWHxzw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/is-array-buffer': 2.0.0 + tslib: 2.6.2 + dev: false + + /@smithy/util-utf8@2.0.0: + resolution: {integrity: sha512-rctU1VkziY84n5OXe3bPNpKR001ZCME2JCaBBFgtiM2hfKbHFudc/BkMuPab8hRbLd0j3vbnBTTZ1igBf0wgiQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/util-buffer-from': 2.0.0 + tslib: 2.6.2 + dev: false + /@swc/helpers@0.5.2: resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} dependencies: tslib: 2.6.2 dev: false + /@types/bn.js@4.11.6: + resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} + dependencies: + '@types/node': 20.0.0 + dev: false + /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true /@types/node@20.0.0: resolution: {integrity: sha512-cD2uPTDnQQCVpmRefonO98/PPijuOnnEy5oytWJFPY1N9aJCz2wJ5kSGWO+zJoed2cY2JxQh6yBuUq4vIn61hw==} - dev: true /@types/prop-types@15.7.9: resolution: {integrity: sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==} @@ -356,6 +493,10 @@ packages: hasBin: true dev: true + /aes-js@3.1.2: + resolution: {integrity: sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==} + dev: false + /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -477,6 +618,16 @@ packages: is-shared-array-buffer: 1.0.2 dev: true + /assert@2.1.0: + resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} + dependencies: + call-bind: 1.0.5 + is-nan: 1.3.2 + object-is: 1.1.5 + object.assign: 4.1.4 + util: 0.12.5 + dev: false + /ast-types-flow@0.0.7: resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} dev: true @@ -487,16 +638,29 @@ packages: has-symbols: 1.0.3 dev: true + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: false + /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} - dev: true /axe-core@4.8.2: resolution: {integrity: sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g==} engines: {node: '>=4'} dev: true + /axios@1.5.1: + resolution: {integrity: sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==} + dependencies: + follow-redirects: 1.15.3 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false + /axobject-query@3.2.1: resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} dependencies: @@ -507,11 +671,61 @@ packages: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true + /base-x@4.0.0: + resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} + dev: false + + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: false + + /bech32@1.1.4: + resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} + dev: false + + /bech32@2.0.0: + resolution: {integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==} + dev: false + /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} dev: false + /bip174@2.1.1: + resolution: {integrity: sha512-mdFV5+/v0XyNYXjBS6CQPLo9ekCx4gtKZFnJm5PMto7Fs9hTTDpkkzOB7/FtluRI6JbUUAu+snTYfJRgHLZbZQ==} + engines: {node: '>=8.0.0'} + dev: false + + /bitcoinjs-lib@6.1.5: + resolution: {integrity: sha512-yuf6xs9QX/E8LWE2aMJPNd0IxGofwfuVOiYdNUESkc+2bHHVKjhJd8qewqapeoolh9fihzHGoDCB5Vkr57RZCQ==} + engines: {node: '>=8.0.0'} + dependencies: + '@noble/hashes': 1.3.2 + bech32: 2.0.0 + bip174: 2.1.1 + bs58check: 3.0.1 + typeforce: 1.18.0 + varuint-bitcoin: 1.1.2 + dev: false + + /bn.js@4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + dev: false + + /bolt11@1.4.1: + resolution: {integrity: sha512-jR0Y+MO+CK2at1Cg5mltLJ+6tdOwNKoTS/DJOBDdzVkQ+R9D6UgZMayTWOsuzY7OgV1gEqlyT5Tzk6t6r4XcNQ==} + dependencies: + '@types/bn.js': 4.11.6 + bech32: 1.1.4 + bitcoinjs-lib: 6.1.5 + bn.js: 4.12.0 + create-hash: 1.2.0 + lodash: 4.17.21 + safe-buffer: 5.2.1 + secp256k1: 4.0.3 + dev: false + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -525,6 +739,48 @@ packages: dependencies: fill-range: 7.0.1 + /brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + dev: false + + /browserify-zlib@0.2.0: + resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} + dependencies: + pako: 1.0.11 + dev: false + + /bs58@5.0.0: + resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} + dependencies: + base-x: 4.0.0 + dev: false + + /bs58check@3.0.1: + resolution: {integrity: sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ==} + dependencies: + '@noble/hashes': 1.3.2 + bs58: 5.0.0 + dev: false + + /buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false + + /bufferutil@4.0.8: + resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} + engines: {node: '>=6.14.2'} + requiresBuild: true + dependencies: + node-gyp-build: 4.6.1 + dev: false + + /builtin-status-codes@3.0.0: + resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} + dev: false + /busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} @@ -538,7 +794,6 @@ packages: function-bind: 1.1.2 get-intrinsic: 1.2.2 set-function-length: 1.1.1 - dev: true /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} @@ -576,6 +831,13 @@ packages: fsevents: 2.3.3 dev: false + /cipher-base@1.0.4: + resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: false + /client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} dev: false @@ -591,6 +853,13 @@ packages: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: true + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: false + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true @@ -599,6 +868,16 @@ packages: resolution: {integrity: sha512-0B7pYmZGBZuBkN32ydjWRpJLfRUT9KZYkQKkC4SGrAsUq0XE2DLY5foCWBXMXXVg7sFKs3qIb+qsDx1eFTeSvA==} dev: false + /create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + dependencies: + cipher-base: 1.0.4 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.2 + sha.js: 2.4.11 + dev: false + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -624,10 +903,22 @@ packages: /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + /d@1.0.1: + resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} + dependencies: + es5-ext: 0.10.62 + type: 1.2.0 + dev: false + /damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: true + /data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + dev: false + /date-fns@2.30.0: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} @@ -635,6 +926,17 @@ packages: '@babel/runtime': 7.23.2 dev: false + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: false + /debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -656,7 +958,6 @@ packages: optional: true dependencies: ms: 2.1.2 - dev: true /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -669,7 +970,6 @@ packages: get-intrinsic: 1.2.2 gopd: 1.0.1 has-property-descriptors: 1.0.1 - dev: true /define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} @@ -678,7 +978,11 @@ packages: define-data-property: 1.1.1 has-property-descriptors: 1.0.1 object-keys: 1.1.1 - dev: true + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: false /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} @@ -706,6 +1010,18 @@ packages: esutils: 2.0.3 dev: true + /elliptic@6.5.4: + resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: false + /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true @@ -814,6 +1130,31 @@ packages: is-symbol: 1.0.4 dev: true + /es5-ext@0.10.62: + resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} + engines: {node: '>=0.10'} + requiresBuild: true + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.3 + next-tick: 1.1.0 + dev: false + + /es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + dependencies: + d: 1.0.1 + es5-ext: 0.10.62 + es6-symbol: 3.1.3 + dev: false + + /es6-symbol@3.1.3: + resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} + dependencies: + d: 1.0.1 + ext: 1.7.0 + dev: false + /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -1109,6 +1450,16 @@ packages: engines: {node: '>=0.10.0'} dev: true + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + dev: false + + /ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + dependencies: + type: 2.7.2 + dev: false + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true @@ -1138,6 +1489,14 @@ packages: reusify: 1.0.4 dev: true + /fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.2.1 + dev: false + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -1164,11 +1523,36 @@ packages: resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} dev: true + /follow-redirects@1.15.3: + resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: false + /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 - dev: true + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: false + + /formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + dependencies: + fetch-blob: 3.2.0 + dev: false /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -1184,7 +1568,6 @@ packages: /function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - dev: true /function.prototype.name@1.1.6: resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} @@ -1211,7 +1594,6 @@ packages: has-proto: 1.0.1 has-symbols: 1.0.3 hasown: 2.0.0 - dev: true /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} @@ -1296,7 +1678,6 @@ packages: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: get-intrinsic: 1.2.2 - dev: true /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -1314,36 +1695,63 @@ packages: resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} dependencies: get-intrinsic: 1.2.2 - dev: true /has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} - dev: true /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - dev: true /has-tostringtag@1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 - dev: true /has@1.0.4: resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} engines: {node: '>= 0.4.0'} dev: true + /hash-base@3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + safe-buffer: 5.2.1 + dev: false + + /hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: false + /hasown@2.0.0: resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 - dev: true + + /hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: false + + /https-browserify@1.0.0: + resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} + dev: false + + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: false /ignore@4.0.6: resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} @@ -1381,7 +1789,6 @@ packages: /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: true /internal-slot@1.0.6: resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} @@ -1392,6 +1799,14 @@ packages: side-channel: 1.0.4 dev: true + /is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + dev: false + /is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: @@ -1431,7 +1846,6 @@ packages: /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - dev: true /is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} @@ -1461,7 +1875,6 @@ packages: engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - dev: true /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} @@ -1473,6 +1886,14 @@ packages: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} dev: true + /is-nan@1.3.2: + resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + dev: false + /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} @@ -1526,7 +1947,14 @@ packages: engines: {node: '>= 0.4'} dependencies: which-typed-array: 1.1.13 - dev: true + + /is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + dev: false + + /is-url@1.2.4: + resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} + dev: false /is-weakmap@2.0.1: resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} @@ -1626,10 +2054,42 @@ packages: type-check: 0.4.0 dev: true + /light-bolt11-decoder@3.0.0: + resolution: {integrity: sha512-AKvOigD2pmC8ktnn2TIqdJu0K0qk6ukUmTvHwF3JNkm8uWCqt18Ijn33A/a7gaRZ4PghJ59X+8+MXrzLKdBTmQ==} + dependencies: + '@scure/base': 1.1.1 + dev: false + + /lnurl-pay@3.0.1: + resolution: {integrity: sha512-sN5UJdEAgFRlrQkLM2++u+BlXyAuzQ0GpiK4RuWe2xIxPDQxO8lImbAg4M+LTTdTY78romFZHsx8gcmg7h092w==} + engines: {node: '>=16'} + dependencies: + '@aws-crypto/sha256-js': 5.2.0 + aes-js: 3.1.2 + assert: 2.1.0 + axios: 1.5.1 + base64-js: 1.5.1 + bech32: 2.0.0 + bolt11: 1.4.1 + browserify-zlib: 0.2.0 + buffer: 6.0.3 + https-browserify: 1.0.0 + is-url: 1.2.4 + stream-browserify: 3.0.0 + stream-http: 3.2.0 + tslib: 2.6.2 + transitivePeerDependencies: + - debug + dev: false + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: false + /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -1643,6 +2103,14 @@ packages: yallist: 4.0.0 dev: true + /md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: false + /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -1656,6 +2124,26 @@ packages: picomatch: 2.3.1 dev: true + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: false + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: false + + /minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + dev: false + + /minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + dev: false + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -1666,9 +2154,12 @@ packages: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: false + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -1684,6 +2175,10 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true + /next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + dev: false + /next@13.5.6(react-dom@18.0.0)(react@18.0.0)(sass@1.69.4): resolution: {integrity: sha512-Y2wTcTbO4WwEsVb4A8VSnOsG1I9ok+h74q0ZdxkwM3EODqrs4pasq7O0iUxbcS9VtWMicG7f3+HAj0r1+NtKSw==} engines: {node: '>=16.14.0'} @@ -1724,11 +2219,51 @@ packages: - babel-plugin-macros dev: false + /node-addon-api@2.0.2: + resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + dev: false + + /node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + dev: false + + /node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + dev: false + + /node-gyp-build@4.6.1: + resolution: {integrity: sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==} + hasBin: true + dev: false + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} dev: false + /nostr-tools@1.17.0(typescript@5.0.2): + resolution: {integrity: sha512-LZmR8GEWKZeElbFV5Xte75dOeE9EFUW/QLI1Ncn3JKn0kFddDKEfBbFN8Mu4TMs+L4HR/WTPha2l+PPuRnJcMw==} + peerDependencies: + typescript: '>=5.0.0' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@noble/ciphers': 0.2.0 + '@noble/curves': 1.1.0 + '@noble/hashes': 1.3.1 + '@scure/base': 1.1.1 + '@scure/bip32': 1.3.1 + '@scure/bip39': 1.2.1 + typescript: 5.0.2 + dev: false + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -1737,10 +2272,17 @@ packages: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} dev: true + /object-is@1.1.5: + resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + dev: false + /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - dev: true /object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} @@ -1750,7 +2292,6 @@ packages: define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 - dev: true /object.entries@1.1.7: resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} @@ -1813,6 +2354,10 @@ packages: type-check: 0.4.0 dev: true + /pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + dev: false + /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -1883,6 +2428,10 @@ packages: object-assign: 4.1.1 react-is: 16.13.1 + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: false + /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} @@ -1923,6 +2472,16 @@ packages: react: 18.0.0 dev: false + /react-use-storage@0.5.1(react-dom@18.0.0)(react@18.0.0): + resolution: {integrity: sha512-CUIjDuTZzJU5jpzdLuR+1uGwqQ6CnjbJYJf5eDBT5AdhHEQMSNbBAEjbN9ZculWQPiw0t5S3vyF0qoZnq7eweg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + dependencies: + react: 18.0.0 + react-dom: 18.0.0(react@18.0.0) + dev: false + /react@18.0.0: resolution: {integrity: sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==} engines: {node: '>=0.10.0'} @@ -1930,6 +2489,15 @@ packages: loose-envify: 1.4.0 dev: false + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: false + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -2005,6 +2573,13 @@ packages: glob: 7.2.3 dev: true + /ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + dev: false + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: @@ -2021,6 +2596,10 @@ packages: isarray: 2.0.5 dev: true + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: false + /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: @@ -2045,6 +2624,16 @@ packages: loose-envify: 1.4.0 dev: false + /secp256k1@4.0.3: + resolution: {integrity: sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==} + engines: {node: '>=10.0.0'} + requiresBuild: true + dependencies: + elliptic: 6.5.4 + node-addon-api: 2.0.2 + node-gyp-build: 4.6.1 + dev: false + /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -2066,7 +2655,6 @@ packages: get-intrinsic: 1.2.2 gopd: 1.0.1 has-property-descriptors: 1.0.1 - dev: true /set-function-name@2.0.1: resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} @@ -2077,6 +2665,14 @@ packages: has-property-descriptors: 1.0.1 dev: true + /sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: false + /shallowequal@1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} dev: false @@ -2111,6 +2707,22 @@ packages: engines: {node: '>=0.10.0'} dev: false + /stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: false + + /stream-http@3.2.0: + resolution: {integrity: sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==} + dependencies: + builtin-status-codes: 3.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + xtend: 4.0.2 + dev: false + /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} @@ -2155,6 +2767,12 @@ packages: es-abstract: 1.22.3 dev: true + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: false + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -2262,6 +2880,10 @@ packages: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: false + /tstl@2.5.13: + resolution: {integrity: sha512-h9wayHHFI5+yqt8iau0vqH96cTNhezhZ/Fk/hrIdpfkiMu3lg9nzyvMfs5bIdX51IVzZO6DudLqhkL/rVXpT6g==} + dev: false + /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -2274,6 +2896,14 @@ packages: engines: {node: '>=10'} dev: true + /type@1.2.0: + resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} + dev: false + + /type@2.7.2: + resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} + dev: false + /typed-array-buffer@1.0.0: resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} engines: {node: '>= 0.4'} @@ -2312,11 +2942,24 @@ packages: is-typed-array: 1.1.12 dev: true + /typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + dependencies: + is-typedarray: 1.0.0 + dev: false + + /typeforce@1.18.0: + resolution: {integrity: sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==} + dev: false + + /typescript-lru-cache@2.0.0: + resolution: {integrity: sha512-Jp57Qyy8wXeMkdNuZiglE6v2Cypg13eDA1chHwDG6kq51X7gk4K7P7HaDdzZKCxkegXkVHNcPD0n5aW6OZH3aA==} + dev: false + /typescript@5.0.2: resolution: {integrity: sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==} engines: {node: '>=12.20'} hasBin: true - dev: true /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} @@ -2333,10 +2976,43 @@ packages: punycode: 2.3.0 dev: true + /utf-8-validate@5.0.10: + resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} + engines: {node: '>=6.14.2'} + requiresBuild: true + dependencies: + node-gyp-build: 4.6.1 + dev: false + + /utf8-buffer@1.0.0: + resolution: {integrity: sha512-ueuhzvWnp5JU5CiGSY4WdKbiN/PO2AZ/lpeLiz2l38qwdLy/cW40XobgyuIWucNyum0B33bVB0owjFCeGBSLqg==} + engines: {node: '>=8'} + dev: false + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: false + + /util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + dependencies: + inherits: 2.0.4 + is-arguments: 1.1.1 + is-generator-function: 1.0.10 + is-typed-array: 1.1.12 + which-typed-array: 1.1.13 + dev: false + /v8-compile-cache@2.4.0: resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} dev: true + /varuint-bitcoin@1.1.2: + resolution: {integrity: sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw==} + dependencies: + safe-buffer: 5.2.1 + dev: false + /watchpack@2.4.0: resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} engines: {node: '>=10.13.0'} @@ -2345,6 +3021,34 @@ packages: graceful-fs: 4.2.11 dev: false + /web-streams-polyfill@3.2.1: + resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} + engines: {node: '>= 8'} + dev: false + + /websocket-polyfill@0.0.3: + resolution: {integrity: sha512-pF3kR8Uaoau78MpUmFfzbIRxXj9PeQrCuPepGE6JIsfsJ/o/iXr07Q2iQNzKSSblQJ0FiGWlS64N4pVSm+O3Dg==} + dependencies: + tstl: 2.5.13 + websocket: 1.0.34 + transitivePeerDependencies: + - supports-color + dev: false + + /websocket@1.0.34: + resolution: {integrity: sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==} + engines: {node: '>=4.0.0'} + dependencies: + bufferutil: 4.0.8 + debug: 2.6.9 + es5-ext: 0.10.62 + typedarray-to-buffer: 3.1.5 + utf-8-validate: 5.0.10 + yaeti: 0.0.6 + transitivePeerDependencies: + - supports-color + dev: false + /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: @@ -2391,7 +3095,6 @@ packages: for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.0 - dev: true /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} @@ -2405,6 +3108,16 @@ packages: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true + /xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + dev: false + + /yaeti@0.0.6: + resolution: {integrity: sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==} + engines: {node: '>=0.10.32'} + dev: false + /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true From 13acfa619685b62616bc0cb0178d1f004bdb3687 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Thu, 26 Oct 2023 14:07:58 -0300 Subject: [PATCH 014/159] ignore .env --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 8f322f0..45c1abc 100644 --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,7 @@ yarn-error.log* # local env files .env*.local +.env # vercel .vercel From 495c459d2375e75f7246dbde1d2dfed20828ec34 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Thu, 26 Oct 2023 14:08:03 -0300 Subject: [PATCH 015/159] added .env example --- .env.example | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .env.example diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..fd63f94 --- /dev/null +++ b/.env.example @@ -0,0 +1,2 @@ +NEXT_PUBLIC_DESTINATION=pozo@lacrypta.ar +NEXT_PUBLIC_NOSTR_RELAY=wss://relay.damus.io/ \ No newline at end of file From 18384f356702141024690c130b9dba0ed01834e1 Mon Sep 17 00:00:00 2001 From: Jona Date: Thu, 26 Oct 2023 14:26:09 -0300 Subject: [PATCH 016/159] fix(component): integrated disabled for Keyboard --- src/components/UI/Keyboard/index.tsx | 73 +++++++++++++++++++++++----- 1 file changed, 61 insertions(+), 12 deletions(-) diff --git a/src/components/UI/Keyboard/index.tsx b/src/components/UI/Keyboard/index.tsx index b14071a..bf9af71 100644 --- a/src/components/UI/Keyboard/index.tsx +++ b/src/components/UI/Keyboard/index.tsx @@ -6,9 +6,13 @@ import { IUseNumpad } from '@/hooks/useNumpad' const timeOut: Record = {} type KeyboardProps = { numpadData: IUseNumpad + disabled: boolean } -export default function Component({ numpadData }: KeyboardProps) { +export default function Component({ + numpadData, + disabled = false +}: KeyboardProps) { const { handleNumpad, resetAmount, deleteNumber } = numpadData const handleDeleteOnMouseDown = () => @@ -19,43 +23,87 @@ export default function Component({ numpadData }: KeyboardProps) { return ( - - - - - - - - - - - From a681c182fbea001216ea997c2e749d9d6e7dfea7 Mon Sep 17 00:00:00 2001 From: Jona Date: Thu, 26 Oct 2023 14:26:30 -0300 Subject: [PATCH 017/159] fix(component): changed mode integrated on Navbar --- src/components/Layout/Navbar/index.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/Layout/Navbar/index.tsx b/src/components/Layout/Navbar/index.tsx index 321a96f..206b95a 100644 --- a/src/components/Layout/Navbar/index.tsx +++ b/src/components/Layout/Navbar/index.tsx @@ -2,7 +2,7 @@ import { RefreshIcon } from '@bitcoin-design/bitcoin-icons-react/filled' -import { Flex, Button } from '@/components/UI' +import { Flex, LinkButton } from '@/components/UI' import Container from '../Container' import { Navbar } from './style' @@ -22,14 +22,14 @@ export default function Component(props: ComponentProps) { {children} - + From 85f685263816ea509ec9bd5ad25f742125f36200 Mon Sep 17 00:00:00 2001 From: Jona Date: Thu, 26 Oct 2023 14:27:05 -0300 Subject: [PATCH 018/159] feat(page): added Tree --- src/app/tree/layout.tsx | 13 +++++++ src/app/tree/page.tsx | 86 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 src/app/tree/layout.tsx create mode 100644 src/app/tree/page.tsx diff --git a/src/app/tree/layout.tsx b/src/app/tree/layout.tsx new file mode 100644 index 0000000..ded06fa --- /dev/null +++ b/src/app/tree/layout.tsx @@ -0,0 +1,13 @@ +import type { Metadata } from 'next' + +export const metadata: Metadata = { + title: 'Arbolito - LaPOS' +} + +export default function RootLayout({ + children +}: { + children: React.ReactNode +}) { + return <>{children} +} diff --git a/src/app/tree/page.tsx b/src/app/tree/page.tsx new file mode 100644 index 0000000..2900162 --- /dev/null +++ b/src/app/tree/page.tsx @@ -0,0 +1,86 @@ +'use client' + +import { useContext, useState } from 'react' +import { useRouter } from 'next/navigation' +import { SharedWalletIcon } from '@bitcoin-design/bitcoin-icons-react/filled' + +import { LaWalletContext } from '@/context/LaWalletContext' +import { formatToPreference } from '@/lib/formatter' + +import { + Flex, + Heading, + Text, + Divider, + Button, + Keyboard, + Icon +} from '@/components/UI' +import Container from '@/components/Layout/Container' +import Navbar from '@/components/Layout/Navbar' +import TokenList from '@/components/TokenList' +import { useNumpad } from '@/hooks/useNumpad' + +export default function Home() { + const router = useRouter() + + const { userConfig } = useContext(LaWalletContext) + const numpadData = useNumpad(userConfig.props.currency) + + const [cardScanned, setCardScanned] = useState(true) + + const handleClick = () => { + // POC + router.push('/payment') + } + + return ( + <> + + + + + Modo ARBOLITO + + + + + {cardScanned ? ( + <> + + {userConfig.props.currency !== 'SAT' && $} + + {formatToPreference( + userConfig.props.currency, + numpadData.intAmount[numpadData.usedCurrency] + )} + + + + + ) : ( + + Escaneando receptor... + + Acerca la tarjeta de quien desea cargar su tarjeta mediante NFC. + + + )} + + + + + + + + + + + ) +} From 6e8a3f020b3876577127613beaa02303807fc89e Mon Sep 17 00:00:00 2001 From: Jona Date: Thu, 26 Oct 2023 14:28:14 -0300 Subject: [PATCH 019/159] fix(component): prop disabled for Keyboard --- src/components/UI/Keyboard/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/UI/Keyboard/index.tsx b/src/components/UI/Keyboard/index.tsx index bf9af71..1019da5 100644 --- a/src/components/UI/Keyboard/index.tsx +++ b/src/components/UI/Keyboard/index.tsx @@ -6,7 +6,7 @@ import { IUseNumpad } from '@/hooks/useNumpad' const timeOut: Record = {} type KeyboardProps = { numpadData: IUseNumpad - disabled: boolean + disabled?: boolean } export default function Component({ From 868e88184c7ce774e32b67afae419179a31ee018 Mon Sep 17 00:00:00 2001 From: Jona Date: Thu, 26 Oct 2023 14:30:26 -0300 Subject: [PATCH 020/159] fix(page): show message for scan nfc on Tree --- src/app/tree/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/tree/page.tsx b/src/app/tree/page.tsx index 2900162..52035b3 100644 --- a/src/app/tree/page.tsx +++ b/src/app/tree/page.tsx @@ -27,7 +27,7 @@ export default function Home() { const { userConfig } = useContext(LaWalletContext) const numpadData = useNumpad(userConfig.props.currency) - const [cardScanned, setCardScanned] = useState(true) + const [cardScanned, setCardScanned] = useState(false) const handleClick = () => { // POC From d71a321c192f6c2c0cb3b18b00a0edb0d95c96ae Mon Sep 17 00:00:00 2001 From: Jona Date: Thu, 26 Oct 2023 15:39:12 -0300 Subject: [PATCH 021/159] feat(component): added Card custom --- src/components/UI/Card/index.tsx | 12 +++++++++ src/components/UI/Card/style.tsx | 44 ++++++++++++++++++++++++++++++++ src/components/UI/index.tsx | 1 + 3 files changed, 57 insertions(+) create mode 100644 src/components/UI/Card/index.tsx create mode 100644 src/components/UI/Card/style.tsx diff --git a/src/components/UI/Card/index.tsx b/src/components/UI/Card/index.tsx new file mode 100644 index 0000000..252baed --- /dev/null +++ b/src/components/UI/Card/index.tsx @@ -0,0 +1,12 @@ +import { Card } from './style' + +interface ComponentProps { + children: any + color?: 'primary' | 'secondary' +} + +export default function Component(props: ComponentProps) { + const { children, color = 'primary' } = props + + return {children} +} diff --git a/src/components/UI/Card/style.tsx b/src/components/UI/Card/style.tsx new file mode 100644 index 0000000..1b4686d --- /dev/null +++ b/src/components/UI/Card/style.tsx @@ -0,0 +1,44 @@ +import { styled } from 'styled-components' + +import theme from '@/styles/theme' + +interface CardProps { + $color: 'primary' | 'secondary' +} + +export const Card = styled.div` + width: 100%; + height: 200px; + + padding: 8px 16px; + + background-color: ${props => theme.colors[props.$color]}; + border-radius: 12px; + + a { + display: flex; + flex-direction: column; + justify-content: center; + gap: 8px; + width: 100%; + height: 100%; + + color: ${theme.colors.black}; + text-decoration: none; + + > div { + &:first-child { + width: 50px; + height: 50px; + + background-color: ${theme.colors.white}; + border-radius: 50px; + + svg { + width: 24px; + height: 24px; + } + } + } + } +` diff --git a/src/components/UI/index.tsx b/src/components/UI/index.tsx index 64f9241..fe333a9 100644 --- a/src/components/UI/index.tsx +++ b/src/components/UI/index.tsx @@ -10,3 +10,4 @@ export { default as Icon } from './Icon' export { default as Keyboard } from './Keyboard' export { default as Confetti } from './Confetti' export { default as Sheet } from './Sheet' +export { default as Card } from './Card' From 5c9d9019fe6cd831f921b19dd43b183524aeb537 Mon Sep 17 00:00:00 2001 From: Jona Date: Thu, 26 Oct 2023 15:39:31 -0300 Subject: [PATCH 022/159] feat(page): added Paydesk --- src/app/paydesk/layout.tsx | 13 ++++++++ src/app/paydesk/page.tsx | 67 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 src/app/paydesk/layout.tsx create mode 100644 src/app/paydesk/page.tsx diff --git a/src/app/paydesk/layout.tsx b/src/app/paydesk/layout.tsx new file mode 100644 index 0000000..54034a1 --- /dev/null +++ b/src/app/paydesk/layout.tsx @@ -0,0 +1,13 @@ +import type { Metadata } from 'next' + +export const metadata: Metadata = { + title: 'Caja - LaPOS' +} + +export default function RootLayout({ + children +}: { + children: React.ReactNode +}) { + return <>{children} +} diff --git a/src/app/paydesk/page.tsx b/src/app/paydesk/page.tsx new file mode 100644 index 0000000..82e10c7 --- /dev/null +++ b/src/app/paydesk/page.tsx @@ -0,0 +1,67 @@ +'use client' + +import { useContext } from 'react' +import { useRouter } from 'next/navigation' +import { PantheonIcon } from '@bitcoin-design/bitcoin-icons-react/filled' + +import { LaWalletContext } from '@/context/LaWalletContext' +import { formatToPreference } from '@/lib/formatter' + +import { + Flex, + Heading, + Text, + Divider, + Button, + Keyboard, + Icon +} from '@/components/UI' +import Container from '@/components/Layout/Container' +import Navbar from '@/components/Layout/Navbar' +import TokenList from '@/components/TokenList' +import { useNumpad } from '@/hooks/useNumpad' + +export default function Home() { + const router = useRouter() + + const { userConfig } = useContext(LaWalletContext) + const numpadData = useNumpad(userConfig.props.currency) + + const handleClick = () => { + // POC + router.push('/payment') + } + + return ( + <> + + + + + Modo CAJA + + + + + + {userConfig.props.currency !== 'SAT' && $} + + {formatToPreference( + userConfig.props.currency, + numpadData.intAmount[numpadData.usedCurrency] + )} + + + + + + + + + + + + + + ) +} From ded3517dca16080da5726df63623163e7e09d5bb Mon Sep 17 00:00:00 2001 From: Jona Date: Thu, 26 Oct 2023 15:39:49 -0300 Subject: [PATCH 023/159] fix(page): new structure for Home --- src/app/page.tsx | 81 +++++++++++++++++++----------------------------- 1 file changed, 32 insertions(+), 49 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index 82e10c7..6679c38 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,66 +1,49 @@ 'use client' -import { useContext } from 'react' -import { useRouter } from 'next/navigation' -import { PantheonIcon } from '@bitcoin-design/bitcoin-icons-react/filled' - -import { LaWalletContext } from '@/context/LaWalletContext' -import { formatToPreference } from '@/lib/formatter' - +import Link from 'next/link' import { - Flex, - Heading, - Text, - Divider, - Button, - Keyboard, - Icon -} from '@/components/UI' + PantheonIcon, + SharedWalletIcon +} from '@bitcoin-design/bitcoin-icons-react/filled' + +import { Flex, Heading, Text, Divider, Icon, Card } from '@/components/UI' import Container from '@/components/Layout/Container' -import Navbar from '@/components/Layout/Navbar' -import TokenList from '@/components/TokenList' -import { useNumpad } from '@/hooks/useNumpad' export default function Home() { - const router = useRouter() - - const { userConfig } = useContext(LaWalletContext) - const numpadData = useNumpad(userConfig.props.currency) - - const handleClick = () => { - // POC - router.push('/payment') - } - return ( <> - - - - - Modo CAJA - - - {userConfig.props.currency !== 'SAT' && $} - - {formatToPreference( - userConfig.props.currency, - numpadData.intAmount[numpadData.usedCurrency] - )} - + Selecciona un modo: + + + + + + + + Arbolito + + Transferi dinero de una tarjeta a otra. + + + + + + + + + + + Caja + Medio de cobro para tu negocio. + + + - - - - - - - ) From 6ad941b1c4278f5651c2ca583d3b9985a85bbf5b Mon Sep 17 00:00:00 2001 From: Jona Date: Thu, 26 Oct 2023 15:41:03 -0300 Subject: [PATCH 024/159] fix(page): default name component for all pages --- src/app/page.tsx | 2 +- src/app/paydesk/page.tsx | 2 +- src/app/payment/page.tsx | 2 +- src/app/tree/page.tsx | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index 6679c38..c15fe04 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -9,7 +9,7 @@ import { import { Flex, Heading, Text, Divider, Icon, Card } from '@/components/UI' import Container from '@/components/Layout/Container' -export default function Home() { +export default function Page() { return ( <> diff --git a/src/app/paydesk/page.tsx b/src/app/paydesk/page.tsx index 82e10c7..21644f9 100644 --- a/src/app/paydesk/page.tsx +++ b/src/app/paydesk/page.tsx @@ -21,7 +21,7 @@ import Navbar from '@/components/Layout/Navbar' import TokenList from '@/components/TokenList' import { useNumpad } from '@/hooks/useNumpad' -export default function Home() { +export default function Page() { const router = useRouter() const { userConfig } = useContext(LaWalletContext) diff --git a/src/app/payment/page.tsx b/src/app/payment/page.tsx index 512addb..7249984 100644 --- a/src/app/payment/page.tsx +++ b/src/app/payment/page.tsx @@ -30,7 +30,7 @@ import { useNumpad } from '@/hooks/useNumpad' import theme from '@/styles/theme' -export default function Home() { +export default function Page() { const router = useRouter() const { userConfig } = useContext(LaWalletContext) diff --git a/src/app/tree/page.tsx b/src/app/tree/page.tsx index 52035b3..c2dc0b1 100644 --- a/src/app/tree/page.tsx +++ b/src/app/tree/page.tsx @@ -21,7 +21,7 @@ import Navbar from '@/components/Layout/Navbar' import TokenList from '@/components/TokenList' import { useNumpad } from '@/hooks/useNumpad' -export default function Home() { +export default function Page() { const router = useRouter() const { userConfig } = useContext(LaWalletContext) From 0667e746aeead11df8c0a611c12d6cf349199290 Mon Sep 17 00:00:00 2001 From: Jona Date: Thu, 26 Oct 2023 15:41:20 -0300 Subject: [PATCH 025/159] fix(component): changed link for themes on Navbar --- src/components/Layout/Navbar/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Layout/Navbar/index.tsx b/src/components/Layout/Navbar/index.tsx index 206b95a..1168318 100644 --- a/src/components/Layout/Navbar/index.tsx +++ b/src/components/Layout/Navbar/index.tsx @@ -23,7 +23,7 @@ export default function Component(props: ComponentProps) { {children} Date: Thu, 26 Oct 2023 16:16:28 -0300 Subject: [PATCH 026/159] add bolt11 --- package.json | 1 + pnpm-lock.yaml | 3 +++ 2 files changed, 4 insertions(+) diff --git a/package.json b/package.json index f1a498c..97771fc 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "@bitcoin-design/bitcoin-icons-react": "^0.1.10", "@nostr-dev-kit/ndk": "^2.0.3", "axios": "^1.5.1", + "bolt11": "^1.4.1", "confetti-js": "^0.0.18", "date-fns": "^2.30.0", "lnurl-pay": "^3.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b6fb214..48a842c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,6 +14,9 @@ dependencies: axios: specifier: ^1.5.1 version: 1.5.1 + bolt11: + specifier: ^1.4.1 + version: 1.4.1 confetti-js: specifier: ^0.0.18 version: 0.0.18 From 4b0cd30ae8b0cd3ab79098f7d6a1cbb0370a8b56 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Thu, 26 Oct 2023 16:20:30 -0300 Subject: [PATCH 027/159] added utils --- src/lib/utils.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/lib/utils.ts diff --git a/src/lib/utils.ts b/src/lib/utils.ts new file mode 100644 index 0000000..b776895 --- /dev/null +++ b/src/lib/utils.ts @@ -0,0 +1,17 @@ +// Libs +import bolt11 from 'bolt11' + +// Types +import type { IOrderEventContent } from '@/types/order' +import type { Event } from 'nostr-tools' + +export const parseOrderDescription = (event: Event): IOrderEventContent => { + return JSON.parse( + event.tags.find(tag => tag[0] === 'description')![1]! + ) as IOrderEventContent +} + +export const parseZapInvoice = (event: Event): bolt11.PaymentRequestObject => { + const paidInvoice = event.tags.find(tag => tag[0] === 'bolt11')?.[1] + return bolt11.decode(paidInvoice!) +} From 71e4b3a17a941d90ef2a99ed35202cfc2a4065f2 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Thu, 26 Oct 2023 16:20:38 -0300 Subject: [PATCH 028/159] added types --- src/types/lightning.ts | 6 ++++++ src/types/order.ts | 4 ++++ 2 files changed, 10 insertions(+) create mode 100644 src/types/lightning.ts create mode 100644 src/types/order.ts diff --git a/src/types/lightning.ts b/src/types/lightning.ts new file mode 100644 index 0000000..2d00eef --- /dev/null +++ b/src/types/lightning.ts @@ -0,0 +1,6 @@ +import type { Event } from 'nostr-tools' + +export interface InvoiceRequest { + amountMillisats: number + zapEvent?: Event +} diff --git a/src/types/order.ts b/src/types/order.ts new file mode 100644 index 0000000..796289f --- /dev/null +++ b/src/types/order.ts @@ -0,0 +1,4 @@ +export interface IOrderEventContent { + amount: number + vote: number +} From 48853fd31cf7c1a7ba1056aa5dfa2d935c11bbd4 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Thu, 26 Oct 2023 16:20:51 -0300 Subject: [PATCH 029/159] added contexts --- src/context/LN.tsx | 81 +++++++++++++ src/context/Nostr.tsx | 172 ++++++++++++++++++++++++++++ src/context/Order.tsx | 257 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 510 insertions(+) create mode 100644 src/context/LN.tsx create mode 100644 src/context/Nostr.tsx create mode 100644 src/context/Order.tsx diff --git a/src/context/LN.tsx b/src/context/LN.tsx new file mode 100644 index 0000000..582b0b7 --- /dev/null +++ b/src/context/LN.tsx @@ -0,0 +1,81 @@ +'use client' + +// React +import { + createContext, + useCallback, + useContext, + useEffect, + useState +} from 'react' + +// Interface +export interface ILNContext { + recipientPubkey?: string + callbackUrl?: string + destination?: string + requestInvoice?: (_req: InvoiceRequest) => Promise +} + +import { requestPayServiceParams } from 'lnurl-pay' +import axios from 'axios' +import type { InvoiceRequest } from '@/types/lightning' + +// Context +export const LNContext = createContext({}) + +// Component Props +interface ILNProviderProps { + children: React.ReactNode +} + +const DESTINATION_LNURL = process.env.NEXT_PUBLIC_DESTINATION! + +export const LNProvider = ({ children }: ILNProviderProps) => { + const [recipientPubkey, setRecipientPubkey] = useState() + const [callbackUrl, setCallbackUrl] = useState() + + const fetchLNURL = useCallback(async () => { + console.info('FETCHING LNURL') + const lud06 = await requestPayServiceParams({ + lnUrlOrAddress: DESTINATION_LNURL + }) + + // TODO: Check if lud06 is valid + setRecipientPubkey(lud06.rawData.nostrPubkey as string) + setCallbackUrl(lud06.callback) + }, []) + + const requestInvoice = useCallback( + async ({ amountMillisats, zapEvent }: InvoiceRequest): Promise => { + const encodedZapEvent = encodeURI(JSON.stringify(zapEvent)) + const url = `${callbackUrl}?amount=${amountMillisats}&nostr=${encodedZapEvent}&lnurl=${DESTINATION_LNURL}` + console.dir(url) + const response = await axios.get(url) + return response.data.pr as string + }, + [callbackUrl] + ) + + useEffect(() => { + void fetchLNURL() + }, [fetchLNURL]) + + return ( + + {children} + + ) +} + +// Export hook +export const useLN = () => { + return useContext(LNContext) +} diff --git a/src/context/Nostr.tsx b/src/context/Nostr.tsx new file mode 100644 index 0000000..a9b736f --- /dev/null +++ b/src/context/Nostr.tsx @@ -0,0 +1,172 @@ +'use client' + +// React +import { + createContext, + useCallback, + useContext, + useEffect, + useState +} from 'react' + +// Types +import type { Event, UnsignedEvent } from 'nostr-tools' + +// Utils +import { + generatePrivateKey, + getEventHash, + getPublicKey, + getSignature, + nip44, + relayInit +} from 'nostr-tools' +import { useLocalStorage } from 'react-use-storage' + +// Hooks +import { useLN } from './LN' + +// Interfaces +export interface INostrContext { + localPublicKey?: string + localPrivateKey?: string + relays?: string[] + ndk: NDK + generateZapEvent?: (amountMillisats: number, postEventId?: string) => NDKEvent + subscribeZap?: (eventId: string) => NDKSubscription + getEvent?: (eventId: string) => Promise + publish?: (_event: Event) => Promise> +} + +const NOSTR_RELAY = process.env.NEXT_PUBLIC_NOSTR_RELAY! + +const relays = [NOSTR_RELAY, 'wss://relay.hodl.ar'] +const relayPool = relayInit(NOSTR_RELAY) + +// Context +const ndk = new NDK({ + explicitRelayUrls: relays +}) + +export const NostrContext = createContext({ ndk }) + +// Component Props +interface INostrProviderProps { + children: React.ReactNode +} + +import NDK, { + NDKEvent, + type NDKRelay, + type NDKSubscription +} from '@nostr-dev-kit/ndk' + +export const NostrProvider = ({ children }: INostrProviderProps) => { + const { recipientPubkey, destination } = useLN() + // const [privateKey, setPrivateKey] = useState() + const [privateKey] = useLocalStorage('nostrPrivateKey', generatePrivateKey()) + const [publicKey, setPublicKey] = useState() + + const generateZapEvent = useCallback( + (amountMillisats: number, postEventId?: string): NDKEvent => { + const unsignedEvent: UnsignedEvent = { + kind: 9734, + content: '', + pubkey: publicKey!, + created_at: Math.round(Date.now() / 1000), + tags: [ + ['relays', ...relays], + ['amount', amountMillisats.toString()], + ['lnurl', destination], + ['p', recipientPubkey] + ] as string[][] + } + + postEventId && unsignedEvent.tags.push(['e', postEventId]) + + const event = new NDKEvent(ndk, { + id: getEventHash(unsignedEvent), + sig: getSignature(unsignedEvent, privateKey!), + ...unsignedEvent + }) + + console.info('zap event: ') + console.dir(event) + + return event + }, + [destination, recipientPubkey, privateKey, publicKey] + ) + + const subscribeZap = (eventId: string): NDKSubscription => { + console.info(`Listening for zap (${eventId})...`) + console.info(`Recipient pubkey: ${recipientPubkey}`) + const sub = ndk.subscribe( + [ + { + kinds: [9735], + authors: [recipientPubkey!], + '#e': [eventId], + since: 1693157776 + } + ], + { + closeOnEose: false, + groupableDelay: 0 + } + ) + return sub + } + + const getEvent = async (eventId: string): Promise => { + return ndk.fetchEvent({ + ids: [eventId] + }) + } + + const publish = async (event: Event): Promise> => { + const ndkEvent = new NDKEvent(ndk, event) + return ndkEvent.publish() + } + + useEffect(() => { + console.info('Connecting....') + void ndk.connect().then(() => { + console.info('Connected') + }) + + return () => { + console.info('Unsubscribed') + relayPool.close() + } + }, []) + + useEffect(() => { + // Generate Public key + const _publicKey = getPublicKey(privateKey!) + + setPublicKey(_publicKey) + }, [privateKey]) + + return ( + + {children} + + ) +} + +// Export hook +export const useNostr = () => { + return useContext(NostrContext) +} diff --git a/src/context/Order.tsx b/src/context/Order.tsx new file mode 100644 index 0000000..dd03f55 --- /dev/null +++ b/src/context/Order.tsx @@ -0,0 +1,257 @@ +'use client' + +// React +import { + createContext, + useCallback, + useContext, + useEffect, + useState +} from 'react' + +// Types +import type { Dispatch, SetStateAction } from 'react' +import type { Event, UnsignedEvent } from 'nostr-tools' +import { useLN } from './LN' +import type { NDKEvent, NostrEvent } from '@nostr-dev-kit/ndk' + +// Utils +import { useNostr } from './Nostr' +import { parseOrderDescription, parseZapInvoice } from '@/lib/utils' +import { getEventHash, getSignature, nip44, validateEvent } from 'nostr-tools' +import bolt11 from 'bolt11' + +// Interface +export interface IOrderContext { + orderId?: string + amount: number + pendingAmount: number + fiatAmount: number + fiatCurrency?: string + zapEvents: NostrEvent[] + currentInvoice?: string + memo: unknown + setMemo: Dispatch> + setAmount: Dispatch> + checkOut: () => Promise<{ eventId: string }> + setCurrentInvoice?: Dispatch> + setOrderEvent?: Dispatch> + generateOrderEvent?: () => Event + setFiatAmount: Dispatch> + addZapEvent?: (event: NDKEvent) => void + requestZapInvoice?: ( + amountMillisats: number, + orderEventId: string + ) => Promise +} + +// Context +export const OrderContext = createContext({ + amount: 0, + pendingAmount: 0, + fiatAmount: 0, + zapEvents: [], + fiatCurrency: 'ARS', + checkOut: function (): Promise<{ eventId: string }> { + throw new Error('Function not implemented.') + }, + setAmount: function (): void { + throw new Error('Function not implemented.') + }, + setFiatAmount: function (): void { + throw new Error('Function not implemented.') + }, + memo: undefined, + setMemo: function (_value: unknown): void { + throw new Error('Function not implemented.') + } +}) + +// Component Props +interface IOrderProviderProps { + children: React.ReactNode +} + +const NEXT_PUBLIC_ENCRYPT_PUBLIC_KEY = process.env + .NEXT_PUBLIC_ENCRYPT_PUBLIC_KEY as string + +export const OrderProvider = ({ children }: IOrderProviderProps) => { + const [orderId, setOrderId] = useState() + const [orderEvent, setOrderEvent] = useState() + const [amount, setAmount] = useState(0) + const [memo, setMemo] = useState({}) + const [currentInvoice, setCurrentInvoice] = useState() + const [pendingAmount, setPendingAmount] = useState(0) + const [fiatAmount, setFiatAmount] = useState(0) + const [fiatCurrency, setFiatCurrency] = useState('ARS') + const [zapEvents, setZapEvents] = useState([]) + + const { relays, localPublicKey, localPrivateKey, generateZapEvent } = + useNostr() + const { requestInvoice, recipientPubkey } = useLN() + const { subscribeZap, publish } = useNostr() + + // on orderEvent change + useEffect(() => { + if (!orderEvent) { + setOrderId(undefined) + setAmount(0) + setPendingAmount(0) + setFiatAmount(0) + setFiatCurrency('ARS') + return + } + + const description = parseOrderDescription(orderEvent as Event) + + setOrderId(orderEvent.id) + setAmount(description.amount) + setPendingAmount(description.amount) + // setFiatAmount(description.fiatAmount) + // setFiatCurrency(description.fiatCurrency) + }, [orderEvent]) + + // Subscribe for zaps + useEffect(() => { + if (!orderId || !recipientPubkey) { + return + } + + console.info(`Subscribing for ${orderId}...`) + const sub = subscribeZap!(orderId) + + sub.addListener('event', onZap) + + return () => { + sub.removeAllListeners() + sub.stop() + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [orderId, recipientPubkey, recipientPubkey]) + + nip44.decrypt + const generateOrderEvent = useCallback((): Event => { + const vote = (memo as any).vote as number + + const unsignedEvent: UnsignedEvent = { + kind: 1, + content: '', + pubkey: localPublicKey!, + created_at: Math.round(Date.now() / 1000), + tags: [ + ['relays', ...relays!], + ['p', localPublicKey], + ['t', 'order'], + [ + 'description', + JSON.stringify({ + memo, + amount, + vote + }) + ] + ] as string[][] + } + + const event: Event = { + id: getEventHash(unsignedEvent), + sig: getSignature(unsignedEvent, localPrivateKey!), + ...unsignedEvent + } + + console.info('event:') + console.dir(event) + + return event + }, [amount, localPrivateKey, localPublicKey, relays, memo]) + + // Checkout function + const checkOut = useCallback(async (): Promise<{ + eventId: string + }> => { + // Order Nostr event + const order = generateOrderEvent() + await publish!(order) + + return { eventId: order.id } + }, [generateOrderEvent, publish]) + + const addZapEvent = useCallback(async (event: NDKEvent) => { + const invoice = parseZapInvoice(event as Event) + if (!invoice.complete) { + console.info('Incomplete invoice') + return + } + const amountPaid = parseInt(invoice.millisatoshis!) / 1000 + setPendingAmount(prev => prev - amountPaid) + const _event = await event.toNostrEvent() + setZapEvents(prev => [...prev, _event]) + }, []) + + const requestZapInvoice = useCallback( + async (amountMillisats: number, orderEventId: string): Promise => { + // Generate ZapRequestEvent + const zapEvent = generateZapEvent!(amountMillisats, orderEventId) + + console.info('zapEvent') + console.dir(zapEvent) + + // Request new invoice + const invoice = await requestInvoice!({ + amountMillisats, + zapEvent: (await zapEvent.toNostrEvent()) as Event + }) + + return invoice + }, + [generateZapEvent, requestInvoice] + ) + + // Handle new incoming zap + const onZap = (event: NDKEvent) => { + if (event.pubkey !== recipientPubkey) { + throw new Error('Invalid Recipient Pubkey') + } + + if (!validateEvent(event)) { + throw new Error('Invalid event') + } + + const paidInvoice = event.tags.find(tag => tag[0] === 'bolt11')?.[1] + const decodedPaidInvoice = bolt11.decode(paidInvoice!) + + addZapEvent(event) + console.info('Amount paid : ' + decodedPaidInvoice.millisatoshis) + } + + return ( + + {children} + + ) +} + +// Export hook +export const useOrder = () => { + return useContext(OrderContext) +} From 5e0184949f32945cfefad7eb9ba744f8f807ef00 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Thu, 26 Oct 2023 16:21:01 -0300 Subject: [PATCH 030/159] added providers --- src/app/layout.tsx | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/app/layout.tsx b/src/app/layout.tsx index cc71d18..b02a770 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,7 +1,6 @@ 'use client' import { ReactNode } from 'react' -import Script from 'next/script' import { ThemeProvider } from 'styled-components' import { LaWalletProvider } from '@/context/LaWalletContext' @@ -12,6 +11,9 @@ import { AvailableLanguages, defaultLocale } from '@/translations' import theme from '@/styles/theme' import { fontSecondary } from '@/styles/fonts' import GlobalStyles from '@/styles/GlobalStyles' +import { LNProvider } from '@/context/LN' +import { NostrProvider } from '@/context/Nostr' +import { OrderProvider } from '@/context/Order' interface ProviderProps { children: ReactNode @@ -35,10 +37,16 @@ const Providers = (props: ProviderProps) => { - - - {children} - + + + + + + {children} + + + + From e5de3b3d927c4fa8edbf2f1484c1288c7abbab1e Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Thu, 26 Oct 2023 16:21:20 -0300 Subject: [PATCH 031/159] implemented hooks on main --- src/app/page.tsx | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index 82e10c7..133e788 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,6 +1,6 @@ 'use client' -import { useContext } from 'react' +import { useContext, useEffect } from 'react' import { useRouter } from 'next/navigation' import { PantheonIcon } from '@bitcoin-design/bitcoin-icons-react/filled' @@ -20,18 +20,36 @@ import Container from '@/components/Layout/Container' import Navbar from '@/components/Layout/Navbar' import TokenList from '@/components/TokenList' import { useNumpad } from '@/hooks/useNumpad' +import { useOrder } from '@/context/Order' +import { useNostr } from '@/context/Nostr' export default function Home() { const router = useRouter() + const { generateOrderEvent, setAmount, setOrderEvent } = useOrder() + const { publish } = useNostr() const { userConfig } = useContext(LaWalletContext) const numpadData = useNumpad(userConfig.props.currency) - const handleClick = () => { + // TEMP + const sats = numpadData.intAmount[numpadData.usedCurrency] + + const handleClick = async () => { // POC - router.push('/payment') + const order = generateOrderEvent!() + + console.dir(order) + console.info('Publishing order') + await publish!(order) + setOrderEvent!(order) + router.push('/payment/' + order.id) } + useEffect(() => { + setAmount(sats) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [sats]) + return ( <> From 3843de930f8e9081c5026d2bfbe1e66047d5e4df Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Thu, 26 Oct 2023 16:21:28 -0300 Subject: [PATCH 032/159] moved payment page --- src/app/payment/{ => [orderId]}/page.tsx | 92 ++++++++++++++++++++---- 1 file changed, 80 insertions(+), 12 deletions(-) rename src/app/payment/{ => [orderId]}/page.tsx (66%) diff --git a/src/app/payment/page.tsx b/src/app/payment/[orderId]/page.tsx similarity index 66% rename from src/app/payment/page.tsx rename to src/app/payment/[orderId]/page.tsx index 512addb..0a56a46 100644 --- a/src/app/payment/page.tsx +++ b/src/app/payment/[orderId]/page.tsx @@ -1,7 +1,7 @@ 'use client' -import { useContext, useState } from 'react' -import { useRouter } from 'next/navigation' +import { useCallback, useContext, useEffect, useState } from 'react' +import { useParams, useRouter } from 'next/navigation' import { CheckIcon, CreditCardIcon @@ -15,23 +15,38 @@ import { Heading, Text, Divider, - LinkButton, Button, - Keyboard, QRCode, Confetti, Icon, Sheet } from '@/components/UI' import Container from '@/components/Layout/Container' -import TokenList from '@/components/TokenList' import { Loader } from '@/components/Loader/Loader' import { useNumpad } from '@/hooks/useNumpad' import theme from '@/styles/theme' +import { useNostr } from '@/context/Nostr' +import { NDKEvent } from '@nostr-dev-kit/ndk' +import { useOrder } from '@/context/Order' +import { Event } from 'nostr-tools' +import { useLN } from '@/context/LN' -export default function Home() { +export default function Payment() { const router = useRouter() + const { orderId: orderIdFromUrl } = useParams() + const { subscribeZap, getEvent } = useNostr() + const { recipientPubkey } = useLN() + const { + orderId, + amount, + setOrderEvent, + pendingAmount, + zapEvents, + requestZapInvoice + } = useOrder() + + const [invoice, setInvoice] = useState() const { userConfig } = useContext(LaWalletContext) const numpadData = useNumpad(userConfig.props.currency) @@ -45,6 +60,60 @@ export default function Home() { setShowSeet(false) } + const fetchOrder = useCallback( + async (_orderId: string) => { + const order = await getEvent!(_orderId) + + if (!order) { + alert('NO HAY ORDER!') + return + } + + setOrderEvent!((await order.toNostrEvent()) as Event) + + console.info('ORDER:') + console.dir(order) + }, + [getEvent, setOrderEvent] + ) + + // Search for orderIdFromURL + useEffect(() => { + // Not orderId found on url + if (!orderIdFromUrl) { + router.back() + return + } + + // Order already set + if (orderId) { + return + } + + fetchOrder(orderIdFromUrl as string) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [orderIdFromUrl, orderId]) + + // On orderId change + useEffect(() => { + if (!orderId || !recipientPubkey) { + return + } + + requestZapInvoice!(amount * 1000, orderId).then(_invoice => { + console.info('INVOICE:') + setInvoice!(_invoice) + }) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [orderId]) + + useEffect(() => { + if (zapEvents.length <= 0 || finished || pendingAmount > 0) { + return + } + setFinished(true) + }, [zapEvents, finished, pendingAmount]) + return ( <> {finished ? ( @@ -65,13 +134,11 @@ export default function Home() { Pago acreditado + {userConfig.props.currency !== 'SAT' && $} - {formatToPreference( - userConfig.props.currency, - numpadData.intAmount[numpadData.usedCurrency] - )} + {formatToPreference(userConfig.props.currency, amount)} @@ -110,7 +177,8 @@ export default function Home() { {formatToPreference( userConfig.props.currency, - numpadData.intAmount[numpadData.usedCurrency] + amount + // numpadData.intAmount[numpadData.usedCurrency] )} @@ -120,7 +188,7 @@ export default function Home() { - + From 872c78285fa210e9209ab1094f5ded50a0099473 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Thu, 26 Oct 2023 16:21:36 -0300 Subject: [PATCH 033/159] fixed lint errors --- src/hooks/useCurrencyConverter.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/hooks/useCurrencyConverter.ts b/src/hooks/useCurrencyConverter.ts index 2716bfa..9f7d766 100644 --- a/src/hooks/useCurrencyConverter.ts +++ b/src/hooks/useCurrencyConverter.ts @@ -87,6 +87,7 @@ const useCurrencyConverter = (): UseConverterReturns => { useEffect(() => { loadPrices() + // eslint-disable-next-line react-hooks/exhaustive-deps }, []) return { pricesData, convertCurrency } From 76fa19d8d30b93d34e30f5712acefdd4d64e9b4b Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Thu, 26 Oct 2023 16:22:15 -0300 Subject: [PATCH 034/159] added reactStrictMode --- next.config.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/next.config.js b/next.config.js index 2e9e6ec..5132e7b 100644 --- a/next.config.js +++ b/next.config.js @@ -1,7 +1,8 @@ -const path = require('path'); +const path = require('path') module.exports = { + // reactStrictMode: false, // React Strict Mode is off sassOptions: { - includePaths: [path.join(__dirname, 'styles')], - }, -}; + includePaths: [path.join(__dirname, 'styles')] + } +} From 18a569e9e035e94e6366e5dfa82b2afa616eea85 Mon Sep 17 00:00:00 2001 From: Jona Date: Thu, 26 Oct 2023 16:23:10 -0300 Subject: [PATCH 035/159] chore: deleted Sheet component --- src/components/UI/Sheet/index.tsx | 63 ------------------------------- src/components/UI/Sheet/style.tsx | 53 -------------------------- 2 files changed, 116 deletions(-) delete mode 100644 src/components/UI/Sheet/index.tsx delete mode 100644 src/components/UI/Sheet/style.tsx diff --git a/src/components/UI/Sheet/index.tsx b/src/components/UI/Sheet/index.tsx deleted file mode 100644 index f3fc4b2..0000000 --- a/src/components/UI/Sheet/index.tsx +++ /dev/null @@ -1,63 +0,0 @@ -'use client' - -import { useState, useEffect } from 'react' - -import Container from '../../Layout/Container' - -import Flex from '../Flex' -import Divider from '../Divider' -import Button from '../Button' -import Heading from '../Heading' - -import { Sheet, SheetContent } from './style' -// import { useTranslation } from '@/hooks/useTranslations' - -interface ComponentProps { - children: any - isOpen: boolean - onClose: () => void - title?: string -} - -export default function Component(props: ComponentProps) { - const { children, isOpen, onClose, title } = props - // const { t } = useTranslation() - - const [open, setOpen] = useState(false) - - useEffect(() => { - setOpen(isOpen) - }, [isOpen]) - - const handleClose = () => { - setOpen(false) - onClose() - } - - return ( - - - - - - {title} - - - - - - - {children} - - - - - - - - - - ) -} diff --git a/src/components/UI/Sheet/style.tsx b/src/components/UI/Sheet/style.tsx deleted file mode 100644 index ebb3724..0000000 --- a/src/components/UI/Sheet/style.tsx +++ /dev/null @@ -1,53 +0,0 @@ -'use client' - -import { styled } from 'styled-components' - -import theme from '@/styles/theme' - -interface SheetProps { - $isOpen?: boolean -} - -export const Sheet = styled.div` - position: fixed; - overflow-x: hidden; - bottom: 0; - left: 0; - z-index: 3; - - display: flex; - align-items: flex-end; - width: 100%; - height: 100%; - - background-color: ${props => - props.$isOpen ? 'rgba(0,0,0,.8)' : 'transparent'}; - - transform: ${props => (props.$isOpen ? 'translateY(0)' : 'translateY(100%)')}; - transition-duration: 0.2s; - transform: ${props => (props.$isOpen ? 1 : 0)}; -` - -interface SheetContentProps { - $isOpen?: boolean -} - -export const SheetContent = styled.div` - position: relative; - z-index: 2; - overflow: hidden; - - display: flex; - flex-direction: column; - width: 100%; - height: calc(65dvh); - - margin-top: 60px; - padding-top: 24px; - - background-color: ${theme.colors.gray15}; - border-radius: 12px 12px 0 0; - - transform: ${props => (props.$isOpen ? 'translateY(0)' : 'translateY(100%)')}; - transition-duration: 0.4s; -` From 5dd7b80e3f5bbcd50a2b8df3d1e1254fefddabc7 Mon Sep 17 00:00:00 2001 From: Jona Date: Thu, 26 Oct 2023 16:23:25 -0300 Subject: [PATCH 036/159] feat(component): added Alert --- src/components/UI/Alert/index.tsx | 47 +++++++++++++++++ src/components/UI/Alert/style.tsx | 83 +++++++++++++++++++++++++++++++ 2 files changed, 130 insertions(+) create mode 100644 src/components/UI/Alert/index.tsx create mode 100644 src/components/UI/Alert/style.tsx diff --git a/src/components/UI/Alert/index.tsx b/src/components/UI/Alert/index.tsx new file mode 100644 index 0000000..47ee450 --- /dev/null +++ b/src/components/UI/Alert/index.tsx @@ -0,0 +1,47 @@ +'use client' + +import { + CheckIcon, + AlertIcon +} from '@bitcoin-design/bitcoin-icons-react/filled' + +import theme from '@/styles/theme' + +import Text from '../Text' +import Icon from '../Icon' + +import { Alert } from './style' + +interface AlertProps { + title: string | undefined + description: string | undefined + type: 'success' | 'warning' | 'error' | undefined + isOpen: boolean +} + +export default function Component(props: AlertProps) { + const { title, description, type, isOpen = false } = props + + const isSuccess = type === 'success' + + return ( + +
+ {isSuccess ? : } +
+ {title && ( + + {title} + + )} + {description && {description}} +
+
+
+
+ ) +} diff --git a/src/components/UI/Alert/style.tsx b/src/components/UI/Alert/style.tsx new file mode 100644 index 0000000..5ddf43c --- /dev/null +++ b/src/components/UI/Alert/style.tsx @@ -0,0 +1,83 @@ +'use client' + +import { styled } from 'styled-components' + +import theme from '@/styles/theme' + +interface AlertProps { + $background?: string + $color?: string + $isOpen: boolean +} + +export const Alert = styled.div` + position: absolute; + top: 40px; + right: 0; + left: 0; + z-index: ${props => (props.$isOpen ? 10 : -1)}; + opacity: ${props => (props.$isOpen ? 1 : 0)}; + transform: ${props => + props.$isOpen ? 'translateY(-20px)' : 'translateY(0px)'}; + transition-duration: 0.3s; + + display: flex; + justify-content: center; + align-items: center; + gap: 16px; + height: 60px; + + padding: 0 20px; + + .box { + position: relative; + overflow: hidden; + + display: ${props => (props.$isOpen ? 'flex' : 'none')}; + align-items: center; + gap: 12px; + width: 100%; + max-width: 300px; + height: auto; + + padding: 12px; + padding-bottom: 18px; + + background-color: ${theme.colors.white}; + box-shadow: 0 18px 40px 4px ${props => props.$background}; + border-radius: 4px; + + color: ${theme.colors.background}; + + > div { + &:first-child { + min-width: 24px; + min-height: 24px; + + background-color: ${props => props.$color}; + border-radius: 24px; + + color: ${theme.colors.text}; + } + + &:last-child { + display: flex; + flex-direction: column; + gap: 4px; + } + } + } + + .progress { + position: absolute; + bottom: 0; + left: 0; + + width: 100%; + height: 6px; + + background-color: ${props => props.$color}; + + transition: width 3s; + } +` From 35dcf8f1a5d8119dca4cee58b281690905b40b1b Mon Sep 17 00:00:00 2001 From: Jona Date: Thu, 26 Oct 2023 16:23:30 -0300 Subject: [PATCH 037/159] feat(component): added Alert --- src/components/UI/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/UI/index.tsx b/src/components/UI/index.tsx index fe333a9..5dd5f8d 100644 --- a/src/components/UI/index.tsx +++ b/src/components/UI/index.tsx @@ -9,5 +9,5 @@ export { default as LinkButton } from './LinkButton' export { default as Icon } from './Icon' export { default as Keyboard } from './Keyboard' export { default as Confetti } from './Confetti' -export { default as Sheet } from './Sheet' export { default as Card } from './Card' +export { default as Alert } from './Alert' From 91a88b7c8f341d3cbb8d9b90b6f8181affc6d1e9 Mon Sep 17 00:00:00 2001 From: Jona Date: Thu, 26 Oct 2023 16:23:53 -0300 Subject: [PATCH 038/159] fix(page): integrated Alert and removed Sheet from Payment --- src/app/payment/page.tsx | 50 ++++++++-------------------------------- 1 file changed, 10 insertions(+), 40 deletions(-) diff --git a/src/app/payment/page.tsx b/src/app/payment/page.tsx index 7249984..1186889 100644 --- a/src/app/payment/page.tsx +++ b/src/app/payment/page.tsx @@ -2,10 +2,7 @@ import { useContext, useState } from 'react' import { useRouter } from 'next/navigation' -import { - CheckIcon, - CreditCardIcon -} from '@bitcoin-design/bitcoin-icons-react/filled' +import { CheckIcon } from '@bitcoin-design/bitcoin-icons-react/filled' import { LaWalletContext } from '@/context/LaWalletContext' import { formatToPreference } from '@/lib/formatter' @@ -15,16 +12,13 @@ import { Heading, Text, Divider, - LinkButton, Button, - Keyboard, QRCode, Confetti, Icon, - Sheet + Alert } from '@/components/UI' import Container from '@/components/Layout/Container' -import TokenList from '@/components/TokenList' import { Loader } from '@/components/Loader/Loader' import { useNumpad } from '@/hooks/useNumpad' @@ -37,16 +31,18 @@ export default function Page() { const numpadData = useNumpad(userConfig.props.currency) const [finished, setFinished] = useState(false) - const [showSheet, setShowSeet] = useState(false) const handlePrint = () => {} - const handleCloseSheet = () => { - setShowSeet(false) - } - return ( <> + + {finished ? ( <> @@ -127,15 +123,7 @@ export default function Page() { - - - - @@ -145,24 +133,6 @@ export default function Page() { )} - - - - - - - - - - Sostenga su dispositivo cerca de la etiqueta NFC. - - - - ) } From 51a4573cf1798a9346a1dc7f9a9f9295a5fcc639 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Thu, 26 Oct 2023 18:01:41 -0300 Subject: [PATCH 039/159] commented out print --- src/app/payment/[orderId]/page.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/payment/[orderId]/page.tsx b/src/app/payment/[orderId]/page.tsx index b933bd0..c84e819 100644 --- a/src/app/payment/[orderId]/page.tsx +++ b/src/app/payment/[orderId]/page.tsx @@ -145,11 +145,11 @@ export default function Page() {
- + {/* - + */} + )} + From 60551225ee46ce370629c4247cbce16720a212bf Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Fri, 27 Oct 2023 09:44:51 -0300 Subject: [PATCH 043/159] added card type --- src/types/card.ts | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/types/card.ts diff --git a/src/types/card.ts b/src/types/card.ts new file mode 100644 index 0000000..fc7e8ef --- /dev/null +++ b/src/types/card.ts @@ -0,0 +1,7 @@ +export enum ScanCardStatus { + IDLE = 'IDLE', + SCANNING = 'SCANNING', + REQUESTING = 'REQUESTING', + DONE = 'DONE', + ERROR = 'ERROR' +} From 69becf97fcbc98d554a6a5fa167a20949ebb02e2 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Fri, 27 Oct 2023 09:44:57 -0300 Subject: [PATCH 044/159] added useCard hook --- src/hooks/useCard.ts | 55 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/hooks/useCard.ts diff --git a/src/hooks/useCard.ts b/src/hooks/useCard.ts new file mode 100644 index 0000000..62fa65b --- /dev/null +++ b/src/hooks/useCard.ts @@ -0,0 +1,55 @@ +import { useState } from 'react' +import { ScanCardStatus } from '@/types/card' +import { LNURLResponse } from '@/types/lnurl' +import { useNfc } from 'use-nfc-hook' +import axios from 'axios' + +export type CardReturns = { + isAvailable: boolean + permission: string + status: ScanCardStatus + scan: () => Promise + stop: () => void +} + +const requestLNURL = async (url: string) => { + const response = await axios.get(url) + if (response.status !== 200) { + alert(JSON.stringify(response.data)) + throw new Error('Hubo un error: ' + JSON.stringify(response.data)) + } + + return response.data +} + +export const useCard = (): CardReturns => { + const { isNDEFAvailable, permission, read, abortReadCtrl } = useNfc() + const [status, setStatus] = useState(ScanCardStatus.IDLE) + const scan = async (): Promise => { + setStatus(ScanCardStatus.SCANNING) + let url = '' + try { + const response = await read() + const record = response.message.records[0] + const decoder = new TextDecoder('utf-8') + const decodedContent = decoder.decode(record.data) + url = decodedContent.replace('lnurlw://', 'https://') + } catch (error) { + alert('ALERT on reading: ' + JSON.stringify(error)) + console.log('ERROR ', error) + } + + setStatus(ScanCardStatus.REQUESTING) + const response = requestLNURL(url) + setStatus(ScanCardStatus.DONE) + return response + } + + return { + isAvailable: !!isNDEFAvailable, + permission, + status, + scan, + stop: abortReadCtrl + } +} From a4c5395f32d0699f0a15230e80603911b938e927 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Fri, 27 Oct 2023 09:45:08 -0300 Subject: [PATCH 045/159] refactored card scan process --- src/app/payment/[orderId]/page.tsx | 37 +++++++----------------------- 1 file changed, 8 insertions(+), 29 deletions(-) diff --git a/src/app/payment/[orderId]/page.tsx b/src/app/payment/[orderId]/page.tsx index b508192..97300ed 100644 --- a/src/app/payment/[orderId]/page.tsx +++ b/src/app/payment/[orderId]/page.tsx @@ -29,6 +29,7 @@ import { useLN } from '@/context/LN' import { useNfc } from 'use-nfc-hook' import axios from 'axios' import { LNURLResponse, LNURLWStatus } from '@/types/lnurl' +import { useCard } from '@/hooks/useCard' export default function Page() { const router = useRouter() @@ -44,11 +45,11 @@ export default function Page() { requestZapInvoice } = useOrder() - const { isNDEFAvailable, permission, read, abortReadCtrl, write } = useNfc() - const [invoice, setInvoice] = useState() const [cardStatus, setCardStatus] = useState(LNURLWStatus.IDLE) + const { isAvailable, permission, scan, stop } = useCard() + const { userConfig } = useContext(LaWalletContext) const [finished, setFinished] = useState(false) @@ -71,31 +72,9 @@ export default function Page() { ) const startRead = async () => { - try { - const response = await read() - const record = response.message.records[0] - const decoder = new TextDecoder('utf-8') - const decodedContent = decoder.decode(record.data) - processLNURL(decodedContent) - } catch (error) { - alert('ALERT on reading: ' + JSON.stringify(error)) - console.log('ERROR ', error) - } - } - - const processLNURL = async (lnurl: string) => { setCardStatus(LNURLWStatus.REQUESTING) - const url = lnurl.replace('lnurlw://', 'https://') - const response = await axios.get(url) - if (response.status !== 200) { - setCardStatus(LNURLWStatus.ERROR) - alert('Hubo un error ge') - alert(JSON.stringify(response.data)) - return - } - - processLNURLResponse(response.data) - // startRead() + const lnurlResponse = await scan() + processLNURLResponse(lnurlResponse) } const processLNURLResponse = async (response: LNURLResponse) => { @@ -164,14 +143,14 @@ export default function Page() { // On Mount useEffect(() => { return () => { - abortReadCtrl() + stop() } // eslint-disable-next-line react-hooks/exhaustive-deps }, []) return ( <> - {isNDEFAvailable && permission === 'granted' && invoice && ( + {isAvailable && permission === 'granted' && invoice && ( - {isNDEFAvailable && permission === 'prompt' && ( + {isAvailable && permission === 'prompt' && ( From f29d94096a185f14a3e651b8b5c26a67ef469639 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Fri, 27 Oct 2023 11:01:42 -0300 Subject: [PATCH 046/159] comment out publish nostr event --- src/app/paydesk/page.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/paydesk/page.tsx b/src/app/paydesk/page.tsx index 5655683..624e2ee 100644 --- a/src/app/paydesk/page.tsx +++ b/src/app/paydesk/page.tsx @@ -39,8 +39,8 @@ export default function Page() { const order = generateOrderEvent!() console.dir(order) - console.info('Publishing order') - await publish!(order) + // console.info('Publishing order') + // await publish!(order) setOrderEvent!(order) router.push('/payment/' + order.id) } From 3976684d990aec67d19dbfb7f11f5d057ba40e47 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Fri, 27 Oct 2023 11:32:59 -0300 Subject: [PATCH 047/159] refactored zapEmitter --- src/app/payment/[orderId]/page.tsx | 8 ++++---- src/context/LN.tsx | 12 ++++++++---- src/context/Nostr.tsx | 17 +++++++++++------ src/context/Order.tsx | 8 ++++---- 4 files changed, 27 insertions(+), 18 deletions(-) diff --git a/src/app/payment/[orderId]/page.tsx b/src/app/payment/[orderId]/page.tsx index 97300ed..96178af 100644 --- a/src/app/payment/[orderId]/page.tsx +++ b/src/app/payment/[orderId]/page.tsx @@ -35,7 +35,7 @@ export default function Page() { const router = useRouter() const { orderId: orderIdFromUrl } = useParams() const { subscribeZap, getEvent } = useNostr() - const { recipientPubkey } = useLN() + const { zapEmitterPubKey } = useLN() const { orderId, amount, @@ -111,7 +111,7 @@ export default function Page() { // On orderId change useEffect(() => { - if (!orderId || !recipientPubkey) { + if (!orderId || !zapEmitterPubKey) { return } @@ -132,13 +132,13 @@ export default function Page() { // On Invoice ready useEffect(() => { - if (!invoice || !recipientPubkey) { + if (!invoice || !zapEmitterPubKey || !isAvailable) { return } startRead() // eslint-disable-next-line react-hooks/exhaustive-deps - }, [invoice, recipientPubkey]) + }, [invoice, zapEmitterPubKey]) // On Mount useEffect(() => { diff --git a/src/context/LN.tsx b/src/context/LN.tsx index 582b0b7..f983c73 100644 --- a/src/context/LN.tsx +++ b/src/context/LN.tsx @@ -11,7 +11,7 @@ import { // Interface export interface ILNContext { - recipientPubkey?: string + zapEmitterPubKey?: string callbackUrl?: string destination?: string requestInvoice?: (_req: InvoiceRequest) => Promise @@ -32,7 +32,7 @@ interface ILNProviderProps { const DESTINATION_LNURL = process.env.NEXT_PUBLIC_DESTINATION! export const LNProvider = ({ children }: ILNProviderProps) => { - const [recipientPubkey, setRecipientPubkey] = useState() + const [zapEmitterPubKey, setZapEmitterPubKey] = useState() const [callbackUrl, setCallbackUrl] = useState() const fetchLNURL = useCallback(async () => { @@ -41,8 +41,11 @@ export const LNProvider = ({ children }: ILNProviderProps) => { lnUrlOrAddress: DESTINATION_LNURL }) + console.info('lud06:') + console.dir(lud06) + // TODO: Check if lud06 is valid - setRecipientPubkey(lud06.rawData.nostrPubkey as string) + setZapEmitterPubKey(lud06.rawData.nostrPubkey as string) setCallbackUrl(lud06.callback) }, []) @@ -50,6 +53,7 @@ export const LNProvider = ({ children }: ILNProviderProps) => { async ({ amountMillisats, zapEvent }: InvoiceRequest): Promise => { const encodedZapEvent = encodeURI(JSON.stringify(zapEvent)) const url = `${callbackUrl}?amount=${amountMillisats}&nostr=${encodedZapEvent}&lnurl=${DESTINATION_LNURL}` + console.info('url') console.dir(url) const response = await axios.get(url) return response.data.pr as string @@ -64,7 +68,7 @@ export const LNProvider = ({ children }: ILNProviderProps) => { return ( { - const { recipientPubkey, destination } = useLN() + const { zapEmitterPubKey, destination } = useLN() // const [privateKey, setPrivateKey] = useState() const [privateKey] = useLocalStorage('nostrPrivateKey', generatePrivateKey()) const [publicKey, setPublicKey] = useState() @@ -78,7 +83,7 @@ export const NostrProvider = ({ children }: INostrProviderProps) => { ['relays', ...relays], ['amount', amountMillisats.toString()], ['lnurl', destination], - ['p', recipientPubkey] + ['p', zapEmitterPubKey] ] as string[][] } @@ -95,17 +100,17 @@ export const NostrProvider = ({ children }: INostrProviderProps) => { return event }, - [destination, recipientPubkey, privateKey, publicKey] + [destination, zapEmitterPubKey, privateKey, publicKey] ) const subscribeZap = (eventId: string): NDKSubscription => { console.info(`Listening for zap (${eventId})...`) - console.info(`Recipient pubkey: ${recipientPubkey}`) + console.info(`Recipient pubkey: ${zapEmitterPubKey}`) const sub = ndk.subscribe( [ { kinds: [9735], - authors: [recipientPubkey!], + authors: [zapEmitterPubKey!], '#e': [eventId], since: 1693157776 } diff --git a/src/context/Order.tsx b/src/context/Order.tsx index dd03f55..001de52 100644 --- a/src/context/Order.tsx +++ b/src/context/Order.tsx @@ -88,7 +88,7 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { const { relays, localPublicKey, localPrivateKey, generateZapEvent } = useNostr() - const { requestInvoice, recipientPubkey } = useLN() + const { requestInvoice, zapEmitterPubKey } = useLN() const { subscribeZap, publish } = useNostr() // on orderEvent change @@ -113,7 +113,7 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { // Subscribe for zaps useEffect(() => { - if (!orderId || !recipientPubkey) { + if (!orderId || !zapEmitterPubKey) { return } @@ -127,7 +127,7 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { sub.stop() } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [orderId, recipientPubkey, recipientPubkey]) + }, [orderId, zapEmitterPubKey, zapEmitterPubKey]) nip44.decrypt const generateOrderEvent = useCallback((): Event => { @@ -209,7 +209,7 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { // Handle new incoming zap const onZap = (event: NDKEvent) => { - if (event.pubkey !== recipientPubkey) { + if (event.pubkey !== zapEmitterPubKey) { throw new Error('Invalid Recipient Pubkey') } From 4ce0b22acc37a541ac5605ff7da0698962d802b9 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Fri, 27 Oct 2023 11:35:01 -0300 Subject: [PATCH 048/159] catch publish error --- src/app/paydesk/page.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/app/paydesk/page.tsx b/src/app/paydesk/page.tsx index 624e2ee..47048b8 100644 --- a/src/app/paydesk/page.tsx +++ b/src/app/paydesk/page.tsx @@ -40,8 +40,14 @@ export default function Page() { console.dir(order) // console.info('Publishing order') - // await publish!(order) + try { + await publish!(order) + } catch (e) { + console.warn('Error publishing order') + console.warn(e) + } setOrderEvent!(order) + router.push('/payment/' + order.id) } From 26d3aaefb472581108fbdce0f96389c31b880192 Mon Sep 17 00:00:00 2001 From: Jona Date: Fri, 27 Oct 2023 12:11:29 -0300 Subject: [PATCH 049/159] chore: integrated qr-scanner --- package.json | 1 + pnpm-lock.yaml | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/package.json b/package.json index ac7d5d2..cae207a 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "next": "13.5.6", "nostr-tools": "^1.17.0", "prettier": "^3.0.3", + "qr-scanner": "^1.4.2", "react": "^18", "react-dom": "^18", "react-qr-code": "^2.0.12", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6fcab39..412ce66 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -35,6 +35,9 @@ dependencies: prettier: specifier: ^3.0.3 version: 3.0.3 + qr-scanner: + specifier: ^1.4.2 + version: 1.4.2 react: specifier: ^18 version: 18.0.0 @@ -396,6 +399,10 @@ packages: /@types/node@20.0.0: resolution: {integrity: sha512-cD2uPTDnQQCVpmRefonO98/PPijuOnnEy5oytWJFPY1N9aJCz2wJ5kSGWO+zJoed2cY2JxQh6yBuUq4vIn61hw==} + /@types/offscreencanvas@2019.7.2: + resolution: {integrity: sha512-ujCjOxeA07IbEBQYAkoOI+XFw5sT3nhWJ/xZfPR6reJppDG7iPQPZacQiLTtWH1b3a2NYXWlxvYqa40y/LAixQ==} + dev: false + /@types/prop-types@15.7.9: resolution: {integrity: sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g==} dev: true @@ -2443,6 +2450,12 @@ packages: engines: {node: '>=6'} dev: true + /qr-scanner@1.4.2: + resolution: {integrity: sha512-kV1yQUe2FENvn59tMZW6mOVfpq9mGxGf8l6+EGaXUOd4RBOLg7tRC83OrirM5AtDvZRpdjdlXURsHreAOSPOUw==} + dependencies: + '@types/offscreencanvas': 2019.7.2 + dev: false + /qr.js@0.0.0: resolution: {integrity: sha512-c4iYnWb+k2E+vYpRimHqSu575b1/wKl4XFeJGpFmrJQz5I88v9aY2czh7s0w36srfCM1sXgC/xpoJz5dJfq+OQ==} dev: false From f8c75bf6588ede5e8e4a3f5645f3d11aa8ac7401 Mon Sep 17 00:00:00 2001 From: Jona Date: Fri, 27 Oct 2023 12:29:47 -0300 Subject: [PATCH 050/159] fix(lib): integrated validateEmail and detectTransfer on utils --- src/types/transaction.ts | 41 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/types/transaction.ts diff --git a/src/types/transaction.ts b/src/types/transaction.ts new file mode 100644 index 0000000..1423fc3 --- /dev/null +++ b/src/types/transaction.ts @@ -0,0 +1,41 @@ +import { NostrEvent } from '@nostr-dev-kit/ndk' + +export interface Transaction { + id: string + status: TransactionStatus + direction: TransactionDirection + type: TransactionType + tokens: TokensAmount + memo: string | null + errors: string[] + events: NostrEvent[] + createdAt: Date +} + +export enum TransferTypes { + LUD16 = 'LUD16', + INVOICE = 'INVOICE', + LNURL = 'LNURL' +} + +export enum TransactionStatus { + PENDING = 'PENDING', + PROCESSING = 'PROCESSING', + CONFIRMED = 'CONFIRMED', + ERROR = 'ERROR' +} + +export enum TransactionDirection { + INCOMING = 'INCOMING', + OUTGOING = 'OUTGOING' +} + +export enum TransactionType { + CARD = 'CARD', + INTERNAL = 'INTERNAL', + LN = 'LN' +} + +export type TokensAmount = { + [_tokenId: string]: number +} From 2640a0908e3fff43d0e843f5c65b55d3df657905 Mon Sep 17 00:00:00 2001 From: Jona Date: Fri, 27 Oct 2023 12:29:53 -0300 Subject: [PATCH 051/159] fix(lib): integrated validateEmail and detectTransfer on utils --- src/lib/utils.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/lib/utils.ts b/src/lib/utils.ts index b776895..ea97c3f 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -3,6 +3,7 @@ import bolt11 from 'bolt11' // Types import type { IOrderEventContent } from '@/types/order' +import { TransferTypes } from '@/types/transaction' import type { Event } from 'nostr-tools' export const parseOrderDescription = (event: Event): IOrderEventContent => { @@ -15,3 +16,23 @@ export const parseZapInvoice = (event: Event): bolt11.PaymentRequestObject => { const paidInvoice = event.tags.find(tag => tag[0] === 'bolt11')?.[1] return bolt11.decode(paidInvoice!) } + +export const validateEmail = (email: string): RegExpMatchArray | null => { + return email.match( + /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ + ) +} + +export const detectTransferType = (data: string): TransferTypes | false => { + const cleanStr: string = data.includes('lightning://') + ? data.replace('lightning://', '').toUpperCase() + : data.toUpperCase() + + const isLUD16 = validateEmail(cleanStr) + if (isLUD16) return TransferTypes.LUD16 + + if (cleanStr.includes('LNURL')) return TransferTypes.LNURL + if (cleanStr.includes('LNBC')) return TransferTypes.INVOICE + + return false +} From 55a54327e0a3b3e65eee0b75159cca514a7c974b Mon Sep 17 00:00:00 2001 From: Jona Date: Fri, 27 Oct 2023 12:30:08 -0300 Subject: [PATCH 052/159] feat(component): integrated Scanner --- src/components/UI/Scanner/Scanner.tsx | 116 ++++++++++++++++++++++++++ src/components/UI/Scanner/types.ts | 79 ++++++++++++++++++ 2 files changed, 195 insertions(+) create mode 100644 src/components/UI/Scanner/Scanner.tsx create mode 100644 src/components/UI/Scanner/types.ts diff --git a/src/components/UI/Scanner/Scanner.tsx b/src/components/UI/Scanner/Scanner.tsx new file mode 100644 index 0000000..2f6310a --- /dev/null +++ b/src/components/UI/Scanner/Scanner.tsx @@ -0,0 +1,116 @@ +import * as React from 'react' +import NimiqQrScanner from 'qr-scanner' +import { QrScannerProps } from './types' + +const styles: any = { + container: { + width: '100%', + paddingTop: '100%', + overflow: 'hidden', + position: 'relative' + }, + video: { + top: 0, + left: 0, + width: '100%', + height: '100%', + display: 'block', + overflow: 'hidden', + position: 'absolute', + transform: undefined + } +} + +const QrScanner = (props: QrScannerProps) => { + const { + className, + containerStyle, + videoContainerStyle, + videoStyle, + videoId, + ViewFinder, + startOnLaunch, + onMount, + onScan, + onDecode, + onDecodeError, + calculateScanRegion, + preferredCamera, + maxScansPerSecond, + highlightScanRegion, + highlightCodeOutline, + overlay, + returnDetailedScanResult + } = props + + const video = React.createRef() + + React.useEffect(() => { + if (video.current) { + // create scanner bound to video html element + const target = video.current + + const scanner = new NimiqQrScanner( + target, + result => { + if (onDecode) onDecode(result) + if (onScan) onScan(result) + }, + { + onDecodeError: error => { + if (onDecodeError) onDecodeError(error) + if (onScan) onScan(undefined, error) + }, + calculateScanRegion, + preferredCamera, + maxScansPerSecond, + highlightScanRegion, + highlightCodeOutline, + overlay, + returnDetailedScanResult + } + ) + + if (startOnLaunch) { + scanner.setInversionMode('both') + scanner.start().then( + () => { + /*Started successfully*/ + }, + err => console.log('Error starting scanner: ', err) + ) + } + + if (onMount) onMount(scanner) + + return () => { + // dispose of component + scanner.destroy() + } + } + }, []) + + return ( +
+
+ {!!ViewFinder && } +
+
+ ) +} + +export default QrScanner diff --git a/src/components/UI/Scanner/types.ts b/src/components/UI/Scanner/types.ts new file mode 100644 index 0000000..200c843 --- /dev/null +++ b/src/components/UI/Scanner/types.ts @@ -0,0 +1,79 @@ +import NimiqQrScanner from 'qr-scanner' +export { default as Nimiq } from 'qr-scanner' + +export interface QrScannerProps { + /** + * Media track constraints object, to specify which camera and capabilities to use + */ + constraints?: MediaTrackConstraints + /** + * Property that represents an optional className to modify styles + */ + className?: string + /** + * Property that represents a style for the container + */ + containerStyle?: any + /** + * Property that represents a style for the video container + */ + videoContainerStyle?: any + /** + * Property that represents a style for the video + */ + videoStyle?: any + /** + * Property that represents the ID of the video element + */ + videoId?: string + /** + * Property that represents the view finder component + */ + ViewFinder?: (props: any) => React.ReactElement | null + /** + * Start the camera as soon as the component mounts? + */ + startOnLaunch?: boolean + /** + * A handler to receive the underlying scan controller + */ + onMount?: (controller: NimiqQrScanner) => void + /** + * A handler that can handle both successful and unsuccessful scans + */ + onScan?: (result?: NimiqQrScanner.ScanResult, error?: Error | string) => void + /** + * A handler for successful scans + */ + onDecode?: (result: NimiqQrScanner.ScanResult) => void + /** + * A handler for unsuccessful scans + */ + onDecodeError?: (error: Error | string) => void + /** + * + */ + calculateScanRegion?: (video: HTMLVideoElement) => NimiqQrScanner.ScanRegion + /** + * The preffered camera, will attempt to use this first + */ + preferredCamera?: NimiqQrScanner.FacingMode | NimiqQrScanner.DeviceId + /** + * + */ + maxScansPerSecond?: number + /** + * + */ + highlightScanRegion?: boolean + /** + * + */ + highlightCodeOutline?: boolean + /** + * + */ + overlay?: HTMLDivElement + /** just a temporary flag until we switch entirely to the new api */ + returnDetailedScanResult?: true +} From b9fd37e17c4c1775ded9956dc930b0c3132c142f Mon Sep 17 00:00:00 2001 From: Jona Date: Fri, 27 Oct 2023 12:30:28 -0300 Subject: [PATCH 053/159] feat(page): added Scan --- src/app/scan/page.tsx | 64 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 src/app/scan/page.tsx diff --git a/src/app/scan/page.tsx b/src/app/scan/page.tsx new file mode 100644 index 0000000..e5ff277 --- /dev/null +++ b/src/app/scan/page.tsx @@ -0,0 +1,64 @@ +'use client' + +import Container from '@/components/Layout/Container' +import { Button, Divider, Flex } from '@/components/UI' +import { useRouter } from 'next/navigation' +import QrScanner from '@/components/UI/Scanner/Scanner' +import { TransferTypes } from '@/types/transaction' +import { detectTransferType } from '@/lib/utils' + +export default function Page() { + const router = useRouter() + + const handleScan = (result: any) => { + if (!result || !result.data) return + + const decodeTransferType: TransferTypes | false = detectTransferType( + result.data + ) + if (!decodeTransferType) return + + if (decodeTransferType === TransferTypes.INVOICE) { + router.push(`/tree?data=${result.data}`) + return + } + + router.push(`/tree?data=${result.data}`) + } + + const styleQrReader = { + position: 'relative', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + width: '100%', + maxWidth: '500px', + height: '100%' + } + + return ( + <> + + + + + + + + + + + + + + + ) +} From b415ed863cd15c0297a9f540f590d68f0565d769 Mon Sep 17 00:00:00 2001 From: Jona Date: Fri, 27 Oct 2023 12:30:48 -0300 Subject: [PATCH 054/159] fix(page): integrated button for scan on Tree --- src/app/tree/page.tsx | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/src/app/tree/page.tsx b/src/app/tree/page.tsx index c2dc0b1..2c3e3b7 100644 --- a/src/app/tree/page.tsx +++ b/src/app/tree/page.tsx @@ -64,22 +64,32 @@ export default function Page() { Acerca la tarjeta de quien desea cargar su tarjeta mediante NFC. + + + +
)}
- - - - - - + {cardScanned && ( + <> + + + + + + + + )} ) From f4ea99bb8897d1d7d4348010ebb4b8409911a9eb Mon Sep 17 00:00:00 2001 From: Ferpa Date: Fri, 27 Oct 2023 12:49:17 -0300 Subject: [PATCH 055/159] fix sats convert --- src/app/paydesk/page.tsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/app/paydesk/page.tsx b/src/app/paydesk/page.tsx index 47048b8..02ca75f 100644 --- a/src/app/paydesk/page.tsx +++ b/src/app/paydesk/page.tsx @@ -30,9 +30,7 @@ export default function Page() { const { userConfig } = useContext(LaWalletContext) const numpadData = useNumpad(userConfig.props.currency) - - // TEMP - const sats = numpadData.intAmount[numpadData.usedCurrency] + const sats = numpadData.intAmount["SAT"] const handleClick = async () => { // POC @@ -51,6 +49,10 @@ export default function Page() { router.push('/payment/' + order.id) } + useEffect(() => { + if (numpadData.usedCurrency !== userConfig.props.currency) numpadData.modifyCurrency(userConfig.props.currency) + }, [userConfig.props.currency]) + useEffect(() => { setAmount(sats) // eslint-disable-next-line react-hooks/exhaustive-deps From c5dff956ec5679d02ea5024f5ea7cb2fd1484821 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Fri, 27 Oct 2023 13:01:19 -0300 Subject: [PATCH 056/159] set order publish as parallel --- src/app/paydesk/page.tsx | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/app/paydesk/page.tsx b/src/app/paydesk/page.tsx index 47048b8..ce8adf5 100644 --- a/src/app/paydesk/page.tsx +++ b/src/app/paydesk/page.tsx @@ -40,12 +40,11 @@ export default function Page() { console.dir(order) // console.info('Publishing order') - try { - await publish!(order) - } catch (e) { + + publish!(order).catch(e => { console.warn('Error publishing order') console.warn(e) - } + }) setOrderEvent!(order) router.push('/payment/' + order.id) From 4047d12a6ba42656a2e7030af862a01190f220e0 Mon Sep 17 00:00:00 2001 From: Ferpa Date: Fri, 27 Oct 2023 13:15:32 -0300 Subject: [PATCH 057/159] loader on create invoice --- src/app/paydesk/page.tsx | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/app/paydesk/page.tsx b/src/app/paydesk/page.tsx index 02ca75f..41472b2 100644 --- a/src/app/paydesk/page.tsx +++ b/src/app/paydesk/page.tsx @@ -1,6 +1,6 @@ 'use client' -import { useContext, useEffect } from 'react' +import { useContext, useEffect, useState } from 'react' import { useRouter } from 'next/navigation' import { PantheonIcon } from '@bitcoin-design/bitcoin-icons-react/filled' @@ -22,18 +22,23 @@ import TokenList from '@/components/TokenList' import { useNumpad } from '@/hooks/useNumpad' import { useOrder } from '@/context/Order' import { useNostr } from '@/context/Nostr' +import { BtnLoader } from '@/components/Loader/Loader' export default function Page() { const router = useRouter() + const { generateOrderEvent, setAmount, setOrderEvent } = useOrder() const { publish } = useNostr() + const [loading, setLoading] = useState(false) const { userConfig } = useContext(LaWalletContext) const numpadData = useNumpad(userConfig.props.currency) const sats = numpadData.intAmount["SAT"] const handleClick = async () => { - // POC + if (sats === 0 || loading) return; + + setLoading(true) const order = generateOrderEvent!() console.dir(order) @@ -44,7 +49,9 @@ export default function Page() { console.warn('Error publishing order') console.warn(e) } + setOrderEvent!(order) + setLoading(false) router.push('/payment/' + order.id) } @@ -82,7 +89,7 @@ export default function Page() {
- + From ded4e90ac6a425e636d1d5fac94a075a07bb5167 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Fri, 27 Oct 2023 13:49:49 -0300 Subject: [PATCH 058/159] disabled react-hooks/exhaustive-deps --- src/components/UI/Scanner/Scanner.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/UI/Scanner/Scanner.tsx b/src/components/UI/Scanner/Scanner.tsx index 2f6310a..e7d28e5 100644 --- a/src/components/UI/Scanner/Scanner.tsx +++ b/src/components/UI/Scanner/Scanner.tsx @@ -88,6 +88,7 @@ const QrScanner = (props: QrScannerProps) => { scanner.destroy() } } + // eslint-disable-next-line react-hooks/exhaustive-deps }, []) return ( From 1bc0950c69c41fd52e0736dbc0a556e202f8a258 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Fri, 27 Oct 2023 13:50:07 -0300 Subject: [PATCH 059/159] added clear --- src/context/Order.tsx | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/context/Order.tsx b/src/context/Order.tsx index 001de52..f7bb0fa 100644 --- a/src/context/Order.tsx +++ b/src/context/Order.tsx @@ -31,6 +31,7 @@ export interface IOrderContext { zapEvents: NostrEvent[] currentInvoice?: string memo: unknown + clear: () => void setMemo: Dispatch> setAmount: Dispatch> checkOut: () => Promise<{ eventId: string }> @@ -64,6 +65,9 @@ export const OrderContext = createContext({ memo: undefined, setMemo: function (_value: unknown): void { throw new Error('Function not implemented.') + }, + clear: function (): void { + throw new Error('Function not implemented.') } }) @@ -207,6 +211,15 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { [generateZapEvent, requestInvoice] ) + const clear = () => { + setAmount(0) + setOrderId(undefined) + setOrderEvent(undefined) + setMemo({}) + setFiatAmount(0) + setZapEvents([]) + } + // Handle new incoming zap const onZap = (event: NDKEvent) => { if (event.pubkey !== zapEmitterPubKey) { @@ -235,6 +248,7 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { pendingAmount, currentInvoice, memo, + clear, setMemo, checkOut, setAmount, From a33283b93e61bc4d993619aa06718d9429b1c526 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Fri, 27 Oct 2023 13:50:20 -0300 Subject: [PATCH 060/159] added util functions --- src/lib/utils.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/lib/utils.ts b/src/lib/utils.ts index ea97c3f..51e50af 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -36,3 +36,16 @@ export const detectTransferType = (data: string): TransferTypes | false => { return false } + +export const isValidLightningURL = (url: string): boolean => { + const pattern = /^lightning:\/\/[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/ + return pattern.test(url) +} + +export const extractLNURLFromQR = (url: string): string | null => { + const pattern = + /^lightning:\/\/([a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})$/ + const matches = url.match(pattern) + + return matches ? matches[1] : null +} From 7baa30f5d6a2b23284e8ddbd47e45e2d8259c31a Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Fri, 27 Oct 2023 13:50:34 -0300 Subject: [PATCH 061/159] added params for lN --- src/context/LN.tsx | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/context/LN.tsx b/src/context/LN.tsx index f983c73..41d9b0d 100644 --- a/src/context/LN.tsx +++ b/src/context/LN.tsx @@ -14,7 +14,8 @@ export interface ILNContext { zapEmitterPubKey?: string callbackUrl?: string destination?: string - requestInvoice?: (_req: InvoiceRequest) => Promise + fetchLNURL: (_lnurl: string) => Promise + requestInvoice: (_req: InvoiceRequest) => Promise } import { requestPayServiceParams } from 'lnurl-pay' @@ -22,7 +23,14 @@ import axios from 'axios' import type { InvoiceRequest } from '@/types/lightning' // Context -export const LNContext = createContext({}) +export const LNContext = createContext({ + fetchLNURL: function (_lnurl: string): Promise { + throw new Error('Function not implemented.') + }, + requestInvoice: function (_req: InvoiceRequest): Promise { + throw new Error('Function not implemented.') + } +}) // Component Props interface ILNProviderProps { @@ -35,13 +43,13 @@ export const LNProvider = ({ children }: ILNProviderProps) => { const [zapEmitterPubKey, setZapEmitterPubKey] = useState() const [callbackUrl, setCallbackUrl] = useState() - const fetchLNURL = useCallback(async () => { - console.info('FETCHING LNURL') + const fetchLNURL = useCallback(async (lnurl: string) => { + console.info(`Fetching LNURL: ${lnurl}`) const lud06 = await requestPayServiceParams({ - lnUrlOrAddress: DESTINATION_LNURL + lnUrlOrAddress: lnurl }) - console.info('lud06:') + console.info('LUD06 response:') console.dir(lud06) // TODO: Check if lud06 is valid @@ -61,16 +69,13 @@ export const LNProvider = ({ children }: ILNProviderProps) => { [callbackUrl] ) - useEffect(() => { - void fetchLNURL() - }, [fetchLNURL]) - return ( From 68d5378e3f1c851549d2c038bab143cdbf06906a Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Fri, 27 Oct 2023 13:51:01 -0300 Subject: [PATCH 062/159] implemented lnurl on tree --- src/app/tree/page.tsx | 77 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 73 insertions(+), 4 deletions(-) diff --git a/src/app/tree/page.tsx b/src/app/tree/page.tsx index 2c3e3b7..e636c1c 100644 --- a/src/app/tree/page.tsx +++ b/src/app/tree/page.tsx @@ -1,7 +1,7 @@ 'use client' -import { useContext, useState } from 'react' -import { useRouter } from 'next/navigation' +import { useCallback, useContext, useEffect, useState } from 'react' +import { useRouter, useSearchParams } from 'next/navigation' import { SharedWalletIcon } from '@bitcoin-design/bitcoin-icons-react/filled' import { LaWalletContext } from '@/context/LaWalletContext' @@ -20,20 +20,89 @@ import Container from '@/components/Layout/Container' import Navbar from '@/components/Layout/Navbar' import TokenList from '@/components/TokenList' import { useNumpad } from '@/hooks/useNumpad' +import { extractLNURLFromQR } from '@/lib/utils' +import { useLN } from '@/context/LN' +import { useNostr } from '@/context/Nostr' +import { useOrder } from '@/context/Order' export default function Page() { const router = useRouter() + const { generateOrderEvent, setAmount, setOrderEvent, clear } = useOrder() + const { publish } = useNostr() + const query = useSearchParams() + const { fetchLNURL } = useLN() const { userConfig } = useContext(LaWalletContext) const numpadData = useNumpad(userConfig.props.currency) const [cardScanned, setCardScanned] = useState(false) - const handleClick = () => { + const processUrl = useCallback( + async (url: string) => { + const lnurl = extractLNURLFromQR(url) + + if (!lnurl) { + alert('Invalid QR code') + return + } + + try { + await fetchLNURL(lnurl) + setCardScanned(true) + } catch (e) { + console.error(e) + alert(JSON.stringify(e)) + } + }, + [fetchLNURL] + ) + + const sats = numpadData.intAmount['SAT'] + + const handleClick = async () => { // POC - router.push('/payment') + const order = generateOrderEvent!() + + console.dir(order) + // console.info('Publishing order') + + publish!(order).catch(e => { + console.warn('Error publishing order') + console.warn(e) + }) + setOrderEvent!(order) + + router.push('/payment/' + order.id) } + useEffect(() => { + if (numpadData.usedCurrency !== userConfig.props.currency) + numpadData.modifyCurrency(userConfig.props.currency) + }, [numpadData, userConfig.props.currency]) + + useEffect(() => { + setAmount(sats) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [sats]) + + useEffect(() => { + const url = query.get('data') + + if (!url) { + return + } + + console.info('processUrl?') + processUrl(url) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [query]) + + // on mount + useEffect(() => { + clear() + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []) + return ( <> From 2092a5a876e7b1ef77a316d1ddb246c947ca1e5d Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Fri, 27 Oct 2023 13:51:35 -0300 Subject: [PATCH 063/159] added destination url for cash --- src/app/paydesk/page.tsx | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/app/paydesk/page.tsx b/src/app/paydesk/page.tsx index 07a772f..76d5b1c 100644 --- a/src/app/paydesk/page.tsx +++ b/src/app/paydesk/page.tsx @@ -22,15 +22,19 @@ import TokenList from '@/components/TokenList' import { useNumpad } from '@/hooks/useNumpad' import { useOrder } from '@/context/Order' import { useNostr } from '@/context/Nostr' +import { useLN } from '@/context/LN' + +const DESTINATION_LNURL = process.env.NEXT_PUBLIC_DESTINATION! export default function Page() { const router = useRouter() - const { generateOrderEvent, setAmount, setOrderEvent } = useOrder() + const { generateOrderEvent, setAmount, setOrderEvent, clear } = useOrder() const { publish } = useNostr() + const { fetchLNURL } = useLN() const { userConfig } = useContext(LaWalletContext) const numpadData = useNumpad(userConfig.props.currency) - const sats = numpadData.intAmount["SAT"] + const sats = numpadData.intAmount['SAT'] const handleClick = async () => { // POC @@ -49,14 +53,25 @@ export default function Page() { } useEffect(() => { - if (numpadData.usedCurrency !== userConfig.props.currency) numpadData.modifyCurrency(userConfig.props.currency) - }, [userConfig.props.currency]) + if (numpadData.usedCurrency !== userConfig.props.currency) + numpadData.modifyCurrency(userConfig.props.currency) + }, [numpadData, userConfig.props.currency]) useEffect(() => { setAmount(sats) // eslint-disable-next-line react-hooks/exhaustive-deps }, [sats]) + useEffect(() => { + void fetchLNURL(DESTINATION_LNURL) + }, [fetchLNURL]) + + // on mount + useEffect(() => { + clear() + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []) + return ( <> From 7f107c1b8d40891d8e7022debcd06fe90859dd1a Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Fri, 27 Oct 2023 13:53:56 -0300 Subject: [PATCH 064/159] start read for button --- src/app/payment/[orderId]/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/payment/[orderId]/page.tsx b/src/app/payment/[orderId]/page.tsx index 96178af..2d41822 100644 --- a/src/app/payment/[orderId]/page.tsx +++ b/src/app/payment/[orderId]/page.tsx @@ -248,7 +248,7 @@ export default function Page() { {isAvailable && permission === 'prompt' && ( - )} From 579ff4612677da9d80d5fe165bcad3714b276ac1 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Fri, 27 Oct 2023 13:59:46 -0300 Subject: [PATCH 065/159] added optional back query --- src/app/payment/[orderId]/page.tsx | 18 ++++++++++++++---- src/app/tree/page.tsx | 2 +- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/app/payment/[orderId]/page.tsx b/src/app/payment/[orderId]/page.tsx index 2d41822..e192da7 100644 --- a/src/app/payment/[orderId]/page.tsx +++ b/src/app/payment/[orderId]/page.tsx @@ -1,7 +1,7 @@ 'use client' import { useCallback, useContext, useEffect, useState } from 'react' -import { useParams, useRouter } from 'next/navigation' +import { useParams, useRouter, useSearchParams } from 'next/navigation' import { CheckIcon } from '@bitcoin-design/bitcoin-icons-react/filled' import { LaWalletContext } from '@/context/LaWalletContext' @@ -34,6 +34,7 @@ import { useCard } from '@/hooks/useCard' export default function Page() { const router = useRouter() const { orderId: orderIdFromUrl } = useParams() + const query = useSearchParams() const { subscribeZap, getEvent } = useNostr() const { zapEmitterPubKey } = useLN() const { @@ -54,6 +55,15 @@ export default function Page() { const [finished, setFinished] = useState(false) + const handleBack = useCallback(() => { + const back = query.get('back') + if (!back) { + router.back() + return + } + router.push(back) + }, [router, query]) + const fetchOrder = useCallback( async (_orderId: string) => { const order = await getEvent!(_orderId) @@ -96,7 +106,7 @@ export default function Page() { useEffect(() => { // Not orderId found on url if (!orderIdFromUrl) { - router.back() + handleBack() return } @@ -201,7 +211,7 @@ export default function Page() { */} - @@ -253,7 +263,7 @@ export default function Page() { )} - diff --git a/src/app/tree/page.tsx b/src/app/tree/page.tsx index e636c1c..30659fa 100644 --- a/src/app/tree/page.tsx +++ b/src/app/tree/page.tsx @@ -72,7 +72,7 @@ export default function Page() { }) setOrderEvent!(order) - router.push('/payment/' + order.id) + router.push(`/payment/${order.id}?back=/tree`) } useEffect(() => { From 2e5bbc7a76d4134c58c9e9f256837aa340c607c1 Mon Sep 17 00:00:00 2001 From: Ferpa Date: Fri, 27 Oct 2023 14:19:29 -0300 Subject: [PATCH 066/159] payment: show qr after load event --- src/app/payment/[orderId]/page.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/app/payment/[orderId]/page.tsx b/src/app/payment/[orderId]/page.tsx index 96178af..c59602a 100644 --- a/src/app/payment/[orderId]/page.tsx +++ b/src/app/payment/[orderId]/page.tsx @@ -230,7 +230,6 @@ export default function Page() { {formatToPreference( userConfig.props.currency, amount - // numpadData.intAmount[numpadData.usedCurrency] )} @@ -240,7 +239,7 @@ export default function Page() { - + {!invoice ? : } From ce0d43c765fad005c56d906541239d7973e6a5f0 Mon Sep 17 00:00:00 2001 From: Jona Date: Fri, 27 Oct 2023 14:50:35 -0300 Subject: [PATCH 067/159] feat: integrated PWA --- .gitignore | 6 + next.config.js | 20 +- package.json | 1 + pnpm-lock.yaml | 2664 +++++++++++++++++++++++++++++++-- public/icons/icon-192x192.png | Bin 0 -> 2324 bytes public/icons/icon-512x512.png | Bin 0 -> 7050 bytes public/manifest.json | 22 + 7 files changed, 2605 insertions(+), 108 deletions(-) create mode 100644 public/icons/icon-192x192.png create mode 100644 public/icons/icon-512x512.png create mode 100644 public/manifest.json diff --git a/.gitignore b/.gitignore index 45c1abc..7dcafa7 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,9 @@ yarn-error.log* # typescript *.tsbuildinfo next-env.d.ts + +# pwa +public/sw.js +public/sw.js.map +public/workbox-*.js +public/workbox-*.js.map diff --git a/next.config.js b/next.config.js index 5132e7b..a5fdce5 100644 --- a/next.config.js +++ b/next.config.js @@ -1,8 +1,18 @@ -const path = require('path') +/** @type {import('next').NextConfig} */ -module.exports = { - // reactStrictMode: false, // React Strict Mode is off - sassOptions: { - includePaths: [path.join(__dirname, 'styles')] +const withPWA = require('next-pwa')({ + dest: 'public', + skipWaiting: true, + register: true +}) + +const nextConfig = { + reactStrictMode: false, + trailingSlash: true, + swcMinify: true, + compiler: { + styledComponents: true } } + +module.exports = withPWA(nextConfig) diff --git a/package.json b/package.json index cae207a..bdd020c 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "date-fns": "^2.30.0", "lnurl-pay": "^3.0.1", "next": "13.5.6", + "next-pwa": "^5.6.0", "nostr-tools": "^1.17.0", "prettier": "^3.0.3", "qr-scanner": "^1.4.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 412ce66..a92f8c7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -28,7 +28,10 @@ dependencies: version: 3.0.1 next: specifier: 13.5.6 - version: 13.5.6(react-dom@18.0.0)(react@18.0.0)(sass@1.69.4) + version: 13.5.6(@babel/core@7.23.2)(react-dom@18.0.0)(react@18.0.0)(sass@1.69.4) + next-pwa: + specifier: ^5.6.0 + version: 5.6.0(@babel/core@7.23.2)(next@13.5.6)(webpack@5.89.0) nostr-tools: specifier: ^1.17.0 version: 1.17.0(typescript@5.0.2) @@ -87,6 +90,26 @@ packages: engines: {node: '>=0.10.0'} dev: true + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + dev: false + + /@apideck/better-ajv-errors@0.3.6(ajv@8.12.0): + resolution: {integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==} + engines: {node: '>=10'} + peerDependencies: + ajv: '>=8' + dependencies: + ajv: 8.12.0 + json-schema: 0.4.0 + jsonpointer: 5.0.1 + leven: 3.1.0 + dev: false + /@aws-crypto/sha256-js@5.2.0: resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} engines: {node: '>=16.0.0'} @@ -99,24 +122,1171 @@ packages: /@aws-crypto/util@5.2.0: resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} dependencies: - '@aws-sdk/types': 3.433.0 - '@smithy/util-utf8': 2.0.0 - tslib: 2.6.2 + '@aws-sdk/types': 3.433.0 + '@smithy/util-utf8': 2.0.0 + tslib: 2.6.2 + dev: false + + /@aws-sdk/types@3.433.0: + resolution: {integrity: sha512-0jEE2mSrNDd8VGFjTc1otYrwYPIkzZJEIK90ZxisKvQ/EURGBhNzWn7ejWB9XCMFT6XumYLBR0V9qq5UPisWtA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.4.0 + tslib: 2.6.2 + dev: false + + /@babel/code-frame@7.22.13: + resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.22.20 + chalk: 2.4.2 + dev: false + + /@babel/compat-data@7.23.2: + resolution: {integrity: sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==} + engines: {node: '>=6.9.0'} + dev: false + + /@babel/core@7.23.2: + resolution: {integrity: sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.23.0 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helpers': 7.23.2 + '@babel/parser': 7.23.0 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.2 + '@babel/types': 7.23.0 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/generator@7.23.0: + resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + jsesc: 2.5.2 + dev: false + + /@babel/helper-annotate-as-pure@7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: false + + /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: + resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: false + + /@babel/helper-compilation-targets@7.22.15: + resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.23.2 + '@babel/helper-validator-option': 7.22.15 + browserslist: 4.22.1 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: false + + /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + dev: false + + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + dev: false + + /@babel/helper-define-polyfill-provider@0.4.3(@babel/core@7.23.2): + resolution: {integrity: sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + dev: false + + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.23.0 + dev: false + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: false + + /@babel/helper-member-expression-to-functions@7.23.0: + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: false + + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: false + + /@babel/helper-module-transforms@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: false + + /@babel/helper-optimise-call-expression@7.22.5: + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: false + + /@babel/helper-plugin-utils@7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + dev: false + + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.2): + resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-wrap-function': 7.22.20 + dev: false + + /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.2): + resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + dev: false + + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: false + + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: false + + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: false + + /@babel/helper-string-parser@7.22.5: + resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} + engines: {node: '>=6.9.0'} + dev: false + + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + dev: false + + /@babel/helper-validator-option@7.22.15: + resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} + engines: {node: '>=6.9.0'} + dev: false + + /@babel/helper-wrap-function@7.22.20: + resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-function-name': 7.23.0 + '@babel/template': 7.22.15 + '@babel/types': 7.23.0 + dev: false + + /@babel/helpers@7.23.2: + resolution: {integrity: sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.2 + '@babel/types': 7.23.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/highlight@7.22.20: + resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: false + + /@babel/parser@7.23.0: + resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.0 + dev: false + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.23.0(@babel/core@7.23.2) + dev: false + + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.2): + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + dev: false + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.2): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.2): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.2): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.2): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.2): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.2): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.2): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.2): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.2): + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-async-generator-functions@7.23.2(@babel/core@7.23.2): + resolution: {integrity: sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.2) + dev: false + + /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.2) + dev: false + + /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-block-scoping@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-class-static-block@7.22.11(@babel/core@7.23.2): + resolution: {integrity: sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.2) + dev: false + + /@babel/plugin-transform-classes@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) + '@babel/helper-split-export-declaration': 7.22.6 + globals: 11.12.0 + dev: false + + /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/template': 7.22.15 + dev: false + + /@babel/plugin-transform-destructuring@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-dynamic-import@7.22.11(@babel/core@7.23.2): + resolution: {integrity: sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.2) + dev: false + + /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-export-namespace-from@7.22.11(@babel/core@7.23.2): + resolution: {integrity: sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.2) + dev: false + + /@babel/plugin-transform-for-of@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-json-strings@7.22.11(@babel/core@7.23.2): + resolution: {integrity: sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.2) + dev: false + + /@babel/plugin-transform-literals@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-logical-assignment-operators@7.22.11(@babel/core@7.23.2): + resolution: {integrity: sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.2) + dev: false + + /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-modules-amd@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-modules-commonjs@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + dev: false + + /@babel/plugin-transform-modules-systemjs@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 + dev: false + + /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-nullish-coalescing-operator@7.22.11(@babel/core@7.23.2): + resolution: {integrity: sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.2) + dev: false + + /@babel/plugin-transform-numeric-separator@7.22.11(@babel/core@7.23.2): + resolution: {integrity: sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.2) + dev: false + + /@babel/plugin-transform-object-rest-spread@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.23.2 + '@babel/core': 7.23.2 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.23.2) + dev: false + + /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) + dev: false + + /@babel/plugin-transform-optional-catch-binding@7.22.11(@babel/core@7.23.2): + resolution: {integrity: sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.2) + dev: false + + /@babel/plugin-transform-optional-chaining@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.2) + dev: false + + /@babel/plugin-transform-parameters@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-private-property-in-object@7.22.11(@babel/core@7.23.2): + resolution: {integrity: sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.2) + dev: false + + /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-regenerator@7.22.10(@babel/core@7.23.2): + resolution: {integrity: sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + regenerator-transform: 0.15.2 + dev: false + + /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-spread@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: false + + /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-unicode-escapes@7.22.10(@babel/core@7.23.2): + resolution: {integrity: sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/preset-env@7.23.2(@babel/core@7.23.2): + resolution: {integrity: sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.23.2 + '@babel/core': 7.23.2 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.2) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.2) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.2) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.2) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.2) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.2) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-async-generator-functions': 7.23.2(@babel/core@7.23.2) + '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-block-scoping': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-class-static-block': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-classes': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-destructuring': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-dynamic-import': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-export-namespace-from': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-for-of': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-json-strings': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-logical-assignment-operators': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-modules-amd': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-modules-commonjs': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-modules-systemjs': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-nullish-coalescing-operator': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-numeric-separator': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-object-rest-spread': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-optional-catch-binding': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-optional-chaining': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-private-property-in-object': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-regenerator': 7.22.10(@babel/core@7.23.2) + '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-unicode-escapes': 7.22.10(@babel/core@7.23.2) + '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.23.2) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.2) + '@babel/types': 7.23.0 + babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.2) + babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.2) + babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.2) + core-js-compat: 3.33.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.2): + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/types': 7.23.0 + esutils: 2.0.3 + dev: false + + /@babel/regjsgen@0.8.0: + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + dev: false + + /@babel/runtime@7.23.2: + resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.0 + + /@babel/template@7.22.15: + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 dev: false - /@aws-sdk/types@3.433.0: - resolution: {integrity: sha512-0jEE2mSrNDd8VGFjTc1otYrwYPIkzZJEIK90ZxisKvQ/EURGBhNzWn7ejWB9XCMFT6XumYLBR0V9qq5UPisWtA==} - engines: {node: '>=14.0.0'} + /@babel/traverse@7.23.2: + resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} + engines: {node: '>=6.9.0'} dependencies: - '@smithy/types': 2.4.0 - tslib: 2.6.2 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.23.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color dev: false - /@babel/runtime@7.23.2: - resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} + /@babel/types@7.23.0: + resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} engines: {node: '>=6.9.0'} dependencies: - regenerator-runtime: 0.14.0 + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + dev: false /@bitcoin-design/bitcoin-icons-react@0.1.10(react@18.0.0): resolution: {integrity: sha512-f7GSutKHa4EK4LWI/phnGCJsN8fzFbVAVQ4F1MYxiza34LVmXmbgHUmdP/BR8ZeQSIbZLt19inpJZDBtQvYe4Q==} @@ -172,6 +1342,43 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.20 + dev: false + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + dev: false + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: false + + /@jridgewell/source-map@0.3.5: + resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + dev: false + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: false + + /@jridgewell/trace-mapping@0.3.20: + resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: false + /@next/env@13.5.6: resolution: {integrity: sha512-Yac/bV5sBGkkEXmAX5FWPS9Mmo2rthrOPRQQNfycJPkjUAUclomCPH7QFVCDQ4Mp2k2K1SSM6m0zrxYrOwtFQw==} dev: false @@ -293,12 +1500,10 @@ packages: dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - dev: true /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - dev: true /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} @@ -306,7 +1511,6 @@ packages: dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 - dev: true /@nostr-dev-kit/ndk@2.0.3(typescript@5.0.2): resolution: {integrity: sha512-rKIJBIU0dZHaXwj1TY18VSLYsoIe1aQ7TAxkH3WFx3lGTXCz+nlGh5bsyvgMBdbyb0iecdjsaKqBRpEWMzYC9g==} @@ -327,6 +1531,60 @@ packages: - typescript dev: false + /@rollup/plugin-babel@5.3.1(@babel/core@7.23.2)(rollup@2.79.1): + resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} + engines: {node: '>= 10.0.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/babel__core': ^7.1.9 + rollup: ^1.20.0||^2.0.0 + peerDependenciesMeta: + '@types/babel__core': + optional: true + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-module-imports': 7.22.15 + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + rollup: 2.79.1 + dev: false + + /@rollup/plugin-node-resolve@11.2.1(rollup@2.79.1): + resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==} + engines: {node: '>= 10.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + dependencies: + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + '@types/resolve': 1.17.1 + builtin-modules: 3.3.0 + deepmerge: 4.3.1 + is-module: 1.0.0 + resolve: 1.22.8 + rollup: 2.79.1 + dev: false + + /@rollup/plugin-replace@2.4.2(rollup@2.79.1): + resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==} + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 + dependencies: + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + magic-string: 0.25.9 + rollup: 2.79.1 + dev: false + + /@rollup/pluginutils@3.1.0(rollup@2.79.1): + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + dependencies: + '@types/estree': 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.3.1 + rollup: 2.79.1 + dev: false + /@rushstack/eslint-patch@1.5.1: resolution: {integrity: sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==} dev: true @@ -380,6 +1638,15 @@ packages: tslib: 2.6.2 dev: false + /@surma/rollup-plugin-off-main-thread@2.2.3: + resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} + dependencies: + ejs: 3.1.9 + json5: 2.2.3 + magic-string: 0.25.9 + string.prototype.matchall: 4.0.10 + dev: false + /@swc/helpers@0.5.2: resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} dependencies: @@ -392,10 +1659,47 @@ packages: '@types/node': 20.0.0 dev: false + /@types/eslint-scope@3.7.6: + resolution: {integrity: sha512-zfM4ipmxVKWdxtDaJ3MP3pBurDXOCoyjvlpE3u6Qzrmw4BPbfm4/ambIeTk/r/J0iq/+2/xp0Fmt+gFvXJY2PQ==} + dependencies: + '@types/eslint': 8.44.6 + '@types/estree': 1.0.3 + dev: false + + /@types/eslint@8.44.6: + resolution: {integrity: sha512-P6bY56TVmX8y9J87jHNgQh43h6VVU+6H7oN7hgvivV81K2XY8qJZ5vqPy/HdUoVIelii2kChYVzQanlswPWVFw==} + dependencies: + '@types/estree': 1.0.3 + '@types/json-schema': 7.0.14 + dev: false + + /@types/estree@0.0.39: + resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} + dev: false + + /@types/estree@1.0.3: + resolution: {integrity: sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==} + dev: false + + /@types/glob@7.2.0: + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 20.0.0 + dev: false + + /@types/json-schema@7.0.14: + resolution: {integrity: sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==} + dev: false + /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true + /@types/minimatch@5.1.2: + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + dev: false + /@types/node@20.0.0: resolution: {integrity: sha512-cD2uPTDnQQCVpmRefonO98/PPijuOnnEy5oytWJFPY1N9aJCz2wJ5kSGWO+zJoed2cY2JxQh6yBuUq4vIn61hw==} @@ -421,6 +1725,12 @@ packages: csstype: 3.1.2 dev: true + /@types/resolve@1.17.1: + resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} + dependencies: + '@types/node': 20.0.0 + dev: false + /@types/scheduler@0.16.5: resolution: {integrity: sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw==} dev: true @@ -429,6 +1739,10 @@ packages: resolution: {integrity: sha512-Rm17MsTpQQP5Jq4BF7CdrxJsDufoiL/q5IbJZYZmOZAJALyijgF7BzLgobXUqraNcQdqFYLYGeglDp6QzaxPpg==} dev: false + /@types/trusted-types@2.0.5: + resolution: {integrity: sha512-I3pkr8j/6tmQtKV/ZzHtuaqYSQvyjGRKH4go60Rr0IDLlFxuRT5V32uvB1mecM5G1EVAUyF/4r4QZ1GHgz+mxA==} + dev: false + /@typescript-eslint/parser@6.9.0(eslint@8.0.0)(typescript@5.0.2): resolution: {integrity: sha512-GZmjMh4AJ/5gaH4XF2eXA8tMnHWP+Pm1mjQR2QN4Iz+j/zO04b9TOvJYOX2sCNIQHtRStKTxRY1FX7LhpJT4Gw==} engines: {node: ^16.0.0 || >=18.0.0} @@ -492,6 +1806,128 @@ packages: eslint-visitor-keys: 3.4.3 dev: true + /@webassemblyjs/ast@1.11.6: + resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + dev: false + + /@webassemblyjs/floating-point-hex-parser@1.11.6: + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + dev: false + + /@webassemblyjs/helper-api-error@1.11.6: + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + dev: false + + /@webassemblyjs/helper-buffer@1.11.6: + resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + dev: false + + /@webassemblyjs/helper-numbers@1.11.6: + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@xtuc/long': 4.2.2 + dev: false + + /@webassemblyjs/helper-wasm-bytecode@1.11.6: + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + dev: false + + /@webassemblyjs/helper-wasm-section@1.11.6: + resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + dev: false + + /@webassemblyjs/ieee754@1.11.6: + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + dependencies: + '@xtuc/ieee754': 1.2.0 + dev: false + + /@webassemblyjs/leb128@1.11.6: + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + dependencies: + '@xtuc/long': 4.2.2 + dev: false + + /@webassemblyjs/utf8@1.11.6: + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + dev: false + + /@webassemblyjs/wasm-edit@1.11.6: + resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-opt': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/wast-printer': 1.11.6 + dev: false + + /@webassemblyjs/wasm-gen@1.11.6: + resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: false + + /@webassemblyjs/wasm-opt@1.11.6: + resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + dev: false + + /@webassemblyjs/wasm-parser@1.11.6: + resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: false + + /@webassemblyjs/wast-printer@1.11.6: + resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@xtuc/long': 4.2.2 + dev: false + + /@xtuc/ieee754@1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + dev: false + + /@xtuc/long@4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + dev: false + + /acorn-import-assertions@1.9.0(acorn@8.10.0): + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.10.0 + dev: false + /acorn-jsx@5.3.2(acorn@8.10.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -504,12 +1940,19 @@ packages: resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} engines: {node: '>=0.4.0'} hasBin: true - dev: true /aes-js@3.1.2: resolution: {integrity: sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==} dev: false + /ajv-keywords@3.5.2(ajv@6.12.6): + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: false + /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -517,7 +1960,15 @@ packages: fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true + + /ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: false /ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} @@ -529,12 +1980,18 @@ packages: engines: {node: '>=8'} dev: true + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: false + /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - dev: true /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} @@ -559,7 +2016,6 @@ packages: dependencies: call-bind: 1.0.5 is-array-buffer: 3.0.2 - dev: true /array-includes@3.1.7: resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} @@ -572,10 +2028,21 @@ packages: is-string: 1.0.7 dev: true + /array-union@1.0.2: + resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} + engines: {node: '>=0.10.0'} + dependencies: + array-uniq: 1.0.3 + dev: false + /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - dev: true + + /array-uniq@1.0.3: + resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} + engines: {node: '>=0.10.0'} + dev: false /array.prototype.findlastindex@1.2.3: resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} @@ -629,7 +2096,6 @@ packages: get-intrinsic: 1.2.2 is-array-buffer: 3.0.2 is-shared-array-buffer: 1.0.2 - dev: true /assert@2.1.0: resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} @@ -645,6 +2111,10 @@ packages: resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} dev: true + /async@3.2.4: + resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} + dev: false + /asynciterator.prototype@1.0.0: resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} dependencies: @@ -655,6 +2125,11 @@ packages: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: false + /at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + dev: false + /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} @@ -680,9 +2155,59 @@ packages: dequal: 2.0.3 dev: true + /babel-loader@8.3.0(@babel/core@7.23.2)(webpack@5.89.0): + resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==} + engines: {node: '>= 8.9'} + peerDependencies: + '@babel/core': ^7.0.0 + webpack: '>=2' + dependencies: + '@babel/core': 7.23.2 + find-cache-dir: 3.3.2 + loader-utils: 2.0.4 + make-dir: 3.1.0 + schema-utils: 2.7.1 + webpack: 5.89.0 + dev: false + + /babel-plugin-polyfill-corejs2@0.4.6(@babel/core@7.23.2): + resolution: {integrity: sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/compat-data': 7.23.2 + '@babel/core': 7.23.2 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.2) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false + + /babel-plugin-polyfill-corejs3@0.8.6(@babel/core@7.23.2): + resolution: {integrity: sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.2) + core-js-compat: 3.33.1 + transitivePeerDependencies: + - supports-color + dev: false + + /babel-plugin-polyfill-regenerator@0.5.3(@babel/core@7.23.2): + resolution: {integrity: sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.2) + transitivePeerDependencies: + - supports-color + dev: false + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true /base-x@4.0.0: resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} @@ -700,6 +2225,10 @@ packages: resolution: {integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==} dev: false + /big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + dev: false + /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} @@ -744,7 +2273,12 @@ packages: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - dev: true + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: false /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} @@ -762,6 +2296,17 @@ packages: pako: 1.0.11 dev: false + /browserslist@4.22.1: + resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001553 + electron-to-chromium: 1.4.568 + node-releases: 2.0.13 + update-browserslist-db: 1.0.13(browserslist@4.22.1) + dev: false + /bs58@5.0.0: resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} dependencies: @@ -775,6 +2320,10 @@ packages: bs58: 5.0.0 dev: false + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: false + /buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} dependencies: @@ -790,6 +2339,11 @@ packages: node-gyp-build: 4.6.1 dev: false + /builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: false + /builtin-status-codes@3.0.0: resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} dev: false @@ -821,13 +2375,21 @@ packages: resolution: {integrity: sha512-N0ttd6TrFfuqKNi+pMgWJTb9qrdJu4JSpgPFLe/lrD19ugC6fZgF0pUewRowDwzdDnb9V41mFcdlYgl/PyKf4A==} dev: false + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: false + /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - dev: true /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} @@ -844,6 +2406,11 @@ packages: fsevents: 2.3.3 dev: false + /chrome-trace-event@1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + dev: false + /cipher-base@1.0.4: resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} dependencies: @@ -851,20 +2418,38 @@ packages: safe-buffer: 5.2.1 dev: false + /clean-webpack-plugin@4.0.0(webpack@5.89.0): + resolution: {integrity: sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==} + engines: {node: '>=10.0.0'} + peerDependencies: + webpack: '>=4.0.0 <6.0.0' + dependencies: + del: 4.1.1 + webpack: 5.89.0 + dev: false + /client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} dev: false + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: false + /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - dev: true + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: false /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: true /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} @@ -873,14 +2458,36 @@ packages: delayed-stream: 1.0.0 dev: false + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: false + + /common-tags@1.8.2: + resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} + engines: {node: '>=4.0.0'} + dev: false + + /commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + dev: false + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: true /confetti-js@0.0.18: resolution: {integrity: sha512-0B7pYmZGBZuBkN32ydjWRpJLfRUT9KZYkQKkC4SGrAsUq0XE2DLY5foCWBXMXXVg7sFKs3qIb+qsDx1eFTeSvA==} dev: false + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: false + + /core-js-compat@3.33.1: + resolution: {integrity: sha512-6pYKNOgD/j/bkC5xS5IIg6bncid3rfrI42oBH1SQJbsmYPKF7rhzcFzYCcxYMmNQQ0rCEB8WqpW7QHndOggaeQ==} + dependencies: + browserslist: 4.22.1 + dev: false + /create-hash@1.2.0: resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} dependencies: @@ -900,6 +2507,11 @@ packages: which: 2.0.2 dev: true + /crypto-random-string@2.0.0: + resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + engines: {node: '>=8'} + dev: false + /css-color-keywords@1.0.0: resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} engines: {node: '>=4'} @@ -976,6 +2588,11 @@ packages: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: false + /define-data-property@1.1.1: resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} engines: {node: '>= 0.4'} @@ -992,6 +2609,19 @@ packages: has-property-descriptors: 1.0.1 object-keys: 1.1.1 + /del@4.1.1: + resolution: {integrity: sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==} + engines: {node: '>=6'} + dependencies: + '@types/glob': 7.2.0 + globby: 6.1.0 + is-path-cwd: 2.2.0 + is-path-in-cwd: 2.1.0 + p-map: 2.1.0 + pify: 4.0.1 + rimraf: 2.7.1 + dev: false + /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -1007,7 +2637,6 @@ packages: engines: {node: '>=8'} dependencies: path-type: 4.0.0 - dev: true /doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} @@ -1023,6 +2652,18 @@ packages: esutils: 2.0.3 dev: true + /ejs@3.1.9: + resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + jake: 10.8.7 + dev: false + + /electron-to-chromium@1.4.568: + resolution: {integrity: sha512-3TCOv8+BY6Ltpt1/CmGBMups2IdKOyfEmz4J8yIS4xLSeMm0Rf+psSaxLuswG9qMKt+XbNbmADybtXGpTFlbDg==} + dev: false + /elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} dependencies: @@ -1039,13 +2680,17 @@ packages: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true + /emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + dev: false + /enhanced-resolve@5.15.0: resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 - dev: true /enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} @@ -1098,7 +2743,6 @@ packages: typed-array-length: 1.0.4 unbox-primitive: 1.0.2 which-typed-array: 1.1.13 - dev: true /es-iterator-helpers@1.0.15: resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} @@ -1119,6 +2763,10 @@ packages: safe-array-concat: 1.0.1 dev: true + /es-module-lexer@1.3.1: + resolution: {integrity: sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==} + dev: false + /es-set-tostringtag@2.0.2: resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} engines: {node: '>= 0.4'} @@ -1126,7 +2774,6 @@ packages: get-intrinsic: 1.2.2 has-tostringtag: 1.0.0 hasown: 2.0.0 - dev: true /es-shim-unscopables@1.0.2: resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} @@ -1141,7 +2788,6 @@ packages: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 - dev: true /es5-ext@0.10.62: resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} @@ -1168,6 +2814,16 @@ packages: ext: 1.7.0 dev: false + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: false + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: false + /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -1355,6 +3011,14 @@ packages: string.prototype.matchall: 4.0.10 dev: true + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: false + /eslint-scope@6.0.0: resolution: {integrity: sha512-uRDL9MWmQCkaFus8RF5K9/L/2fn+80yoW3jkD53l4shjCh26fCtvJGasxjUqP5OT87SYTxCVA3BwTUzuELx9kA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1451,22 +3115,33 @@ packages: engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 - dev: true + + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: false /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - dev: true + + /estree-walker@1.0.1: + resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + dev: false /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - dev: true /eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} dev: false + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: false + /ext@1.7.0: resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} dependencies: @@ -1475,7 +3150,6 @@ packages: /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true /fast-glob@3.3.1: resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} @@ -1486,11 +3160,9 @@ packages: glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.5 - dev: true /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} @@ -1500,7 +3172,6 @@ packages: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 - dev: true /fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} @@ -1517,12 +3188,35 @@ packages: flat-cache: 3.1.1 dev: true + /filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + dependencies: + minimatch: 5.1.6 + dev: false + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 + /find-cache-dir@3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + dev: false + + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: false + /flat-cache@3.1.1: resolution: {integrity: sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==} engines: {node: '>=12.0.0'} @@ -1567,9 +3261,18 @@ packages: fetch-blob: 3.2.0 dev: false + /fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: false + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: true /fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} @@ -1590,7 +3293,6 @@ packages: define-properties: 1.2.1 es-abstract: 1.22.3 functions-have-names: 1.2.3 - dev: true /functional-red-black-tree@1.0.1: resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} @@ -1598,7 +3300,11 @@ packages: /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: true + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: false /get-intrinsic@1.2.2: resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} @@ -1608,13 +3314,16 @@ packages: has-symbols: 1.0.3 hasown: 2.0.0 + /get-own-enumerable-property-symbols@3.0.2: + resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + dev: false + /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 - dev: true /get-tsconfig@4.7.2: resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} @@ -1659,7 +3368,11 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: true + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: false /globals@13.23.0: resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} @@ -1673,7 +3386,6 @@ packages: engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.1 - dev: true /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} @@ -1685,7 +3397,17 @@ packages: ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 - dev: true + + /globby@6.1.0: + resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==} + engines: {node: '>=0.10.0'} + dependencies: + array-union: 1.0.2 + glob: 7.2.3 + object-assign: 4.1.1 + pify: 2.3.0 + pinkie-promise: 2.0.1 + dev: false /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} @@ -1697,12 +3419,15 @@ packages: /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: false /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - dev: true /has-property-descriptors@1.0.1: resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} @@ -1762,6 +3487,10 @@ packages: resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} dev: false + /idb@7.1.1: + resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} + dev: false + /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: false @@ -1774,7 +3503,6 @@ packages: /ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} - dev: true /immutable@4.3.4: resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} @@ -1798,7 +3526,6 @@ packages: dependencies: once: 1.4.0 wrappy: 1.0.2 - dev: true /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -1810,7 +3537,6 @@ packages: get-intrinsic: 1.2.2 hasown: 2.0.0 side-channel: 1.0.4 - dev: true /is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} @@ -1826,7 +3552,6 @@ packages: call-bind: 1.0.5 get-intrinsic: 1.2.2 is-typed-array: 1.1.12 - dev: true /is-async-function@2.0.0: resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} @@ -1839,7 +3564,6 @@ packages: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 - dev: true /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} @@ -1854,7 +3578,6 @@ packages: dependencies: call-bind: 1.0.5 has-tostringtag: 1.0.0 - dev: true /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} @@ -1864,14 +3587,12 @@ packages: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: hasown: 2.0.0 - dev: true /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - dev: true /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} @@ -1899,6 +3620,10 @@ packages: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} dev: true + /is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + dev: false + /is-nan@1.3.2: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} engines: {node: '>= 0.4'} @@ -1910,26 +3635,52 @@ packages: /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} - dev: true /is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - dev: true /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + /is-obj@1.0.1: + resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} + engines: {node: '>=0.10.0'} + dev: false + + /is-path-cwd@2.2.0: + resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} + engines: {node: '>=6'} + dev: false + + /is-path-in-cwd@2.1.0: + resolution: {integrity: sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==} + engines: {node: '>=6'} + dependencies: + is-path-inside: 2.1.0 + dev: false + + /is-path-inside@2.1.0: + resolution: {integrity: sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==} + engines: {node: '>=6'} + dependencies: + path-is-inside: 1.0.2 + dev: false + /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 has-tostringtag: 1.0.0 - dev: true + + /is-regexp@1.0.0: + resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} + engines: {node: '>=0.10.0'} + dev: false /is-set@2.0.2: resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} @@ -1939,21 +3690,23 @@ packages: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.5 - dev: true + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: false /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - dev: true /is-symbol@1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 - dev: true /is-typed-array@1.1.12: resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} @@ -1977,7 +3730,6 @@ packages: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.5 - dev: true /is-weakset@2.0.2: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} @@ -1988,7 +3740,6 @@ packages: /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: true /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -2004,6 +3755,35 @@ packages: set-function-name: 2.0.1 dev: true + /jake@10.8.7: + resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} + engines: {node: '>=10'} + hasBin: true + dependencies: + async: 3.2.4 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + dev: false + + /jest-worker@26.6.2: + resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 20.0.0 + merge-stream: 2.0.0 + supports-color: 7.2.0 + dev: false + + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 20.0.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: false + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -2014,13 +3794,35 @@ packages: argparse: 2.0.1 dev: true + /jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + dev: false + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: false + /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: false + /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true + + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: false + + /json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + dev: false /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} @@ -2033,6 +3835,25 @@ packages: minimist: 1.2.8 dev: true + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: false + + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.11 + dev: false + + /jsonpointer@5.0.1: + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} + engines: {node: '>=0.10.0'} + dev: false + /jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} @@ -2059,6 +3880,11 @@ packages: language-subtag-registry: 0.3.22 dev: true + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + dev: false + /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -2095,10 +3921,39 @@ packages: - debug dev: false + /loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + dev: false + + /loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + dev: false + + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: false + + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: false + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true + /lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + dev: false + /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} dev: false @@ -2109,6 +3964,12 @@ packages: dependencies: js-tokens: 4.0.0 + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: false + /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} @@ -2116,6 +3977,19 @@ packages: yallist: 4.0.0 dev: true + /magic-string@0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + dependencies: + sourcemap-codec: 1.4.8 + dev: false + + /make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + dependencies: + semver: 6.3.1 + dev: false + /md5.js@1.3.5: resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} dependencies: @@ -2124,10 +3998,13 @@ packages: safe-buffer: 5.2.1 dev: false + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: false + /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - dev: true /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} @@ -2135,7 +4012,6 @@ packages: dependencies: braces: 3.0.2 picomatch: 2.3.1 - dev: true /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} @@ -2161,7 +4037,13 @@ packages: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - dev: true + + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: false /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -2188,11 +4070,37 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: false + + /next-pwa@5.6.0(@babel/core@7.23.2)(next@13.5.6)(webpack@5.89.0): + resolution: {integrity: sha512-XV8g8C6B7UmViXU8askMEYhWwQ4qc/XqJGnexbLV68hzKaGHZDMtHsm2TNxFcbR7+ypVuth/wwpiIlMwpRJJ5A==} + peerDependencies: + next: '>=9.0.0' + dependencies: + babel-loader: 8.3.0(@babel/core@7.23.2)(webpack@5.89.0) + clean-webpack-plugin: 4.0.0(webpack@5.89.0) + globby: 11.1.0 + next: 13.5.6(@babel/core@7.23.2)(react-dom@18.0.0)(react@18.0.0)(sass@1.69.4) + terser-webpack-plugin: 5.3.9(webpack@5.89.0) + workbox-webpack-plugin: 6.6.0(webpack@5.89.0) + workbox-window: 6.6.0 + transitivePeerDependencies: + - '@babel/core' + - '@swc/core' + - '@types/babel__core' + - esbuild + - supports-color + - uglify-js + - webpack + dev: false + /next-tick@1.1.0: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} dev: false - /next@13.5.6(react-dom@18.0.0)(react@18.0.0)(sass@1.69.4): + /next@13.5.6(@babel/core@7.23.2)(react-dom@18.0.0)(react@18.0.0)(sass@1.69.4): resolution: {integrity: sha512-Y2wTcTbO4WwEsVb4A8VSnOsG1I9ok+h74q0ZdxkwM3EODqrs4pasq7O0iUxbcS9VtWMicG7f3+HAj0r1+NtKSw==} engines: {node: '>=16.14.0'} hasBin: true @@ -2215,7 +4123,7 @@ packages: react: 18.0.0 react-dom: 18.0.0(react@18.0.0) sass: 1.69.4 - styled-jsx: 5.1.1(react@18.0.0) + styled-jsx: 5.1.1(@babel/core@7.23.2)(react@18.0.0) watchpack: 2.4.0 optionalDependencies: '@next/swc-darwin-arm64': 13.5.6 @@ -2255,6 +4163,10 @@ packages: hasBin: true dev: false + /node-releases@2.0.13: + resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + dev: false + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -2283,7 +4195,6 @@ packages: /object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - dev: true /object-is@1.1.5: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} @@ -2353,7 +4264,6 @@ packages: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - dev: true /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} @@ -2367,6 +4277,30 @@ packages: type-check: 0.4.0 dev: true + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: false + + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: false + + /p-map@2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} + dev: false + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: false + /pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} dev: false @@ -2378,10 +4312,18 @@ packages: callsites: 3.1.0 dev: true + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: false + /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - dev: true + + /path-is-inside@1.0.2: + resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} + dev: false /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} @@ -2390,12 +4332,10 @@ packages: /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - dev: true /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -2405,6 +4345,35 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: false + + /pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + dev: false + + /pinkie-promise@2.0.1: + resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} + engines: {node: '>=0.10.0'} + dependencies: + pinkie: 2.0.4 + dev: false + + /pinkie@2.0.4: + resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} + engines: {node: '>=0.10.0'} + dev: false + + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + dev: false + /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: false @@ -2429,6 +4398,11 @@ packages: hasBin: true dev: false + /pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + dev: false + /progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} @@ -2448,7 +4422,6 @@ packages: /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} - dev: true /qr-scanner@1.4.2: resolution: {integrity: sha512-kV1yQUe2FENvn59tMZW6mOVfpq9mGxGf8l6+EGaXUOd4RBOLg7tRC83OrirM5AtDvZRpdjdlXURsHreAOSPOUw==} @@ -2462,7 +4435,12 @@ packages: /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true + + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: false /react-dom@18.0.0(react@18.0.0): resolution: {integrity: sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw==} @@ -2536,9 +4514,26 @@ packages: which-builtin-type: 1.1.3 dev: true + /regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + dev: false + + /regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + dev: false + /regenerator-runtime@0.14.0: resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + /regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + dependencies: + '@babel/runtime': 7.23.2 + dev: false + /regexp.prototype.flags@1.5.1: resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} engines: {node: '>= 0.4'} @@ -2546,13 +4541,36 @@ packages: call-bind: 1.0.5 define-properties: 1.2.1 set-function-name: 2.0.1 - dev: true /regexpp@3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} dev: true + /regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + dependencies: + '@babel/regjsgen': 0.8.0 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.1 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + dev: false + + /regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: false + + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: false + /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -2569,7 +4587,6 @@ packages: is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true /resolve@2.0.0-next.5: resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} @@ -2583,7 +4600,13 @@ packages: /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true + + /rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: false /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} @@ -2599,11 +4622,31 @@ packages: inherits: 2.0.4 dev: false + /rollup-plugin-terser@7.0.2(rollup@2.79.1): + resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} + deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser + peerDependencies: + rollup: ^2.0.0 + dependencies: + '@babel/code-frame': 7.22.13 + jest-worker: 26.6.2 + rollup: 2.79.1 + serialize-javascript: 4.0.0 + terser: 5.22.0 + dev: false + + /rollup@2.79.1: + resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: false + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - dev: true /safe-array-concat@1.0.1: resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} @@ -2613,7 +4656,6 @@ packages: get-intrinsic: 1.2.2 has-symbols: 1.0.3 isarray: 2.0.5 - dev: true /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} @@ -2625,7 +4667,6 @@ packages: call-bind: 1.0.5 get-intrinsic: 1.2.2 is-regex: 1.1.4 - dev: true /sass@1.69.4: resolution: {integrity: sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA==} @@ -2643,6 +4684,24 @@ packages: loose-envify: 1.4.0 dev: false + /schema-utils@2.7.1: + resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} + engines: {node: '>= 8.9.0'} + dependencies: + '@types/json-schema': 7.0.14 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + dev: false + + /schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': 7.0.14 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + dev: false + /secp256k1@4.0.3: resolution: {integrity: sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==} engines: {node: '>=10.0.0'} @@ -2656,7 +4715,6 @@ packages: /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - dev: true /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} @@ -2666,6 +4724,18 @@ packages: lru-cache: 6.0.0 dev: true + /serialize-javascript@4.0.0: + resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} + dependencies: + randombytes: 2.1.0 + dev: false + + /serialize-javascript@6.0.1: + resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} + dependencies: + randombytes: 2.1.0 + dev: false + /set-function-length@1.1.1: resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} engines: {node: '>= 0.4'} @@ -2682,7 +4752,6 @@ packages: define-data-property: 1.1.1 functions-have-names: 1.2.3 has-property-descriptors: 1.0.1 - dev: true /sha.js@2.4.11: resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} @@ -2714,18 +4783,44 @@ packages: call-bind: 1.0.5 get-intrinsic: 1.2.2 object-inspect: 1.13.1 - dev: true /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - dev: true + + /source-list-map@2.0.1: + resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} + dev: false /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} dev: false + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: false + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: false + + /source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + dependencies: + whatwg-url: 7.1.0 + dev: false + + /sourcemap-codec@1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + dev: false + /stream-browserify@3.0.0: resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} dependencies: @@ -2759,7 +4854,6 @@ packages: regexp.prototype.flags: 1.5.1 set-function-name: 2.0.1 side-channel: 1.0.4 - dev: true /string.prototype.trim@1.2.8: resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} @@ -2768,7 +4862,6 @@ packages: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - dev: true /string.prototype.trimend@1.0.7: resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} @@ -2776,7 +4869,6 @@ packages: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - dev: true /string.prototype.trimstart@1.0.7: resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} @@ -2784,7 +4876,6 @@ packages: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - dev: true /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} @@ -2792,6 +4883,15 @@ packages: safe-buffer: 5.2.1 dev: false + /stringify-object@3.3.0: + resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} + engines: {node: '>=4'} + dependencies: + get-own-enumerable-property-symbols: 3.0.2 + is-obj: 1.0.1 + is-regexp: 1.0.0 + dev: false + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -2804,6 +4904,11 @@ packages: engines: {node: '>=4'} dev: true + /strip-comments@2.0.1: + resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==} + engines: {node: '>=10'} + dev: false + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -2829,7 +4934,7 @@ packages: tslib: 2.6.2 dev: false - /styled-jsx@5.1.1(react@18.0.0): + /styled-jsx@5.1.1(@babel/core@7.23.2)(react@18.0.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -2842,6 +4947,7 @@ packages: babel-plugin-macros: optional: true dependencies: + '@babel/core': 7.23.2 client-only: 0.0.1 react: 18.0.0 dev: false @@ -2850,33 +4956,105 @@ packages: resolution: {integrity: sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ==} dev: false + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: false + /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - dev: true + + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: false /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - dev: true /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} - dev: true + + /temp-dir@2.0.0: + resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} + engines: {node: '>=8'} + dev: false + + /tempy@0.6.0: + resolution: {integrity: sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==} + engines: {node: '>=10'} + dependencies: + is-stream: 2.0.1 + temp-dir: 2.0.0 + type-fest: 0.16.0 + unique-string: 2.0.0 + dev: false + + /terser-webpack-plugin@5.3.9(webpack@5.89.0): + resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.20 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.1 + terser: 5.22.0 + webpack: 5.89.0 + dev: false + + /terser@5.22.0: + resolution: {integrity: sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.5 + acorn: 8.10.0 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: false /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: false + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 + /tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + dependencies: + punycode: 2.3.0 + dev: false + /ts-api-utils@1.0.3(typescript@5.0.2): resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} engines: {node: '>=16.13.0'} @@ -2910,6 +5088,11 @@ packages: prelude-ls: 1.2.1 dev: true + /type-fest@0.16.0: + resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} + engines: {node: '>=10'} + dev: false + /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} @@ -2930,7 +5113,6 @@ packages: call-bind: 1.0.5 get-intrinsic: 1.2.2 is-typed-array: 1.1.12 - dev: true /typed-array-byte-length@1.0.0: resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} @@ -2940,7 +5122,6 @@ packages: for-each: 0.3.3 has-proto: 1.0.1 is-typed-array: 1.1.12 - dev: true /typed-array-byte-offset@1.0.0: resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} @@ -2951,7 +5132,6 @@ packages: for-each: 0.3.3 has-proto: 1.0.1 is-typed-array: 1.1.12 - dev: true /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} @@ -2959,7 +5139,6 @@ packages: call-bind: 1.0.5 for-each: 0.3.3 is-typed-array: 1.1.12 - dev: true /typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} @@ -2987,13 +5166,62 @@ packages: has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - dev: true + + /unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + dev: false + + /unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 + dev: false + + /unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + dev: false + + /unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + dev: false + + /unique-string@2.0.0: + resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} + engines: {node: '>=8'} + dependencies: + crypto-random-string: 2.0.0 + dev: false + + /universalify@2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} + dev: false + + /upath@1.2.0: + resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} + engines: {node: '>=4'} + dev: false + + /update-browserslist-db@1.0.13(browserslist@4.22.1): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.1 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: false /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.0 - dev: true /use-nfc-hook@1.0.4(react@18.0.0): resolution: {integrity: sha512-5omiwW5V52L33js9xqOv6BPcbP3e9LsHMaAAN9zEnQH84vfLLOVCXnrXmyuimhkNo5l2+f53ifvCYlcM3lQlPA==} @@ -3053,6 +5281,62 @@ packages: engines: {node: '>= 8'} dev: false + /webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + dev: false + + /webpack-sources@1.4.3: + resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==} + dependencies: + source-list-map: 2.0.1 + source-map: 0.6.1 + dev: false + + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: false + + /webpack@5.89.0: + resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.6 + '@types/estree': 1.0.3 + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/wasm-edit': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + acorn: 8.10.0 + acorn-import-assertions: 1.9.0(acorn@8.10.0) + browserslist: 4.22.1 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.15.0 + es-module-lexer: 1.3.1 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.9(webpack@5.89.0) + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: false + /websocket-polyfill@0.0.3: resolution: {integrity: sha512-pF3kR8Uaoau78MpUmFfzbIRxXj9PeQrCuPepGE6JIsfsJ/o/iXr07Q2iQNzKSSblQJ0FiGWlS64N4pVSm+O3Dg==} dependencies: @@ -3076,6 +5360,14 @@ packages: - supports-color dev: false + /whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + dev: false + /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: @@ -3084,7 +5376,6 @@ packages: is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 - dev: true /which-builtin-type@1.1.3: resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} @@ -3131,9 +5422,172 @@ packages: isexe: 2.0.0 dev: true + /workbox-background-sync@6.6.0: + resolution: {integrity: sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw==} + dependencies: + idb: 7.1.1 + workbox-core: 6.6.0 + dev: false + + /workbox-broadcast-update@6.6.0: + resolution: {integrity: sha512-nm+v6QmrIFaB/yokJmQ/93qIJ7n72NICxIwQwe5xsZiV2aI93MGGyEyzOzDPVz5THEr5rC3FJSsO3346cId64Q==} + dependencies: + workbox-core: 6.6.0 + dev: false + + /workbox-build@6.6.0: + resolution: {integrity: sha512-Tjf+gBwOTuGyZwMz2Nk/B13Fuyeo0Q84W++bebbVsfr9iLkDSo6j6PST8tET9HYA58mlRXwlMGpyWO8ETJiXdQ==} + engines: {node: '>=10.0.0'} + dependencies: + '@apideck/better-ajv-errors': 0.3.6(ajv@8.12.0) + '@babel/core': 7.23.2 + '@babel/preset-env': 7.23.2(@babel/core@7.23.2) + '@babel/runtime': 7.23.2 + '@rollup/plugin-babel': 5.3.1(@babel/core@7.23.2)(rollup@2.79.1) + '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.1) + '@rollup/plugin-replace': 2.4.2(rollup@2.79.1) + '@surma/rollup-plugin-off-main-thread': 2.2.3 + ajv: 8.12.0 + common-tags: 1.8.2 + fast-json-stable-stringify: 2.1.0 + fs-extra: 9.1.0 + glob: 7.2.3 + lodash: 4.17.21 + pretty-bytes: 5.6.0 + rollup: 2.79.1 + rollup-plugin-terser: 7.0.2(rollup@2.79.1) + source-map: 0.8.0-beta.0 + stringify-object: 3.3.0 + strip-comments: 2.0.1 + tempy: 0.6.0 + upath: 1.2.0 + workbox-background-sync: 6.6.0 + workbox-broadcast-update: 6.6.0 + workbox-cacheable-response: 6.6.0 + workbox-core: 6.6.0 + workbox-expiration: 6.6.0 + workbox-google-analytics: 6.6.0 + workbox-navigation-preload: 6.6.0 + workbox-precaching: 6.6.0 + workbox-range-requests: 6.6.0 + workbox-recipes: 6.6.0 + workbox-routing: 6.6.0 + workbox-strategies: 6.6.0 + workbox-streams: 6.6.0 + workbox-sw: 6.6.0 + workbox-window: 6.6.0 + transitivePeerDependencies: + - '@types/babel__core' + - supports-color + dev: false + + /workbox-cacheable-response@6.6.0: + resolution: {integrity: sha512-JfhJUSQDwsF1Xv3EV1vWzSsCOZn4mQ38bWEBR3LdvOxSPgB65gAM6cS2CX8rkkKHRgiLrN7Wxoyu+TuH67kHrw==} + deprecated: workbox-background-sync@6.6.0 + dependencies: + workbox-core: 6.6.0 + dev: false + + /workbox-core@6.6.0: + resolution: {integrity: sha512-GDtFRF7Yg3DD859PMbPAYPeJyg5gJYXuBQAC+wyrWuuXgpfoOrIQIvFRZnQ7+czTIQjIr1DhLEGFzZanAT/3bQ==} + dev: false + + /workbox-expiration@6.6.0: + resolution: {integrity: sha512-baplYXcDHbe8vAo7GYvyAmlS4f6998Jff513L4XvlzAOxcl8F620O91guoJ5EOf5qeXG4cGdNZHkkVAPouFCpw==} + dependencies: + idb: 7.1.1 + workbox-core: 6.6.0 + dev: false + + /workbox-google-analytics@6.6.0: + resolution: {integrity: sha512-p4DJa6OldXWd6M9zRl0H6vB9lkrmqYFkRQ2xEiNdBFp9U0LhsGO7hsBscVEyH9H2/3eZZt8c97NB2FD9U2NJ+Q==} + dependencies: + workbox-background-sync: 6.6.0 + workbox-core: 6.6.0 + workbox-routing: 6.6.0 + workbox-strategies: 6.6.0 + dev: false + + /workbox-navigation-preload@6.6.0: + resolution: {integrity: sha512-utNEWG+uOfXdaZmvhshrh7KzhDu/1iMHyQOV6Aqup8Mm78D286ugu5k9MFD9SzBT5TcwgwSORVvInaXWbvKz9Q==} + dependencies: + workbox-core: 6.6.0 + dev: false + + /workbox-precaching@6.6.0: + resolution: {integrity: sha512-eYu/7MqtRZN1IDttl/UQcSZFkHP7dnvr/X3Vn6Iw6OsPMruQHiVjjomDFCNtd8k2RdjLs0xiz9nq+t3YVBcWPw==} + dependencies: + workbox-core: 6.6.0 + workbox-routing: 6.6.0 + workbox-strategies: 6.6.0 + dev: false + + /workbox-range-requests@6.6.0: + resolution: {integrity: sha512-V3aICz5fLGq5DpSYEU8LxeXvsT//mRWzKrfBOIxzIdQnV/Wj7R+LyJVTczi4CQ4NwKhAaBVaSujI1cEjXW+hTw==} + dependencies: + workbox-core: 6.6.0 + dev: false + + /workbox-recipes@6.6.0: + resolution: {integrity: sha512-TFi3kTgYw73t5tg73yPVqQC8QQjxJSeqjXRO4ouE/CeypmP2O/xqmB/ZFBBQazLTPxILUQ0b8aeh0IuxVn9a6A==} + dependencies: + workbox-cacheable-response: 6.6.0 + workbox-core: 6.6.0 + workbox-expiration: 6.6.0 + workbox-precaching: 6.6.0 + workbox-routing: 6.6.0 + workbox-strategies: 6.6.0 + dev: false + + /workbox-routing@6.6.0: + resolution: {integrity: sha512-x8gdN7VDBiLC03izAZRfU+WKUXJnbqt6PG9Uh0XuPRzJPpZGLKce/FkOX95dWHRpOHWLEq8RXzjW0O+POSkKvw==} + dependencies: + workbox-core: 6.6.0 + dev: false + + /workbox-strategies@6.6.0: + resolution: {integrity: sha512-eC07XGuINAKUWDnZeIPdRdVja4JQtTuc35TZ8SwMb1ztjp7Ddq2CJ4yqLvWzFWGlYI7CG/YGqaETntTxBGdKgQ==} + dependencies: + workbox-core: 6.6.0 + dev: false + + /workbox-streams@6.6.0: + resolution: {integrity: sha512-rfMJLVvwuED09CnH1RnIep7L9+mj4ufkTyDPVaXPKlhi9+0czCu+SJggWCIFbPpJaAZmp2iyVGLqS3RUmY3fxg==} + dependencies: + workbox-core: 6.6.0 + workbox-routing: 6.6.0 + dev: false + + /workbox-sw@6.6.0: + resolution: {integrity: sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==} + dev: false + + /workbox-webpack-plugin@6.6.0(webpack@5.89.0): + resolution: {integrity: sha512-xNZIZHalboZU66Wa7x1YkjIqEy1gTR+zPM+kjrYJzqN7iurYZBctBLISyScjhkJKYuRrZUP0iqViZTh8rS0+3A==} + engines: {node: '>=10.0.0'} + peerDependencies: + webpack: ^4.4.0 || ^5.9.0 + dependencies: + fast-json-stable-stringify: 2.1.0 + pretty-bytes: 5.6.0 + upath: 1.2.0 + webpack: 5.89.0 + webpack-sources: 1.4.3 + workbox-build: 6.6.0 + transitivePeerDependencies: + - '@types/babel__core' + - supports-color + dev: false + + /workbox-window@6.6.0: + resolution: {integrity: sha512-L4N9+vka17d16geaJXXRjENLFldvkWy7JyGxElRD0JvBxvFEd8LOhr+uXCcar/NzAmIBRv9EZ+M+Qr4mOoBITw==} + dependencies: + '@types/trusted-types': 2.0.5 + workbox-core: 6.6.0 + dev: false + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: true /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} @@ -3145,6 +5599,10 @@ packages: engines: {node: '>=0.10.32'} dev: false + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: false + /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true diff --git a/public/icons/icon-192x192.png b/public/icons/icon-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..30fad6cb9b28ab4509359d1345288f751322075b GIT binary patch literal 2324 zcmds3`#;kQAOFs+6}jcQ6kQ+9Sq_doNQQJ#&6pWmE*)mrLM+wML_JPQtVb;@+A=z9 zHssdkxOL9qY0PE0G%S@zY)n09!(1Nc`SJM^&JXX;`}KLhU$4&(?_WOedq~9TojV{q z007u|_RPt^EpGo4V4bZQI8NHOMcb3kgr)$1?yf%p0_epSTOueW@U%C;>$Q??Em{Px z3tj+FOVwSwqzwSz%CjfEg06!UQpG>@!Yn%fqkP!H*E=p&Ymg-l&&0^{fVR#q$w#^&T zhN+jg{1&|pzF8Q zg{kiNsh#Y(YxCoA3GaX9tMw$w=bGmx+HOtkS%lsFBxVF{CO`vnUMk<1W_?^&t3+ED z37)P2GV9~lkwI6K0p+V}D=CYgMNfV0-fsEV>?uFH%B*fJf4yX$&CTj?1iZZZO=qOd z*F-_=AN-#kFKSsJ%dUH*DM`ck%N*O%*9A?)V=mg4WHtpg`fwyTy!EE!!Smp7)6D_a zX%YQ1`%E9hGood#w7qhz!2!JCWBNfp#1Xyy#Xl$A9~A6+ku^1UpLbt?jq+h8d=O)* z_6b%KKyR6w72cK3Jz{3?`T~UJIn&}vS*_n)^F&PGqE~z;GhsFWOkf-h&4RXJ`}jJ1 z)bHo%8pY)d?to&uAU*-F2M62+855_uJm|O?^wwC8xqWI!kF7#3x&V52pJl1}K;gtL zeG(KL23mqZiv4AaL^l+SaUy3!YIdtGx`hejY034kZl*rPZaPd+|KKHb@6nA8U7f=f zE`tl69$?-%R^GRNOcsbDN=%OQ&BAavbB?PVNL=GDrOF zO`eg-t4ci8_tc(kS(vVqx_LO<_Qu^>gl&;hVX0rC5qEmr4_YorqfBOFHC2BL@17Q&v945!af;(10@GFzRF6k+e-20~!Houki3?1HhilWmbu z;_`69#eMKa4Y7pPQs>m@-qbC|oM`k(yx4ds5%YvZte|}?mw7l&$<#$+VWr*K9{FQr zq=^pgYK}X6Y)<2$0#dKZQm#JhNxE#C4zG8nn)L&fAw-W zrn*r)$hkL-FMM<}|0!=>t^-yq!8 zQL;7?T%XAcCRQ0%5QEgqFL&3o5;+OVgWM|(ws8%rTyql*SfLEfIy77>oEKq@K{GRB z$q#pC2(ah6Q?={x!PoqyMh%@<0M%UuuNrVP;D%JcNq~?U&(lal>%yw9JR<;>gs&&m zI+A^75GZzXyp0EW=w8u_ckbxb<$~oBdK5_GD>dfy&q{Xmw8}KU)@6hcmlE1(m6PnF z0;~cT9&dMsIBUYqD^_qT&Nf#0VeO%U2;9p9S7SS>$Z6j!*!_1CdbXpK--$Zh05`Ar zS`~U@nNPASPhT?5@nFA_h?3;JdRH@-Tuctavf~ipo8hI_dofgQon8hsdsQ8;T}O@i zPC~5~IupQtiJg{mp-eSK+!s%Y%1WK*yzX~GHuv`S(&>3W>KRgXtj=w7Rdzg(7MJ_w zOYd3EnxU-2O~csvlKj>Vl7-;*Ok!7*QB+rDp6cE7PtcI+@D{&yl44pjRBG%>6Mi3K zpL>F3Hu58`7K(04Gjuu%F_FukOP)C}LTSI+15u3E=I-vSkJ-H3a0guzds-N+t!x}J zSkN0Hx);jSV8bEb7wD6_NJsYi;O#E28_4G8ic#Z4Ey$4x;NUX+DV80M+KmTK*}cWraj;I+Jtrq%?vgXNp?1H@eScKv&w zS6vbg4x9=ElMhwg*guqoG&B%3%@USIy>mEr(~tj#?aK{iTK>N1J%Sw?bU=OWeBc`t zjBc-`o+;kn_>>fv`2gsNt*o}#fr6%6)0~9O(H5VNs*1tw8lNmn=#$T|wM&u){3V%v zcg~7>Ik2sA?7*OqC@SkLSff=yfIa{2Sz8#SeW05FXj>1QEi`z-Y%;_MZ5_HE#eF?| zvn*T4cI^BVd=nk7icu@`29^&a(91AUz5?Y8z%Tb`bo^Bx>;E^0O-*xun9=$Eo3&dd O1~}`BILY&ly!~Iu>=B{> literal 0 HcmV?d00001 diff --git a/public/icons/icon-512x512.png b/public/icons/icon-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..67b2dad355daa75fa4c3471586c5673ac07c76d9 GIT binary patch literal 7050 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 literal 0 HcmV?d00001 diff --git a/public/manifest.json b/public/manifest.json new file mode 100644 index 0000000..cc22c82 --- /dev/null +++ b/public/manifest.json @@ -0,0 +1,22 @@ +{ + "name": "LaPOS", + "short_name": "LaPOS", + "display": "standalone", + "orientation": "portrait", + "theme_color": "#56B68C", + "background_color": "#1C1C1C", + "start_url": "/", + "icons": [ + { + "src": "/icons/icon-192x192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "any maskable" + }, + { + "src": "/icons/icon-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ] +} \ No newline at end of file From f42900672ebf2c14638e1e46ed78102eda917a98 Mon Sep 17 00:00:00 2001 From: Jona Date: Fri, 27 Oct 2023 16:23:40 -0300 Subject: [PATCH 068/159] fix(layout): inset metadata on Home --- src/app/layout.tsx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/app/layout.tsx b/src/app/layout.tsx index b02a770..86ea01e 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -33,6 +33,15 @@ const Providers = (props: ProviderProps) => { > {APP_NAME} + + + + + + + + + From 82ef186c94b3f816d024731fd12669065f931d0e Mon Sep 17 00:00:00 2001 From: Ferpa Date: Fri, 27 Oct 2023 16:24:50 -0300 Subject: [PATCH 069/159] fix update numpad after change currency --- src/app/paydesk/page.tsx | 4 ---- src/hooks/useNumpad.ts | 6 +++++- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/app/paydesk/page.tsx b/src/app/paydesk/page.tsx index 126c1bd..5b07904 100644 --- a/src/app/paydesk/page.tsx +++ b/src/app/paydesk/page.tsx @@ -53,10 +53,6 @@ export default function Page() { router.push('/payment/' + order.id) } - useEffect(() => { - if (numpadData.usedCurrency !== userConfig.props.currency) numpadData.modifyCurrency(userConfig.props.currency) - }, [userConfig.props.currency]) - useEffect(() => { setAmount(sats) // eslint-disable-next-line react-hooks/exhaustive-deps diff --git a/src/hooks/useNumpad.ts b/src/hooks/useNumpad.ts index 095676e..225d99a 100644 --- a/src/hooks/useNumpad.ts +++ b/src/hooks/useNumpad.ts @@ -1,6 +1,6 @@ import { decimalsToUse } from '@/lib/formatter' import { AvailableCurrencies, CurrenciesList } from '@/types/config' -import { useState } from 'react' +import { useEffect, useState } from 'react' import useCurrencyConverter from './useCurrencyConverter' type AmountType = Record @@ -107,6 +107,10 @@ export const useNumpad = ( } } + useEffect(() => { + if (usedCurrency !== currency) modifyCurrency(currency) + }, [currency]) + return { usedCurrency, intAmount, From be6a666dd9a46297735be94c70971882ec43752a Mon Sep 17 00:00:00 2001 From: Ferpa Date: Fri, 27 Oct 2023 16:26:01 -0300 Subject: [PATCH 070/159] fix: merge --- src/app/paydesk/page.tsx | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/app/paydesk/page.tsx b/src/app/paydesk/page.tsx index 48c8d20..66d068b 100644 --- a/src/app/paydesk/page.tsx +++ b/src/app/paydesk/page.tsx @@ -57,14 +57,6 @@ export default function Page() { } useEffect(() => { -<<<<<<< HEAD -======= - if (numpadData.usedCurrency !== userConfig.props.currency) - numpadData.modifyCurrency(userConfig.props.currency) - }, [numpadData, userConfig.props.currency]) - - useEffect(() => { ->>>>>>> f42900672ebf2c14638e1e46ed78102eda917a98 setAmount(sats) // eslint-disable-next-line react-hooks/exhaustive-deps }, [sats]) From 77efadbd424927d35d780e856def7bd5de99bfce Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Fri, 27 Oct 2023 16:30:20 -0300 Subject: [PATCH 071/159] updated favicon --- src/app/favicon.ico | Bin 25931 -> 15406 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/app/favicon.ico b/src/app/favicon.ico index 718d6fea4835ec2d246af9800eddb7ffb276240c..e6d44050c74068097efdcb00d00298e52ca036e5 100644 GIT binary patch literal 15406 zcmeHOeQXp(6yH)PSW!SegV9us3TlyH1PMZl8k9iW+r69Z2N3}cq9}?66v0r%puLZl zKLkVr|7eu-4+zk^>y_3j(2pQ78b~CfViD-x^-DmgaBZJ&dUx&hdb_u?w|ktCO(uIg zGw=O=@7>MJn|XU2m%^oTBS&(0&)`-L=C~Og$7N&$o+ppuxZPMcZCbGXevYdf%W;#j z4~n2fpdN2b7a>xn+2p+_@KQP9y|b8vu``tyOkN0iidmACe!`;0H_f4u8oZlF5QUwEl0Ha`-sB zTDbx2E&>j>_-Rae^g9QE;&73dsa&Ywb8PZFXpf2?m{TvCbERxO zFqCvC;8R~*6LO`emE_}Xi-C`8g5=|QX6*g(RL===ICAxB@agy7jzqv`{el+QQe-$j=s`xmZqz9`%S<6p0!BZ05aR=z$}r z1F<%R<3)bf1^+mtbH`ysWXUOLeHQT){g3!oIqs_K8@gSgcq9ByW0!Q#b+~)iRha!I z#zA~XepGWPx22Z`z(uZx5u9{5kG}MmoQi)GF(715M`t}e9 z)iJFiK?Z!vA*HShX1?9ttlRv{h@V=24PLC;(pFrVKT**xwT%q;Y4ulN*`eZ4O#8W7 z2*rLX@$Wry0@iun=#7c(Zn2}Jg505~TTP=3{*d|(7+>26v%dAfs>=8JaKqwqjBN|m zKq&SpgH+rz4Gu3^0E4X+`ExLa^+m?w{hvj+yfOV;fC5APSLCpLQzZ&zQau}7w=zw zo1!9(jjHfnVyQ;;F~wBiU(jXlkzt~QZ*$RkFMp1Vs4msA_)gMZQXv|;_n`(v;^REn zjb|DMO5OPxx)>Nk2_5@*hTy~T-(YiDY^6?ur;Il*EgqofB-D9JvFLqHf+}S%jNP|k zxgzkspYa@J50(`?-!f(Kg4Ww*g_5Wt$UhY8(t9@+3HOA1%qE|>cyV&u5ru!REqu@U zy046omOGQk<^8BA@yE6vTkve|cOhGPJS(dPGZD#kso@{AqtU`kxrAUGnnV`^|8D#q zPMfpU=SUJ^CIkP#xZu4IKdmzjUhnV|Q5nm^Klr?-q2{wQ-MH&=?C>(QHR z6nz@`U&k}4waM@uXyi}Nx%Mwy*ofKP8+&QyZ}R?;Z)(rDvFtgH=g*DCJZv8N^GCF$ z3rp|%8{=~)o;@3uH)Hb)qzJHE*E&B%^v|fUFD_dbvfv?|K9r(MF8cDWvPd{H7@t}r3p7)2_G~~NZ znDA8xOy6`778T0bAstA_`lW$?$d=S2oiP6E4w%2ZIr6)>ZZUb+B_w``gMY}5q2Ku7 zi8XCt5_;FRGv*xcR3m;a19a-ZpV~33+7C0{{R?=s!D8}lCZsGe`!JpOQyXrn^uyfO zTkCUjniIEw(UJe?+6%DSv;L=|eWv*HnFD?(G8H=UA6e&vrH8Cwb>(4>O0*Z%WF_V- zLI?h%>ZG1`#4A7{1?^dAJ@nR;-N73;OZgcmu(A@bo1c zMVkix!|U4Nk;ApHxT+LBbUz=-z318C5}iioHhL|I$-fiQ>aW6>+Vkk^IuNQqgSDPD zvb;k%F+8(BS5hua>cuhY1I^pgcV1;mM$MUF#Z^n@+1;cTId%2&3(FrzuM@krI?XeU zqRpz;UQQlGo_|K?8kr9cK0Cz%Rve@H7eUb=%vE|=_&X}Zq}hMb`5d{|u<*CLEw32m zPZqrZTnf&IPa=0O3x8|5g|Ofl(bwV0zsnkU5Bn6Zs|@3p`01E2f)k5Qe0O6Ti_b%S zG1vOrM+wTaD%leU|GlM&jN@dC(89mxU3sUt1^`lI)F!N23xE6#{mSyLzmdjh;_oK! zB!lm%Us(C$xUJlIFgx8ypR(v?;NOkhPg*Mr?_<$#bYBMkr?KxdG|n)Z6N`RT{GH^) zR=0U7{m&4K?nLxeY1KRxg-C0Gmm literal 25931 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 LrJugUA?W`A8`#=m From b30dc3f264bdba21f31bee3367ba1aca181ecb5c Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Fri, 27 Oct 2023 17:08:55 -0300 Subject: [PATCH 072/159] tidy up code --- src/app/page.tsx | 8 ++- src/app/paydesk/page.tsx | 26 +++++-- src/app/payment/[orderId]/page.tsx | 51 ++++++++------ src/app/scan/page.tsx | 33 +++++---- src/app/tree/page.tsx | 20 ++++-- src/context/LN.tsx | 14 ++-- src/context/LaWalletContext.tsx | 3 + src/context/Nostr.tsx | 3 + src/context/Order.tsx | 109 +++++++++++++++-------------- src/hooks/useCard.ts | 18 +++-- src/hooks/useNumpad.ts | 3 +- 11 files changed, 170 insertions(+), 118 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index c15fe04..3dd07cf 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,14 +1,16 @@ 'use client' +// React/Next import Link from 'next/link' + +// Components +import { Flex, Heading, Text, Divider, Icon, Card } from '@/components/UI' +import Container from '@/components/Layout/Container' import { PantheonIcon, SharedWalletIcon } from '@bitcoin-design/bitcoin-icons-react/filled' -import { Flex, Heading, Text, Divider, Icon, Card } from '@/components/UI' -import Container from '@/components/Layout/Container' - export default function Page() { return ( <> diff --git a/src/app/paydesk/page.tsx b/src/app/paydesk/page.tsx index 66d068b..b7be075 100644 --- a/src/app/paydesk/page.tsx +++ b/src/app/paydesk/page.tsx @@ -1,12 +1,21 @@ 'use client' +// React/Next import { useContext, useEffect, useState } from 'react' import { useRouter } from 'next/navigation' -import { PantheonIcon } from '@bitcoin-design/bitcoin-icons-react/filled' +// Contexts and Hooks import { LaWalletContext } from '@/context/LaWalletContext' +import { useNumpad } from '@/hooks/useNumpad' +import { useOrder } from '@/context/Order' +import { useNostr } from '@/context/Nostr' +import { useLN } from '@/context/LN' + +// Utils import { formatToPreference } from '@/lib/formatter' +// Components +import { PantheonIcon } from '@bitcoin-design/bitcoin-icons-react/filled' import { Flex, Heading, @@ -19,25 +28,26 @@ import { import Container from '@/components/Layout/Container' import Navbar from '@/components/Layout/Navbar' import TokenList from '@/components/TokenList' -import { useNumpad } from '@/hooks/useNumpad' -import { useOrder } from '@/context/Order' -import { useNostr } from '@/context/Nostr' -import { useLN } from '@/context/LN' import { BtnLoader } from '@/components/Loader/Loader' +// Constants const DESTINATION_LNURL = process.env.NEXT_PUBLIC_DESTINATION! export default function Page() { + // Hooks const router = useRouter() const { generateOrderEvent, setAmount, setOrderEvent, clear } = useOrder() const { publish } = useNostr() const { fetchLNURL } = useLN() - - const [loading, setLoading] = useState(false) const { userConfig } = useContext(LaWalletContext) const numpadData = useNumpad(userConfig.props.currency) + + // Local states + const [loading, setLoading] = useState(false) const sats = numpadData.intAmount['SAT'] + /** Functions */ + const handleClick = async () => { if (sats === 0 || loading) return @@ -56,6 +66,8 @@ export default function Page() { router.push('/payment/' + order.id) } + /** usEffects */ + useEffect(() => { setAmount(sats) // eslint-disable-next-line react-hooks/exhaustive-deps diff --git a/src/app/payment/[orderId]/page.tsx b/src/app/payment/[orderId]/page.tsx index 5a9fdc8..ed842f9 100644 --- a/src/app/payment/[orderId]/page.tsx +++ b/src/app/payment/[orderId]/page.tsx @@ -1,12 +1,27 @@ 'use client' +// React/Next import { useCallback, useContext, useEffect, useState } from 'react' import { useParams, useRouter, useSearchParams } from 'next/navigation' -import { CheckIcon } from '@bitcoin-design/bitcoin-icons-react/filled' +// Third-party +import axios from 'axios' +import { Event } from 'nostr-tools' + +// Types +import { LNURLResponse, LNURLWStatus } from '@/types/lnurl' + +// Contexts and Hooks +import { useNostr } from '@/context/Nostr' +import { useOrder } from '@/context/Order' +import { useLN } from '@/context/LN' import { LaWalletContext } from '@/context/LaWalletContext' +import { useCard } from '@/hooks/useCard' + +// Utils import { formatToPreference } from '@/lib/formatter' +// Components import { Flex, Heading, @@ -20,41 +35,33 @@ import { } from '@/components/UI' import Container from '@/components/Layout/Container' import { Loader } from '@/components/Loader/Loader' - +import { CheckIcon } from '@bitcoin-design/bitcoin-icons-react/filled' import theme from '@/styles/theme' -import { useNostr } from '@/context/Nostr' -import { useOrder } from '@/context/Order' -import { Event } from 'nostr-tools' -import { useLN } from '@/context/LN' -import { useNfc } from 'use-nfc-hook' -import axios from 'axios' -import { LNURLResponse, LNURLWStatus } from '@/types/lnurl' -import { useCard } from '@/hooks/useCard' export default function Page() { + // Hooks const router = useRouter() const { orderId: orderIdFromUrl } = useParams() const query = useSearchParams() - const { subscribeZap, getEvent } = useNostr() + const { getEvent } = useNostr() const { zapEmitterPubKey } = useLN() const { orderId, amount, - setOrderEvent, pendingAmount, zapEvents, + setOrderEvent, requestZapInvoice } = useOrder() - - const [invoice, setInvoice] = useState() - const [cardStatus, setCardStatus] = useState(LNURLWStatus.IDLE) - const { isAvailable, permission, scan, stop } = useCard() - const { userConfig } = useContext(LaWalletContext) + // Local states + const [invoice, setInvoice] = useState() + const [cardStatus, setCardStatus] = useState(LNURLWStatus.IDLE) const [finished, setFinished] = useState(false) + /** Functions */ const handleBack = useCallback(() => { const back = query.get('back') if (!back) { @@ -102,6 +109,7 @@ export default function Page() { setCardStatus(LNURLWStatus.DONE) } + /** useEffects */ // Search for orderIdFromURL useEffect(() => { // Not orderId found on url @@ -212,7 +220,7 @@ export default function Page() { */}
@@ -237,10 +245,7 @@ export default function Page() { {userConfig.props.currency !== 'SAT' && $} - {formatToPreference( - userConfig.props.currency, - amount - )} + {formatToPreference(userConfig.props.currency, amount)} {userConfig.props.currency} @@ -249,7 +254,7 @@ export default function Page() { - {!invoice ? : } + {!invoice ? : } diff --git a/src/app/scan/page.tsx b/src/app/scan/page.tsx index e5ff277..5d6c67d 100644 --- a/src/app/scan/page.tsx +++ b/src/app/scan/page.tsx @@ -1,15 +1,24 @@ 'use client' -import Container from '@/components/Layout/Container' -import { Button, Divider, Flex } from '@/components/UI' +// React/Next import { useRouter } from 'next/navigation' + +// Components import QrScanner from '@/components/UI/Scanner/Scanner' +import Container from '@/components/Layout/Container' +import { Button, Divider, Flex } from '@/components/UI' + +// Types import { TransferTypes } from '@/types/transaction' + +// Utils import { detectTransferType } from '@/lib/utils' export default function Page() { + // Hooks const router = useRouter() + /** Functions */ const handleScan = (result: any) => { if (!result || !result.data) return @@ -26,16 +35,6 @@ export default function Page() { router.push(`/tree?data=${result.data}`) } - const styleQrReader = { - position: 'relative', - display: 'flex', - alignItems: 'center', - justifyContent: 'center', - width: '100%', - maxWidth: '500px', - height: '100%' - } - return ( <> @@ -62,3 +61,13 @@ export default function Page() { ) } + +const styleQrReader = { + position: 'relative', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + width: '100%', + maxWidth: '500px', + height: '100%' +} diff --git a/src/app/tree/page.tsx b/src/app/tree/page.tsx index 30659fa..7725043 100644 --- a/src/app/tree/page.tsx +++ b/src/app/tree/page.tsx @@ -1,12 +1,14 @@ 'use client' +// React/Next import { useCallback, useContext, useEffect, useState } from 'react' import { useRouter, useSearchParams } from 'next/navigation' -import { SharedWalletIcon } from '@bitcoin-design/bitcoin-icons-react/filled' -import { LaWalletContext } from '@/context/LaWalletContext' +// Utils import { formatToPreference } from '@/lib/formatter' +import { extractLNURLFromQR } from '@/lib/utils' +// Components import { Flex, Heading, @@ -19,24 +21,31 @@ import { import Container from '@/components/Layout/Container' import Navbar from '@/components/Layout/Navbar' import TokenList from '@/components/TokenList' +import { SharedWalletIcon } from '@bitcoin-design/bitcoin-icons-react/filled' + +// Contexts and Hooks import { useNumpad } from '@/hooks/useNumpad' -import { extractLNURLFromQR } from '@/lib/utils' import { useLN } from '@/context/LN' import { useNostr } from '@/context/Nostr' import { useOrder } from '@/context/Order' +import { LaWalletContext } from '@/context/LaWalletContext' export default function Page() { + // Hooks const router = useRouter() const { generateOrderEvent, setAmount, setOrderEvent, clear } = useOrder() const { publish } = useNostr() const query = useSearchParams() const { fetchLNURL } = useLN() - const { userConfig } = useContext(LaWalletContext) const numpadData = useNumpad(userConfig.props.currency) + const sats = numpadData.intAmount['SAT'] + + // Local states const [cardScanned, setCardScanned] = useState(false) + /** Functions */ const processUrl = useCallback( async (url: string) => { const lnurl = extractLNURLFromQR(url) @@ -57,8 +66,6 @@ export default function Page() { [fetchLNURL] ) - const sats = numpadData.intAmount['SAT'] - const handleClick = async () => { // POC const order = generateOrderEvent!() @@ -75,6 +82,7 @@ export default function Page() { router.push(`/payment/${order.id}?back=/tree`) } + /** useEffects */ useEffect(() => { if (numpadData.usedCurrency !== userConfig.props.currency) numpadData.modifyCurrency(userConfig.props.currency) diff --git a/src/context/LN.tsx b/src/context/LN.tsx index 41d9b0d..dafc795 100644 --- a/src/context/LN.tsx +++ b/src/context/LN.tsx @@ -1,13 +1,7 @@ 'use client' // React -import { - createContext, - useCallback, - useContext, - useEffect, - useState -} from 'react' +import { createContext, useCallback, useContext, useState } from 'react' // Interface export interface ILNContext { @@ -22,6 +16,8 @@ import { requestPayServiceParams } from 'lnurl-pay' import axios from 'axios' import type { InvoiceRequest } from '@/types/lightning' +const DESTINATION_LNURL = process.env.NEXT_PUBLIC_DESTINATION! + // Context export const LNContext = createContext({ fetchLNURL: function (_lnurl: string): Promise { @@ -37,12 +33,12 @@ interface ILNProviderProps { children: React.ReactNode } -const DESTINATION_LNURL = process.env.NEXT_PUBLIC_DESTINATION! - export const LNProvider = ({ children }: ILNProviderProps) => { + // Local state const [zapEmitterPubKey, setZapEmitterPubKey] = useState() const [callbackUrl, setCallbackUrl] = useState() + /** Functions */ const fetchLNURL = useCallback(async (lnurl: string) => { console.info(`Fetching LNURL: ${lnurl}`) const lud06 = await requestPayServiceParams({ diff --git a/src/context/LaWalletContext.tsx b/src/context/LaWalletContext.tsx index 0cfc7c4..9f1cf77 100644 --- a/src/context/LaWalletContext.tsx +++ b/src/context/LaWalletContext.tsx @@ -1,4 +1,7 @@ +// React/Next import { createContext } from 'react' + +// Context and Hooks import useConfiguration, { ConfigReturns } from '@/hooks/useConfiguration' interface LaWalletContextType { diff --git a/src/context/Nostr.tsx b/src/context/Nostr.tsx index fefbbb7..f3107fc 100644 --- a/src/context/Nostr.tsx +++ b/src/context/Nostr.tsx @@ -72,6 +72,7 @@ export const NostrProvider = ({ children }: INostrProviderProps) => { const [privateKey] = useLocalStorage('nostrPrivateKey', generatePrivateKey()) const [publicKey, setPublicKey] = useState() + /** Functions */ const generateZapEvent = useCallback( (amountMillisats: number, postEventId?: string): NDKEvent => { const unsignedEvent: UnsignedEvent = { @@ -134,6 +135,8 @@ export const NostrProvider = ({ children }: INostrProviderProps) => { return ndkEvent.publish() } + /** useEffects */ + useEffect(() => { console.info('Connecting....') void ndk.connect().then(() => { diff --git a/src/context/Order.tsx b/src/context/Order.tsx index f7bb0fa..97e2a70 100644 --- a/src/context/Order.tsx +++ b/src/context/Order.tsx @@ -80,6 +80,13 @@ const NEXT_PUBLIC_ENCRYPT_PUBLIC_KEY = process.env .NEXT_PUBLIC_ENCRYPT_PUBLIC_KEY as string export const OrderProvider = ({ children }: IOrderProviderProps) => { + // Hooks + const { relays, localPublicKey, localPrivateKey, generateZapEvent } = + useNostr() + const { requestInvoice, zapEmitterPubKey } = useLN() + const { subscribeZap, publish } = useNostr() + + // Local states const [orderId, setOrderId] = useState() const [orderEvent, setOrderEvent] = useState() const [amount, setAmount] = useState(0) @@ -90,50 +97,6 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { const [fiatCurrency, setFiatCurrency] = useState('ARS') const [zapEvents, setZapEvents] = useState([]) - const { relays, localPublicKey, localPrivateKey, generateZapEvent } = - useNostr() - const { requestInvoice, zapEmitterPubKey } = useLN() - const { subscribeZap, publish } = useNostr() - - // on orderEvent change - useEffect(() => { - if (!orderEvent) { - setOrderId(undefined) - setAmount(0) - setPendingAmount(0) - setFiatAmount(0) - setFiatCurrency('ARS') - return - } - - const description = parseOrderDescription(orderEvent as Event) - - setOrderId(orderEvent.id) - setAmount(description.amount) - setPendingAmount(description.amount) - // setFiatAmount(description.fiatAmount) - // setFiatCurrency(description.fiatCurrency) - }, [orderEvent]) - - // Subscribe for zaps - useEffect(() => { - if (!orderId || !zapEmitterPubKey) { - return - } - - console.info(`Subscribing for ${orderId}...`) - const sub = subscribeZap!(orderId) - - sub.addListener('event', onZap) - - return () => { - sub.removeAllListeners() - sub.stop() - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [orderId, zapEmitterPubKey, zapEmitterPubKey]) - - nip44.decrypt const generateOrderEvent = useCallback((): Event => { const vote = (memo as any).vote as number @@ -211,15 +174,6 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { [generateZapEvent, requestInvoice] ) - const clear = () => { - setAmount(0) - setOrderId(undefined) - setOrderEvent(undefined) - setMemo({}) - setFiatAmount(0) - setZapEvents([]) - } - // Handle new incoming zap const onZap = (event: NDKEvent) => { if (event.pubkey !== zapEmitterPubKey) { @@ -237,6 +191,55 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { console.info('Amount paid : ' + decodedPaidInvoice.millisatoshis) } + const clear = useCallback(() => { + setAmount(0) + setOrderId(undefined) + setOrderEvent(undefined) + setMemo({}) + setFiatAmount(0) + setZapEvents([]) + }, []) + + /** useEffects */ + + // on orderEvent change + useEffect(() => { + if (!orderEvent) { + setOrderId(undefined) + setAmount(0) + setPendingAmount(0) + setFiatAmount(0) + setFiatCurrency('ARS') + return + } + + const description = parseOrderDescription(orderEvent as Event) + + setOrderId(orderEvent.id) + setAmount(description.amount) + setPendingAmount(description.amount) + // setFiatAmount(description.fiatAmount) + // setFiatCurrency(description.fiatCurrency) + }, [orderEvent]) + + // Subscribe for zaps + useEffect(() => { + if (!orderId || !zapEmitterPubKey) { + return + } + + console.info(`Subscribing for ${orderId}...`) + const sub = subscribeZap!(orderId) + + sub.addListener('event', onZap) + + return () => { + sub.removeAllListeners() + sub.stop() + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [orderId, zapEmitterPubKey, zapEmitterPubKey]) + return ( { export const useCard = (): CardReturns => { const { isNDEFAvailable, permission, read, abortReadCtrl } = useNfc() const [status, setStatus] = useState(ScanCardStatus.IDLE) - const scan = async (): Promise => { + + // Functions + const scan = useCallback(async (): Promise => { setStatus(ScanCardStatus.SCANNING) let url = '' try { @@ -43,7 +52,8 @@ export const useCard = (): CardReturns => { const response = requestLNURL(url) setStatus(ScanCardStatus.DONE) return response - } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []) return { isAvailable: !!isNDEFAvailable, diff --git a/src/hooks/useNumpad.ts b/src/hooks/useNumpad.ts index 225d99a..bd3d722 100644 --- a/src/hooks/useNumpad.ts +++ b/src/hooks/useNumpad.ts @@ -109,7 +109,8 @@ export const useNumpad = ( useEffect(() => { if (usedCurrency !== currency) modifyCurrency(currency) - }, [currency]) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [currency, usedCurrency]) return { usedCurrency, From b67cee7c699fb05cec9f97eb3f2a97b16029464f Mon Sep 17 00:00:00 2001 From: Jona Date: Fri, 27 Oct 2023 17:20:52 -0300 Subject: [PATCH 073/159] fix(component): more size for QRCode --- src/components/UI/QRCode/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/UI/QRCode/index.tsx b/src/components/UI/QRCode/index.tsx index 18063d2..93d56f9 100644 --- a/src/components/UI/QRCode/index.tsx +++ b/src/components/UI/QRCode/index.tsx @@ -10,7 +10,7 @@ interface ComponentProps { size?: number } -export default function Component({ value, size = 150 }: ComponentProps) { +export default function Component({ value, size = 250 }: ComponentProps) { return ( Date: Fri, 27 Oct 2023 17:30:35 -0300 Subject: [PATCH 074/159] fixes on waiting payment --- src/app/payment/[orderId]/page.tsx | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/app/payment/[orderId]/page.tsx b/src/app/payment/[orderId]/page.tsx index ed842f9..9ee4a34 100644 --- a/src/app/payment/[orderId]/page.tsx +++ b/src/app/payment/[orderId]/page.tsx @@ -37,6 +37,7 @@ import Container from '@/components/Layout/Container' import { Loader } from '@/components/Loader/Loader' import { CheckIcon } from '@bitcoin-design/bitcoin-icons-react/filled' import theme from '@/styles/theme' +import useCurrencyConverter from '@/hooks/useCurrencyConverter' export default function Page() { // Hooks @@ -44,6 +45,8 @@ export default function Page() { const { orderId: orderIdFromUrl } = useParams() const query = useSearchParams() const { getEvent } = useNostr() + + const { convertCurrency } = useCurrencyConverter(); const { zapEmitterPubKey } = useLN() const { orderId, @@ -166,6 +169,10 @@ export default function Page() { // eslint-disable-next-line react-hooks/exhaustive-deps }, []) + if (!invoice) return ( + + ) + return ( <> {isAvailable && permission === 'granted' && invoice && ( @@ -208,7 +215,7 @@ export default function Page() { {userConfig.props.currency !== 'SAT' && $} - {formatToPreference(userConfig.props.currency, amount)} + {formatToPreference(userConfig.props.currency, convertCurrency(amount, "SAT", userConfig.props.currency))} @@ -245,7 +252,7 @@ export default function Page() { {userConfig.props.currency !== 'SAT' && $} - {formatToPreference(userConfig.props.currency, amount)} + {formatToPreference(userConfig.props.currency, convertCurrency(amount, "SAT", userConfig.props.currency))} {userConfig.props.currency} @@ -254,7 +261,7 @@ export default function Page() { - {!invoice ? : } + From 722c1f6b1e99d35a7304be22024a6f4718833f0d Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Fri, 27 Oct 2023 19:05:12 -0300 Subject: [PATCH 075/159] fixed card --- src/hooks/useCard.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/hooks/useCard.ts b/src/hooks/useCard.ts index bbd8e1c..0b36a0b 100644 --- a/src/hooks/useCard.ts +++ b/src/hooks/useCard.ts @@ -32,9 +32,7 @@ const requestLNURL = async (url: string) => { export const useCard = (): CardReturns => { const { isNDEFAvailable, permission, read, abortReadCtrl } = useNfc() const [status, setStatus] = useState(ScanCardStatus.IDLE) - - // Functions - const scan = useCallback(async (): Promise => { + const scan = async (): Promise => { setStatus(ScanCardStatus.SCANNING) let url = '' try { @@ -52,8 +50,7 @@ export const useCard = (): CardReturns => { const response = requestLNURL(url) setStatus(ScanCardStatus.DONE) return response - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []) + } return { isAvailable: !!isNDEFAvailable, From 2cd686e51604e81f4925d58f63db263894523cf7 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Fri, 27 Oct 2023 19:44:56 -0300 Subject: [PATCH 076/159] added SCANNING lnurlw status --- src/app/payment/[orderId]/page.tsx | 62 ++++++++++++++++++++++-------- src/types/lnurl.ts | 1 + 2 files changed, 48 insertions(+), 15 deletions(-) diff --git a/src/app/payment/[orderId]/page.tsx b/src/app/payment/[orderId]/page.tsx index 9ee4a34..e2f3151 100644 --- a/src/app/payment/[orderId]/page.tsx +++ b/src/app/payment/[orderId]/page.tsx @@ -10,6 +10,7 @@ import { Event } from 'nostr-tools' // Types import { LNURLResponse, LNURLWStatus } from '@/types/lnurl' +import { ScanCardStatus } from '@/types/card' // Contexts and Hooks import { useNostr } from '@/context/Nostr' @@ -17,6 +18,7 @@ import { useOrder } from '@/context/Order' import { useLN } from '@/context/LN' import { LaWalletContext } from '@/context/LaWalletContext' import { useCard } from '@/hooks/useCard' +import useCurrencyConverter from '@/hooks/useCurrencyConverter' // Utils import { formatToPreference } from '@/lib/formatter' @@ -37,7 +39,6 @@ import Container from '@/components/Layout/Container' import { Loader } from '@/components/Loader/Loader' import { CheckIcon } from '@bitcoin-design/bitcoin-icons-react/filled' import theme from '@/styles/theme' -import useCurrencyConverter from '@/hooks/useCurrencyConverter' export default function Page() { // Hooks @@ -46,7 +47,7 @@ export default function Page() { const query = useSearchParams() const { getEvent } = useNostr() - const { convertCurrency } = useCurrencyConverter(); + const { convertCurrency } = useCurrencyConverter() const { zapEmitterPubKey } = useLN() const { orderId, @@ -56,7 +57,7 @@ export default function Page() { setOrderEvent, requestZapInvoice } = useOrder() - const { isAvailable, permission, scan, stop } = useCard() + const { isAvailable, permission, status: scanStatus, scan, stop } = useCard() const { userConfig } = useContext(LaWalletContext) // Local states @@ -92,7 +93,6 @@ export default function Page() { ) const startRead = async () => { - setCardStatus(LNURLWStatus.REQUESTING) const lnurlResponse = await scan() processLNURLResponse(lnurlResponse) } @@ -161,6 +161,20 @@ export default function Page() { // eslint-disable-next-line react-hooks/exhaustive-deps }, [invoice, zapEmitterPubKey]) + useEffect(() => { + switch (scanStatus) { + case ScanCardStatus.SCANNING: + setCardStatus(LNURLWStatus.SCANNING) + break + case ScanCardStatus.REQUESTING: + setCardStatus(LNURLWStatus.REQUESTING) + break + case ScanCardStatus.ERROR: + setCardStatus(LNURLWStatus.ERROR) + break + } + }, [scanStatus]) + // On Mount useEffect(() => { return () => { @@ -169,28 +183,40 @@ export default function Page() { // eslint-disable-next-line react-hooks/exhaustive-deps }, []) - if (!invoice) return ( - - ) + if (!invoice) + return ( + + + + ) return ( <> - {isAvailable && permission === 'granted' && invoice && ( + {invoice && ( )} + + {finished ? ( @@ -215,7 +241,10 @@ export default function Page() { {userConfig.props.currency !== 'SAT' && $} - {formatToPreference(userConfig.props.currency, convertCurrency(amount, "SAT", userConfig.props.currency))} + {formatToPreference( + userConfig.props.currency, + convertCurrency(amount, 'SAT', userConfig.props.currency) + )} @@ -252,7 +281,10 @@ export default function Page() { {userConfig.props.currency !== 'SAT' && $} - {formatToPreference(userConfig.props.currency, convertCurrency(amount, "SAT", userConfig.props.currency))} + {formatToPreference( + userConfig.props.currency, + convertCurrency(amount, 'SAT', userConfig.props.currency) + )} {userConfig.props.currency} diff --git a/src/types/lnurl.ts b/src/types/lnurl.ts index 7828254..704f37e 100644 --- a/src/types/lnurl.ts +++ b/src/types/lnurl.ts @@ -9,6 +9,7 @@ export interface LNURLResponse { export enum LNURLWStatus { IDLE = 'IDLE', + SCANNING = 'SCANNING', REQUESTING = 'REQUESTING', CALLBACK = 'CALLBACK', DONE = 'DONE', From 280b30c7c44c1f4eab41fd7a59e5870c8e8a967a Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Sat, 28 Oct 2023 15:46:08 -0300 Subject: [PATCH 077/159] catch error --- src/app/payment/[orderId]/page.tsx | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/app/payment/[orderId]/page.tsx b/src/app/payment/[orderId]/page.tsx index e2f3151..db5d94f 100644 --- a/src/app/payment/[orderId]/page.tsx +++ b/src/app/payment/[orderId]/page.tsx @@ -136,10 +136,14 @@ export default function Page() { return } - requestZapInvoice!(amount * 1000, orderId).then(_invoice => { - console.info('INVOICE:') - setInvoice!(_invoice) - }) + requestZapInvoice!(amount * 1000, orderId) + .then(_invoice => { + console.info('INVOICE:') + setInvoice!(_invoice) + }) + .catch(() => { + alert("Couldn't generate invoice.") + }) // eslint-disable-next-line react-hooks/exhaustive-deps }, [orderId]) From 4d3217e746953b6cc408af85df0a465a9b8efb12 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Sat, 28 Oct 2023 15:46:28 -0300 Subject: [PATCH 078/159] added lnurl parse --- src/app/scan/page.tsx | 7 ++++--- src/lib/utils.ts | 11 ++++++----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/app/scan/page.tsx b/src/app/scan/page.tsx index 5d6c67d..aca689b 100644 --- a/src/app/scan/page.tsx +++ b/src/app/scan/page.tsx @@ -12,7 +12,7 @@ import { Button, Divider, Flex } from '@/components/UI' import { TransferTypes } from '@/types/transaction' // Utils -import { detectTransferType } from '@/lib/utils' +import { detectTransferType, extractLNURLFromQR } from '@/lib/utils' export default function Page() { // Hooks @@ -26,13 +26,14 @@ export default function Page() { result.data ) if (!decodeTransferType) return + const lnurl = extractLNURLFromQR(result.data) if (decodeTransferType === TransferTypes.INVOICE) { - router.push(`/tree?data=${result.data}`) + router.push(`/tree?data=${lnurl}`) return } - router.push(`/tree?data=${result.data}`) + router.push(`/tree?data=${lnurl}`) } return ( diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 51e50af..27dc68d 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -43,9 +43,10 @@ export const isValidLightningURL = (url: string): boolean => { } export const extractLNURLFromQR = (url: string): string | null => { - const pattern = - /^lightning:\/\/([a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})$/ - const matches = url.match(pattern) - - return matches ? matches[1] : null + if (url.startsWith("lightning://")) { + // If it does, remove the prefix and return the rest of the string + return url.replace("lightning://", ""); + } + // Otherwise, return the string as is + return url; } From 9f3f06090e6099a5c8dd07cc41531b51ca723d18 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Sat, 28 Oct 2023 15:46:37 -0300 Subject: [PATCH 079/159] fix lnurl parse --- src/app/tree/page.tsx | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/app/tree/page.tsx b/src/app/tree/page.tsx index 7725043..361d155 100644 --- a/src/app/tree/page.tsx +++ b/src/app/tree/page.tsx @@ -48,19 +48,12 @@ export default function Page() { /** Functions */ const processUrl = useCallback( async (url: string) => { - const lnurl = extractLNURLFromQR(url) - - if (!lnurl) { - alert('Invalid QR code') - return - } - try { - await fetchLNURL(lnurl) + await fetchLNURL(url) setCardScanned(true) } catch (e) { console.error(e) - alert(JSON.stringify(e)) + alert("what the hell?" + JSON.stringify(e)) } }, [fetchLNURL] From 290010d38763d98e208a80097f995964e3fb9d63 Mon Sep 17 00:00:00 2001 From: Jona Date: Tue, 31 Oct 2023 16:01:20 -0300 Subject: [PATCH 080/159] feat(constants): added categories and products --- src/constants/categories.json | 14 ++++ src/constants/products.json | 132 ++++++++++++++++++++++++++++++++++ 2 files changed, 146 insertions(+) create mode 100644 src/constants/categories.json create mode 100644 src/constants/products.json diff --git a/src/constants/categories.json b/src/constants/categories.json new file mode 100644 index 0000000..de2fd53 --- /dev/null +++ b/src/constants/categories.json @@ -0,0 +1,14 @@ +[ + { + "id": 1, + "name": "Bebidas" + }, + { + "id": 2, + "name": "Comidas" + }, + { + "id": 3, + "name": "Merch" + } +] \ No newline at end of file diff --git a/src/constants/products.json b/src/constants/products.json new file mode 100644 index 0000000..4ba3cf0 --- /dev/null +++ b/src/constants/products.json @@ -0,0 +1,132 @@ +[ + { + "id": 1, + "category_id": 1, + "name": "Fernet", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 2000, + "currency": "ARS" + } + }, + { + "id": 2, + "category_id": 1, + "name": "Gin Tonic", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + }, + { + "id": 3, + "category_id": 1, + "name": "Cerveza", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1000, + "currency": "ARS" + } + }, + { + "id": 4, + "category_id": 2, + "name": "Shawarma", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 3400, + "currency": "ARS" + } + }, + { + "id": 5, + "category_id": 2, + "name": "Hongos", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 2400, + "currency": "ARS" + } + }, + { + "id": 6, + "category_id": 2, + "name": "Porro", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 2400, + "currency": "ARS" + } + }, + { + "id": 7, + "category_id": 1, + "name": "Champagne", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + }, + { + "id": 8, + "category_id": 1, + "name": "Esperma de pitufo", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + }, + { + "id": 9, + "category_id": 1, + "name": "Licor de melon", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + }, + { + "id": 10, + "category_id": 3, + "name": "Remera", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + }, + { + "id": 11, + "category_id": 3, + "name": "Gorra", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + }, + { + "id": 12, + "category_id": 3, + "name": "Medias", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + }, + { + "id": 13, + "category_id": 3, + "name": "Preservativos", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + } +] \ No newline at end of file From e2f8b458c8d84e90854199fbed304b3e2de8b568 Mon Sep 17 00:00:00 2001 From: Jona Date: Tue, 31 Oct 2023 16:02:26 -0300 Subject: [PATCH 081/159] feat(component): added Product --- src/components/UI/Product/index.tsx | 65 +++++++++++++++++++++++++++++ src/components/UI/Product/style.tsx | 18 ++++++++ 2 files changed, 83 insertions(+) create mode 100644 src/components/UI/Product/index.tsx create mode 100644 src/components/UI/Product/style.tsx diff --git a/src/components/UI/Product/index.tsx b/src/components/UI/Product/index.tsx new file mode 100644 index 0000000..984f68b --- /dev/null +++ b/src/components/UI/Product/index.tsx @@ -0,0 +1,65 @@ +// Components +import Heading from '../Heading' +import Text from '../Text' +import Flex from '../Flex' +import Button from '../Button' + +// Style +import { Product } from './style' + +interface ProductProps { + id: number + category_id: number + name: string + description: string + price: { + value: number + currency: 'SAT' | 'USD' | 'ARS' + } +} + +interface ComponentProps { + data: any | ProductProps + onAddToCart: (product: any) => void + quantityInCart: number + onRemoveOne: () => void + onAddOne: () => void +} + +export default function Component(props: ComponentProps) { + const { data, onAddToCart, quantityInCart, onRemoveOne, onAddOne } = props + + if (!data) return null + + const { name, price } = data + + return ( + + + {name} + + {price?.currency === 'SAT' ? SAT : $} + {price?.value} + {price?.currency !== 'SAT' && ARS} + + + + {quantityInCart > 0 ? ( + <> + + {quantityInCart} + + + ) : ( + + )} + + + ) +} diff --git a/src/components/UI/Product/style.tsx b/src/components/UI/Product/style.tsx new file mode 100644 index 0000000..42ce621 --- /dev/null +++ b/src/components/UI/Product/style.tsx @@ -0,0 +1,18 @@ +import { styled } from 'styled-components' + +import theme from '@/styles/theme' + +export const Product = styled.div` + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; + + padding: 8px 0; + + border-bottom: 1px solid ${theme.colors.gray20}; + + &:last-child { + border-bottom: none; + } +` From 2144f57b28ad10e94478ee4935cc0df351731f4f Mon Sep 17 00:00:00 2001 From: Jona Date: Tue, 31 Oct 2023 16:02:32 -0300 Subject: [PATCH 082/159] feat(component): added Product --- src/components/UI/index.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/UI/index.tsx b/src/components/UI/index.tsx index 5dd5f8d..b4a1114 100644 --- a/src/components/UI/index.tsx +++ b/src/components/UI/index.tsx @@ -11,3 +11,4 @@ export { default as Keyboard } from './Keyboard' export { default as Confetti } from './Confetti' export { default as Card } from './Card' export { default as Alert } from './Alert' +export { default as Product } from './Product' From 5c1a51ec313bad00dae4192c789d9d3990158ec8 Mon Sep 17 00:00:00 2001 From: Jona Date: Tue, 31 Oct 2023 16:02:54 -0300 Subject: [PATCH 083/159] feat(component): added FooterCart --- src/components/Layout/FooterCart/index.tsx | 22 +++++++++++++ src/components/Layout/FooterCart/style.tsx | 36 ++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 src/components/Layout/FooterCart/index.tsx create mode 100644 src/components/Layout/FooterCart/style.tsx diff --git a/src/components/Layout/FooterCart/index.tsx b/src/components/Layout/FooterCart/index.tsx new file mode 100644 index 0000000..d3c7bb2 --- /dev/null +++ b/src/components/Layout/FooterCart/index.tsx @@ -0,0 +1,22 @@ +import Container from '../Container' +import { Flex } from '@/components/UI' + +import { FooterCart } from './style' + +interface ComponentProps { + children: any +} + +export default function Component(props: ComponentProps) { + const { children } = props + + return ( + + + + {children} + + + + ) +} diff --git a/src/components/Layout/FooterCart/style.tsx b/src/components/Layout/FooterCart/style.tsx new file mode 100644 index 0000000..0053d8b --- /dev/null +++ b/src/components/Layout/FooterCart/style.tsx @@ -0,0 +1,36 @@ +import { styled } from 'styled-components' + +import theme from '@/styles/theme' + +export const FooterCart = styled.div` + position: fixed; + bottom: 0; + left: 0; + + width: 100%; + height: 60px; + + background-color: ${theme.colors.background}; + + .clear-button { + position: relative; + + span { + position: absolute; + top: -2px; + right: -2px; + + display: flex; + align-items: center; + justify-content: center; + width: 20px; + height: 20px; + + background-color: ${theme.colors.error}; + border-radius: 50%; + + font-size: 0.6rem; + color: ${theme.colors.background}; + } + } +` From 6f1e72b794c1821c091c7acbcb43162632fbfcfd Mon Sep 17 00:00:00 2001 From: Jona Date: Tue, 31 Oct 2023 16:03:54 -0300 Subject: [PATCH 084/159] feat(page): integrated Cart --- src/app/cart/layout.tsx | 13 ++++ src/app/cart/page.tsx | 143 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 156 insertions(+) create mode 100644 src/app/cart/layout.tsx create mode 100644 src/app/cart/page.tsx diff --git a/src/app/cart/layout.tsx b/src/app/cart/layout.tsx new file mode 100644 index 0000000..d36d031 --- /dev/null +++ b/src/app/cart/layout.tsx @@ -0,0 +1,13 @@ +import type { Metadata } from 'next' + +export const metadata: Metadata = { + title: 'Punto de venta - LaWallet' +} + +export default function RootLayout({ + children +}: { + children: React.ReactNode +}) { + return <>{children} +} diff --git a/src/app/cart/page.tsx b/src/app/cart/page.tsx new file mode 100644 index 0000000..b5fd86a --- /dev/null +++ b/src/app/cart/page.tsx @@ -0,0 +1,143 @@ +'use client' + +// React/Next +import { useState } from 'react' + +// Components +import { CartIcon, TrashIcon } from '@bitcoin-design/bitcoin-icons-react/filled' +import { Flex, Heading, Divider, Button, Icon, Product } from '@/components/UI' +import Container from '@/components/Layout/Container' +import FooterCart from '@/components/Layout/FooterCart' +import Navbar from '@/components/Layout/Navbar' + +// MOCK +import categories from '@/constants/categories.json' +import products from '@/constants/products.json' + +interface ProductData { + id: number + category_id: number + name: string + description: string + price: { + value: number + currency: string + } +} + +export default function Page() { + const [cart, setCart] = useState([]) + + const [productQuantities, setProductQuantities] = useState<{ + [productId: number]: number + }>({}) + + const addToCart = (product: ProductData) => { + // Update cart + const updatedCart = [...cart, product] + setCart(updatedCart) + + // Update quantities + const productId = product.id + const updatedQuantities = { ...productQuantities } + updatedQuantities[productId] = (updatedQuantities[productId] || 0) + 1 + setProductQuantities(updatedQuantities) + } + + const removeFromCart = (product: ProductData) => { + // Update cart + const updatedCart = [...cart] + + // Update quantities + const productId = product.id + const updatedQuantities = { ...productQuantities } + if (updatedQuantities[productId] > 0) { + updatedCart.splice( + updatedCart.findIndex(item => item.id === productId), + 1 + ) + updatedQuantities[productId] -= 1 + } + + setCart(updatedCart) + setProductQuantities(updatedQuantities) + } + + const getTotalPrice = () => { + let totalPrice = 0 + cart.forEach(product => { + totalPrice += product.price.value + }) + return totalPrice + } + + const groupedProducts: { [categoryId: number]: ProductData[] } = {} + + products.forEach(product => { + const categoryId = product.category_id + if (!groupedProducts[categoryId]) { + groupedProducts[categoryId] = [] + } + groupedProducts[categoryId].push(product) + }) + + const clearCart = () => { + setCart([]) + setProductQuantities({}) + } + + return ( + <> + + + + + Carrito de compras + + + + + {categories.map(category => ( + + {category.name} + + {groupedProducts[category.id]?.map(product => ( + addToCart(product)} + quantityInCart={productQuantities[product.id] || 0} + onRemoveOne={() => removeFromCart(product)} + onAddOne={() => addToCart(product)} + /> + ))} + + + ))} + + + {cart.length > 0 && ( + + +
+ +
+ + + +
+
+ )} +
+ + ) +} From b9ac3ce7970ecd4ba4f090d54e044b8854369445 Mon Sep 17 00:00:00 2001 From: Jona Date: Tue, 31 Oct 2023 16:04:22 -0300 Subject: [PATCH 085/159] fix(component): integrated gap 16 on Flex --- src/components/UI/Flex/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/UI/Flex/index.tsx b/src/components/UI/Flex/index.tsx index 9e38bf3..d2d300a 100644 --- a/src/components/UI/Flex/index.tsx +++ b/src/components/UI/Flex/index.tsx @@ -4,7 +4,7 @@ import { FlexCustom } from './style' interface FlexProps { children: any - gap?: 0 | 2 | 4 | 8 + gap?: 0 | 2 | 4 | 8 | 16 direction?: 'row' | 'column' flex?: 0 | 1 | 'initial' justify?: 'start' | 'end' | 'space-between' | 'center' From 69e3fb2b1e03145f18980cac5dc46cf65ad3d160 Mon Sep 17 00:00:00 2001 From: Jona Date: Tue, 31 Oct 2023 16:37:46 -0300 Subject: [PATCH 086/159] fix(component): style and structure for Product --- src/components/UI/Product/index.tsx | 21 ++++++++++++++------- src/components/UI/Product/style.tsx | 2 +- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/components/UI/Product/index.tsx b/src/components/UI/Product/index.tsx index 984f68b..5fe419b 100644 --- a/src/components/UI/Product/index.tsx +++ b/src/components/UI/Product/index.tsx @@ -35,18 +35,25 @@ export default function Component(props: ComponentProps) { return ( - - {name} - - {price?.currency === 'SAT' ? SAT : $} - {price?.value} + + {name} + + + {price?.currency !== 'SAT' && $} + {price?.value} + {price?.currency !== 'SAT' && ARS} {quantityInCart > 0 ? ( <> - {quantityInCart} @@ -56,7 +63,7 @@ export default function Component(props: ComponentProps) { ) : ( )} diff --git a/src/components/UI/Product/style.tsx b/src/components/UI/Product/style.tsx index 42ce621..31b0567 100644 --- a/src/components/UI/Product/style.tsx +++ b/src/components/UI/Product/style.tsx @@ -8,7 +8,7 @@ export const Product = styled.div` align-items: center; width: 100%; - padding: 8px 0; + padding: 12px 0; border-bottom: 1px solid ${theme.colors.gray20}; From f19944c12aa7a587bc02fabf9895e9324e2058fb Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Tue, 31 Oct 2023 16:37:50 -0300 Subject: [PATCH 087/159] added global Android object --- src/types/global.d.ts | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 src/types/global.d.ts diff --git a/src/types/global.d.ts b/src/types/global.d.ts new file mode 100644 index 0000000..d3cffe8 --- /dev/null +++ b/src/types/global.d.ts @@ -0,0 +1,9 @@ +import React from 'react' + +declare global { + interface Window { + Android?: { + print: (str: string) => void + } + } +} From efe49f7730135d2a08728bb8f4a14eec6e7a2378 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Tue, 31 Oct 2023 16:37:57 -0300 Subject: [PATCH 088/159] added printorde type --- src/types/print.ts | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 src/types/print.ts diff --git a/src/types/print.ts b/src/types/print.ts new file mode 100644 index 0000000..090c1f3 --- /dev/null +++ b/src/types/print.ts @@ -0,0 +1,8 @@ +import { OrderItem } from './order' + +export interface PrintOrder { + items: OrderItem[] + total: number + totalSats: number + currency: string +} From 0a60a6fad385555149a196b53ad8162f183a2110 Mon Sep 17 00:00:00 2001 From: Jona Date: Tue, 31 Oct 2023 16:38:03 -0300 Subject: [PATCH 089/159] style(component): more height and width for Button small --- src/components/UI/Button/style.tsx | 4 ++-- src/components/UI/LinkButton/style.tsx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/UI/Button/style.tsx b/src/components/UI/Button/style.tsx index 3f10c31..57463ed 100644 --- a/src/components/UI/Button/style.tsx +++ b/src/components/UI/Button/style.tsx @@ -16,8 +16,8 @@ export const ButtonCustom = styled.button` justify-content: center; gap: 8px; flex: ${props => (props.$isSmall ? 'inherit' : 1)}; - min-width: ${props => (props.$isSmall ? '30px' : '50px')}; - min-height: ${props => (props.$isSmall ? '30px' : '50px')}; + min-width: ${props => (props.$isSmall ? '40px' : '50px')}; + min-height: ${props => (props.$isSmall ? '40px' : '50px')}; padding: ${props => (props.$isSmall ? '4px 6px' : '12px 8px')}; diff --git a/src/components/UI/LinkButton/style.tsx b/src/components/UI/LinkButton/style.tsx index ee84097..82f50cd 100644 --- a/src/components/UI/LinkButton/style.tsx +++ b/src/components/UI/LinkButton/style.tsx @@ -14,8 +14,8 @@ export const LinkButton = styled.a` justify-content: center; gap: 8px; flex: ${props => (props.$isSmall ? 'inherit' : 1)}; - min-width: ${props => (props.$isSmall ? '30px' : '50px')}; - min-height: ${props => (props.$isSmall ? '30px' : '50px')}; + min-width: ${props => (props.$isSmall ? '40px' : '50px')}; + min-height: ${props => (props.$isSmall ? '40px' : '50px')}; padding: ${props => (props.$isSmall ? '4px 6px' : '12px 8px')}; From abc59dffaf7ec10137654a3517231e33873fc4ca Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Tue, 31 Oct 2023 16:38:06 -0300 Subject: [PATCH 090/159] added OrderItem type --- src/types/order.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/types/order.ts b/src/types/order.ts index 796289f..95d35d3 100644 --- a/src/types/order.ts +++ b/src/types/order.ts @@ -2,3 +2,9 @@ export interface IOrderEventContent { amount: number vote: number } + +export interface OrderItem { + qty: number + name: string + price: number +} From 2f7a7b09b004a7553dfcf1723d227d9127ef0f83 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Tue, 31 Oct 2023 16:38:23 -0300 Subject: [PATCH 091/159] added usePrint hook --- src/hooks/usePrint.ts | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/hooks/usePrint.ts diff --git a/src/hooks/usePrint.ts b/src/hooks/usePrint.ts new file mode 100644 index 0000000..24a187e --- /dev/null +++ b/src/hooks/usePrint.ts @@ -0,0 +1,31 @@ +import { PrintOrder } from '@/types/print' +import { useCallback, useEffect, useState } from 'react' + +interface PrintReturns { + isAvailable: boolean + print: (order: PrintOrder) => void +} + +export const usePrint = (): PrintReturns => { + const [isAvailable, setIsAvailable] = useState(false) + + const print = useCallback( + (order: PrintOrder) => { + if (!isAvailable) { + alert('No se puede imprimir, no se encuentra el objeto Android') + return + } + window!.Android!.print(JSON.stringify(order)) + }, + [isAvailable] + ) + + useEffect(() => { + setIsAvailable(!!window.Android) + }, []) + + return { + isAvailable, + print + } +} From 7cbe1eb692c029f1a471ddd4c4bdae938f1b9b59 Mon Sep 17 00:00:00 2001 From: Jona Date: Tue, 31 Oct 2023 16:38:32 -0300 Subject: [PATCH 092/159] fix(page): changed Heading for Text on Cart --- src/app/cart/page.tsx | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/app/cart/page.tsx b/src/app/cart/page.tsx index b5fd86a..4b28e14 100644 --- a/src/app/cart/page.tsx +++ b/src/app/cart/page.tsx @@ -5,7 +5,15 @@ import { useState } from 'react' // Components import { CartIcon, TrashIcon } from '@bitcoin-design/bitcoin-icons-react/filled' -import { Flex, Heading, Divider, Button, Icon, Product } from '@/components/UI' +import { + Flex, + Heading, + Divider, + Button, + Icon, + Product, + Text +} from '@/components/UI' import Container from '@/components/Layout/Container' import FooterCart from '@/components/Layout/FooterCart' import Navbar from '@/components/Layout/Navbar' @@ -14,6 +22,9 @@ import Navbar from '@/components/Layout/Navbar' import categories from '@/constants/categories.json' import products from '@/constants/products.json' +// Style +import theme from '@/styles/theme' + interface ProductData { id: number category_id: number @@ -98,8 +109,10 @@ export default function Page() { {categories.map(category => ( - - {category.name} + + + {category.name} + {groupedProducts[category.id]?.map(product => ( Date: Tue, 31 Oct 2023 16:38:39 -0300 Subject: [PATCH 093/159] implemented usePrint --- src/app/payment/[orderId]/page.tsx | 40 ++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/src/app/payment/[orderId]/page.tsx b/src/app/payment/[orderId]/page.tsx index db5d94f..38a4d7f 100644 --- a/src/app/payment/[orderId]/page.tsx +++ b/src/app/payment/[orderId]/page.tsx @@ -39,6 +39,8 @@ import Container from '@/components/Layout/Container' import { Loader } from '@/components/Loader/Loader' import { CheckIcon } from '@bitcoin-design/bitcoin-icons-react/filled' import theme from '@/styles/theme' +import { usePrint } from '@/hooks/usePrint' +import { PrintOrder } from '@/types/print' export default function Page() { // Hooks @@ -58,6 +60,8 @@ export default function Page() { requestZapInvoice } = useOrder() const { isAvailable, permission, status: scanStatus, scan, stop } = useCard() + const { print } = usePrint() + const { userConfig } = useContext(LaWalletContext) // Local states @@ -147,14 +151,6 @@ export default function Page() { // eslint-disable-next-line react-hooks/exhaustive-deps }, [orderId]) - // New zap events - useEffect(() => { - if (zapEvents.length <= 0 || finished || pendingAmount > 0) { - return - } - setFinished(true) - }, [zapEvents, finished, pendingAmount]) - // On Invoice ready useEffect(() => { if (!invoice || !zapEmitterPubKey || !isAvailable) { @@ -165,6 +161,34 @@ export default function Page() { // eslint-disable-next-line react-hooks/exhaustive-deps }, [invoice, zapEmitterPubKey]) + // New zap events + useEffect(() => { + if (zapEvents.length <= 0 || finished || pendingAmount > 0) { + return + } + + const testOrder: PrintOrder = { + items: [ + { + name: 'Coca Cola', + qty: 2, + price: 500 + }, + { + name: 'Pizza', + qty: 3, + price: 800 + } + ], + total: 1000, + totalSats: amount, + currency: 'ARS' + } + + print(testOrder) + setFinished(true) + }, [zapEvents, finished, pendingAmount, amount, print]) + useEffect(() => { switch (scanStatus) { case ScanCardStatus.SCANNING: From b5e4ad4d848361f44dd2f550297cade7501a470d Mon Sep 17 00:00:00 2001 From: Jona Date: Tue, 31 Oct 2023 16:41:27 -0300 Subject: [PATCH 094/159] fix: more gap for Flex --- src/app/cart/page.tsx | 2 +- src/components/UI/Flex/index.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/cart/page.tsx b/src/app/cart/page.tsx index 4b28e14..d206dfb 100644 --- a/src/app/cart/page.tsx +++ b/src/app/cart/page.tsx @@ -107,7 +107,7 @@ export default function Page() { - + {categories.map(category => ( diff --git a/src/components/UI/Flex/index.tsx b/src/components/UI/Flex/index.tsx index d2d300a..c9c56a3 100644 --- a/src/components/UI/Flex/index.tsx +++ b/src/components/UI/Flex/index.tsx @@ -4,7 +4,7 @@ import { FlexCustom } from './style' interface FlexProps { children: any - gap?: 0 | 2 | 4 | 8 | 16 + gap?: 0 | 2 | 4 | 8 | 16 | 24 direction?: 'row' | 'column' flex?: 0 | 1 | 'initial' justify?: 'start' | 'end' | 'space-between' | 'center' From 9df63464f595773523c55ed3513095d58c3726f9 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Tue, 31 Oct 2023 16:45:26 -0300 Subject: [PATCH 095/159] remove unused NEXT_PUBLIC_ENCRYPT_PUBLIC_KEY --- src/context/Order.tsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/context/Order.tsx b/src/context/Order.tsx index 97e2a70..d1f79d3 100644 --- a/src/context/Order.tsx +++ b/src/context/Order.tsx @@ -76,9 +76,6 @@ interface IOrderProviderProps { children: React.ReactNode } -const NEXT_PUBLIC_ENCRYPT_PUBLIC_KEY = process.env - .NEXT_PUBLIC_ENCRYPT_PUBLIC_KEY as string - export const OrderProvider = ({ children }: IOrderProviderProps) => { // Hooks const { relays, localPublicKey, localPrivateKey, generateZapEvent } = From 8cc688f4c8e11fa64e108c0bf3d8f54dee19122f Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Tue, 31 Oct 2023 17:29:44 -0300 Subject: [PATCH 096/159] fixed usePrint availability --- src/hooks/usePrint.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hooks/usePrint.ts b/src/hooks/usePrint.ts index 24a187e..b04b55f 100644 --- a/src/hooks/usePrint.ts +++ b/src/hooks/usePrint.ts @@ -21,7 +21,7 @@ export const usePrint = (): PrintReturns => { ) useEffect(() => { - setIsAvailable(!!window.Android) + setIsAvailable(!!window.Android?.print) }, []) return { From 3fbd71b17343932ca7b91f282ac549a42143ea4f Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Tue, 31 Oct 2023 17:29:55 -0300 Subject: [PATCH 097/159] added read on global types --- src/types/global.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/types/global.d.ts b/src/types/global.d.ts index d3cffe8..52a35d8 100644 --- a/src/types/global.d.ts +++ b/src/types/global.d.ts @@ -4,6 +4,7 @@ declare global { interface Window { Android?: { print: (str: string) => void + read: () => string } } } From 4fd385301924c6d3bb8cd1e58a43a408e3e5afc7 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Tue, 31 Oct 2023 17:33:22 -0300 Subject: [PATCH 098/159] added injected nfc context --- src/context/InjectedNFC.tsx | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/context/InjectedNFC.tsx diff --git a/src/context/InjectedNFC.tsx b/src/context/InjectedNFC.tsx new file mode 100644 index 0000000..6f7a46d --- /dev/null +++ b/src/context/InjectedNFC.tsx @@ -0,0 +1,29 @@ +import { createContext } from 'react' + +// Interface +export interface InjectedNFCContext { + subscribe: () => Promise +} + +// Context +export const InjectedNFCContext = createContext({ + subscribe: function (): Promise { + throw new Error('Function not implemented.') + } +}) + +interface InjectedNFCProviderProps { + children: React.ReactNode +} + +export const InjectedNFCProvider = ({ children }: InjectedNFCProviderProps) => { + const subscribe = async () => { + return Promise.resolve('hello') + } + + return ( + + {children} + + ) +} From a3ef3bdf8e9e2051e5abfabc83ec9f726a2cd3c5 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Tue, 31 Oct 2023 17:33:35 -0300 Subject: [PATCH 099/159] added useInjectedNFC hook --- src/hooks/useInjectedNFC.ts | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/hooks/useInjectedNFC.ts diff --git a/src/hooks/useInjectedNFC.ts b/src/hooks/useInjectedNFC.ts new file mode 100644 index 0000000..05053a2 --- /dev/null +++ b/src/hooks/useInjectedNFC.ts @@ -0,0 +1,33 @@ +import { InjectedNFCContext } from '@/context/InjectedNFC' +import { useCallback, useContext, useEffect, useState } from 'react' + +interface PrintReturns { + isAvailable: boolean + read: () => Promise + abortReadCtrl: () => void +} + +export const useInjectedNFC = (): PrintReturns => { + const [isAvailable, setIsAvailable] = useState(false) + const { subscribe } = useContext(InjectedNFCContext) + + const read = useCallback(async (): Promise => { + if (!isAvailable) { + throw new Error('No hay NFC inyectado') + } + alert('Falta implementar') + return '' + }, [isAvailable]) + + const abortReadCtrl = useCallback(() => {}, []) + + useEffect(() => { + setIsAvailable(!!window.Android?.read) + }, []) + + return { + isAvailable, + read, + abortReadCtrl + } +} From a06b4a3847ed583746ed895b3c3b3272bc08c5dc Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Tue, 31 Oct 2023 17:33:48 -0300 Subject: [PATCH 100/159] added InjectedNFCProvider --- src/app/layout.tsx | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 86ea01e..7291d95 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -14,6 +14,7 @@ import GlobalStyles from '@/styles/GlobalStyles' import { LNProvider } from '@/context/LN' import { NostrProvider } from '@/context/Nostr' import { OrderProvider } from '@/context/Order' +import { InjectedNFCProvider } from '@/context/InjectedNFC' interface ProviderProps { children: ReactNode @@ -45,18 +46,20 @@ const Providers = (props: ProviderProps) => { - - - - - - - {children} - - - - - + + + + + + + + {children} + + + + + + ) From 0967f4254866827dc9edcb3cb5435f719c89c27c Mon Sep 17 00:00:00 2001 From: Jona Date: Wed, 1 Nov 2023 14:24:38 -0300 Subject: [PATCH 101/159] feat(component): added Sheet --- src/components/UI/Sheet/index.tsx | 52 +++++++++++++++++++++++++++ src/components/UI/Sheet/style.tsx | 60 +++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 src/components/UI/Sheet/index.tsx create mode 100644 src/components/UI/Sheet/style.tsx diff --git a/src/components/UI/Sheet/index.tsx b/src/components/UI/Sheet/index.tsx new file mode 100644 index 0000000..0de0793 --- /dev/null +++ b/src/components/UI/Sheet/index.tsx @@ -0,0 +1,52 @@ +'use client' + +import { useState, useEffect, ReactNode } from 'react' + +import Container from '../../Layout/Container' + +import Flex from '../Flex' +import Divider from '../Divider' +import Button from '../Button' +import Heading from '../Heading' + +import { Sheet, SheetContent, SheetBody } from './style' + +interface ComponentProps { + children: ReactNode + isOpen: boolean + onClose: () => void + title?: string +} + +export default function Component(props: ComponentProps) { + const { children, isOpen, onClose, title } = props + + const [open, setOpen] = useState(false) + + useEffect(() => { + setOpen(isOpen) + }, [isOpen]) + + const handleClose = () => { + setOpen(false) + onClose() + } + + return ( + + + + + + {title} + + + + + {children} + + + ) +} diff --git a/src/components/UI/Sheet/style.tsx b/src/components/UI/Sheet/style.tsx new file mode 100644 index 0000000..d6cf011 --- /dev/null +++ b/src/components/UI/Sheet/style.tsx @@ -0,0 +1,60 @@ +'use client' + +import { styled } from 'styled-components' + +import theme from '@/styles/theme' + +interface SheetProps { + $isOpen?: boolean +} + +export const Sheet = styled.div` + position: fixed; + overflow-x: hidden; + bottom: 0; + left: 0; + z-index: 3; + + width: 100%; + height: 100%; + + background-color: ${props => + props.$isOpen ? theme.colors.black : 'transparent'}; + + transform: ${props => (props.$isOpen ? 'translateY(0)' : 'translateY(100%)')}; + transition-duration: 0.2s; + transform: ${props => (props.$isOpen ? 1 : 0)}; +` + +interface SheetContentProps { + $isOpen?: boolean +} + +export const SheetContent = styled.div` + position: relative; + z-index: 2; + overflow: hidden; + + display: flex; + flex-direction: column; + width: 100%; + height: calc(100dvh - 60px); + + margin-top: 60px; + padding-top: 24px; + + background-color: ${theme.colors.gray15}; + border-radius: 24px 24px 0 0; + + transform: ${props => (props.$isOpen ? 'translateY(0)' : 'translateY(100%)')}; + transition-duration: 0.4s; +` +export const SheetBody = styled.div` + overflow-x: scroll; + + display: flex; + flex-direction: column; + height: calc(100% - 100px); + + padding: 12px 0; +` From 38adfc77dc6cb9b96428f0b2e63741965eeb58c6 Mon Sep 17 00:00:00 2001 From: Jona Date: Wed, 1 Nov 2023 14:24:43 -0300 Subject: [PATCH 102/159] feat(component): added Sheet --- src/components/UI/index.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/UI/index.tsx b/src/components/UI/index.tsx index b4a1114..5ff3d03 100644 --- a/src/components/UI/index.tsx +++ b/src/components/UI/index.tsx @@ -12,3 +12,4 @@ export { default as Confetti } from './Confetti' export { default as Card } from './Card' export { default as Alert } from './Alert' export { default as Product } from './Product' +export { default as Sheet } from './Sheet' From 1dd3a1797b8762db47587888ab71db6f583ad411 Mon Sep 17 00:00:00 2001 From: Jona Date: Wed, 1 Nov 2023 14:25:03 -0300 Subject: [PATCH 103/159] style(component): changed background for FooterCart --- src/components/Layout/FooterCart/style.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Layout/FooterCart/style.tsx b/src/components/Layout/FooterCart/style.tsx index 0053d8b..1f6c659 100644 --- a/src/components/Layout/FooterCart/style.tsx +++ b/src/components/Layout/FooterCart/style.tsx @@ -10,7 +10,7 @@ export const FooterCart = styled.div` width: 100%; height: 60px; - background-color: ${theme.colors.background}; + background-color: ${theme.colors.gray15}; .clear-button { position: relative; From 5feda12e31de32fa1a884f7365c49b4578263a8b Mon Sep 17 00:00:00 2001 From: Jona Date: Wed, 1 Nov 2023 14:28:56 -0300 Subject: [PATCH 104/159] fix(page): integrated checkout on Cart --- src/app/cart/page.tsx | 91 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 85 insertions(+), 6 deletions(-) diff --git a/src/app/cart/page.tsx b/src/app/cart/page.tsx index d206dfb..b9bef9b 100644 --- a/src/app/cart/page.tsx +++ b/src/app/cart/page.tsx @@ -12,7 +12,8 @@ import { Button, Icon, Product, - Text + Text, + Sheet } from '@/components/UI' import Container from '@/components/Layout/Container' import FooterCart from '@/components/Layout/FooterCart' @@ -37,6 +38,10 @@ interface ProductData { } export default function Page() { + // Sheet + const [showSheet, setShowSheet] = useState(false) + + // Cart const [cart, setCart] = useState([]) const [productQuantities, setProductQuantities] = useState<{ @@ -92,11 +97,16 @@ export default function Page() { groupedProducts[categoryId].push(product) }) - const clearCart = () => { + const handleClearCart = () => { setCart([]) setProductQuantities({}) } + const handleClearCartAndCloseSheet = () => { + setShowSheet(false) + handleClearCart() + } + return ( <> @@ -133,24 +143,93 @@ export default function Page() {
-
)}
+ setShowSheet(false)} + title={`Resumen de compra`} + > + +
    + {Object.entries(productQuantities).map(product => { + const id = Number(product[0]) + const quantities = Number(product[1]) + + const localProduct = products.find(product => product.id === id) + + if (quantities > 0 && localProduct) { + return ( +
  • + + + + {localProduct?.name} + + {quantities}{' '} + {quantities === 1 ? 'unidad' : 'unidades'}. + + + + + $ + + {localProduct?.price.value * quantities} + + + + + +
  • + ) + } + })} +
+
+ + +
+ +
+ + + +
+
+
) } From e7567e0a05a9818059337106442bbc476a276f8e Mon Sep 17 00:00:00 2001 From: Jona Date: Wed, 1 Nov 2023 14:31:15 -0300 Subject: [PATCH 105/159] fix(page): integrated card for Cart on Home --- src/app/page.tsx | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index 3dd07cf..860fc25 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -8,7 +8,8 @@ import { Flex, Heading, Text, Divider, Icon, Card } from '@/components/UI' import Container from '@/components/Layout/Container' import { PantheonIcon, - SharedWalletIcon + SharedWalletIcon, + CartIcon } from '@bitcoin-design/bitcoin-icons-react/filled' export default function Page() { @@ -44,6 +45,21 @@ export default function Page() {
+ + + + + + + + Carrito de compras + + Empeza a vender productos seleccionados. + + + + +
From b99f6380d822a2667c48bccce5649d6cfb85e1ab Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Wed, 1 Nov 2023 14:36:41 -0300 Subject: [PATCH 106/159] added global types for Android --- src/types/global.d.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/types/global.d.ts b/src/types/global.d.ts index 52a35d8..58f1d7d 100644 --- a/src/types/global.d.ts +++ b/src/types/global.d.ts @@ -2,9 +2,15 @@ import React from 'react' declare global { interface Window { + injectedNFC: { + handleRead: (str: string) => void + handleError: (reason: string) => void + resolveFn?: (str: string) => void + rejectFn?: (reason?: string) => void + } Android?: { print: (str: string) => void - read: () => string + isNFCAvailable: () => boolean } } } From 0cded39178818a8a7395fd64fab6ac7de8d7a520 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Wed, 1 Nov 2023 14:36:53 -0300 Subject: [PATCH 107/159] implemented InjectedNFC context --- src/context/InjectedNFC.tsx | 65 ++++++++++++++++++++++++++++++++++--- 1 file changed, 60 insertions(+), 5 deletions(-) diff --git a/src/context/InjectedNFC.tsx b/src/context/InjectedNFC.tsx index 6f7a46d..4018bef 100644 --- a/src/context/InjectedNFC.tsx +++ b/src/context/InjectedNFC.tsx @@ -1,28 +1,83 @@ -import { createContext } from 'react' +import { createContext, useCallback, useEffect, useState } from 'react' // Interface export interface InjectedNFCContext { + isAvailable: boolean subscribe: () => Promise + unsubscribe: () => Promise } // Context export const InjectedNFCContext = createContext({ + isAvailable: false, subscribe: function (): Promise { throw new Error('Function not implemented.') + }, + unsubscribe: function (): Promise { + throw new Error('Function not implemented.') } }) +const injectFunctionstoWindow = () => { + if (!window.Android?.isNFCAvailable?.()) { + console.warn('No injected NFC found') + return false + } + window.injectedNFC = { + handleRead: (data: string) => { + if (!window.injectedNFC.resolveFn) { + console.warn('No callback function found') + return + } + + window.injectedNFC.resolveFn(data) + clearFunctions() + }, + + handleError: (reason: any) => { + if (!window.injectedNFC.rejectFn) { + console.warn('No callback function found') + return + } + + window.injectedNFC.rejectFn(reason) + clearFunctions() + } + } + return true +} + +const clearFunctions = () => { + window.injectedNFC.resolveFn = undefined + window.injectedNFC.rejectFn = undefined +} + interface InjectedNFCProviderProps { children: React.ReactNode } export const InjectedNFCProvider = ({ children }: InjectedNFCProviderProps) => { - const subscribe = async () => { - return Promise.resolve('hello') - } + const [isAvailable, setIsAvailable] = useState(false) + + const subscribe = useCallback(async (): Promise => { + return new Promise((resolve, reject) => { + window.injectedNFC.resolveFn = resolve + window.injectedNFC.rejectFn = reject + }) + }, []) + + const unsubscribe = useCallback(async () => { + window.injectedNFC.handleError('User unsubscribed from NFC') + }, []) + + useEffect(() => { + setIsAvailable(injectFunctionstoWindow()) + }, []) return ( - + {children} ) From 62e8ae378b3e6959416d7a456458f3cb7ea59e94 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Wed, 1 Nov 2023 14:38:56 -0300 Subject: [PATCH 108/159] change alert to console log on missing printer --- src/hooks/usePrint.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hooks/usePrint.ts b/src/hooks/usePrint.ts index b04b55f..3c7d836 100644 --- a/src/hooks/usePrint.ts +++ b/src/hooks/usePrint.ts @@ -12,7 +12,7 @@ export const usePrint = (): PrintReturns => { const print = useCallback( (order: PrintOrder) => { if (!isAvailable) { - alert('No se puede imprimir, no se encuentra el objeto Android') + console.error('No se puede imprimir, no se encuentra el objeto Android') return } window!.Android!.print(JSON.stringify(order)) From ae07268e42c1075b1ad7a9188e93bbfa684eb1a8 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Wed, 1 Nov 2023 14:39:06 -0300 Subject: [PATCH 109/159] implemented useCard hook --- src/hooks/useInjectedNFC.ts | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/src/hooks/useInjectedNFC.ts b/src/hooks/useInjectedNFC.ts index 05053a2..57dc8f7 100644 --- a/src/hooks/useInjectedNFC.ts +++ b/src/hooks/useInjectedNFC.ts @@ -1,5 +1,5 @@ import { InjectedNFCContext } from '@/context/InjectedNFC' -import { useCallback, useContext, useEffect, useState } from 'react' +import { useContext } from 'react' interface PrintReturns { isAvailable: boolean @@ -8,26 +8,11 @@ interface PrintReturns { } export const useInjectedNFC = (): PrintReturns => { - const [isAvailable, setIsAvailable] = useState(false) - const { subscribe } = useContext(InjectedNFCContext) - - const read = useCallback(async (): Promise => { - if (!isAvailable) { - throw new Error('No hay NFC inyectado') - } - alert('Falta implementar') - return '' - }, [isAvailable]) - - const abortReadCtrl = useCallback(() => {}, []) - - useEffect(() => { - setIsAvailable(!!window.Android?.read) - }, []) + const { isAvailable, subscribe, unsubscribe } = useContext(InjectedNFCContext) return { isAvailable, - read, - abortReadCtrl + read: subscribe, + abortReadCtrl: unsubscribe } } From 52809ab0e5d9d17d38a45fada244f5931fe03997 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Wed, 1 Nov 2023 14:39:30 -0300 Subject: [PATCH 110/159] added native and injected nfc switch --- src/hooks/useCard.ts | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/hooks/useCard.ts b/src/hooks/useCard.ts index 0b36a0b..240c977 100644 --- a/src/hooks/useCard.ts +++ b/src/hooks/useCard.ts @@ -10,6 +10,7 @@ import { LNURLResponse } from '@/types/lnurl' // Hooks import { useNfc } from 'use-nfc-hook' +import { useInjectedNFC } from './useInjectedNFC' export type CardReturns = { isAvailable: boolean @@ -31,16 +32,26 @@ const requestLNURL = async (url: string) => { export const useCard = (): CardReturns => { const { isNDEFAvailable, permission, read, abortReadCtrl } = useNfc() + const { isAvailable: isInjectedAvailable, read: readInjected } = + useInjectedNFC() const [status, setStatus] = useState(ScanCardStatus.IDLE) + + const readNative = useCallback(async (): Promise => { + const response = await read() + const record = response.message.records[0] + const decoder = new TextDecoder('utf-8') + return decoder.decode(record.data) + }, [read]) + const scan = async (): Promise => { setStatus(ScanCardStatus.SCANNING) let url = '' try { - const response = await read() - const record = response.message.records[0] - const decoder = new TextDecoder('utf-8') - const decodedContent = decoder.decode(record.data) - url = decodedContent.replace('lnurlw://', 'https://') + console.info('USING Injected') + const response = await (isInjectedAvailable + ? readInjected() + : readNative()) + url = response.replace('lnurlw://', 'https://') } catch (error) { alert('ALERT on reading: ' + JSON.stringify(error)) console.log('ERROR ', error) @@ -53,7 +64,7 @@ export const useCard = (): CardReturns => { } return { - isAvailable: !!isNDEFAvailable, + isAvailable: isInjectedAvailable || !!isNDEFAvailable, permission, status, scan, From ff90f8001fb8afc0bccfab3677b9354575c5d73c Mon Sep 17 00:00:00 2001 From: Jona Date: Wed, 1 Nov 2023 15:24:33 -0300 Subject: [PATCH 111/159] fix: changed structure for Navbar on all pages --- src/app/cart/page.tsx | 8 ++---- src/app/paydesk/page.tsx | 16 ++--------- src/app/tree/page.tsx | 18 +++---------- src/components/Layout/Navbar/index.tsx | 37 +++++++++++++------------- src/components/Layout/Navbar/style.tsx | 16 +++++++---- 5 files changed, 37 insertions(+), 58 deletions(-) diff --git a/src/app/cart/page.tsx b/src/app/cart/page.tsx index b9bef9b..c969bbc 100644 --- a/src/app/cart/page.tsx +++ b/src/app/cart/page.tsx @@ -4,13 +4,12 @@ import { useState } from 'react' // Components -import { CartIcon, TrashIcon } from '@bitcoin-design/bitcoin-icons-react/filled' +import { TrashIcon } from '@bitcoin-design/bitcoin-icons-react/filled' import { Flex, Heading, Divider, Button, - Icon, Product, Text, Sheet @@ -109,10 +108,7 @@ export default function Page() { return ( <> - - - - + Carrito de compras diff --git a/src/app/paydesk/page.tsx b/src/app/paydesk/page.tsx index b7be075..08435c9 100644 --- a/src/app/paydesk/page.tsx +++ b/src/app/paydesk/page.tsx @@ -15,16 +15,7 @@ import { useLN } from '@/context/LN' import { formatToPreference } from '@/lib/formatter' // Components -import { PantheonIcon } from '@bitcoin-design/bitcoin-icons-react/filled' -import { - Flex, - Heading, - Text, - Divider, - Button, - Keyboard, - Icon -} from '@/components/UI' +import { Flex, Heading, Text, Divider, Button, Keyboard } from '@/components/UI' import Container from '@/components/Layout/Container' import Navbar from '@/components/Layout/Navbar' import TokenList from '@/components/TokenList' @@ -85,10 +76,7 @@ export default function Page() { return ( <> - - - - + Modo CAJA diff --git a/src/app/tree/page.tsx b/src/app/tree/page.tsx index 361d155..ac79c19 100644 --- a/src/app/tree/page.tsx +++ b/src/app/tree/page.tsx @@ -9,19 +9,10 @@ import { formatToPreference } from '@/lib/formatter' import { extractLNURLFromQR } from '@/lib/utils' // Components -import { - Flex, - Heading, - Text, - Divider, - Button, - Keyboard, - Icon -} from '@/components/UI' +import { Flex, Heading, Text, Divider, Button, Keyboard } from '@/components/UI' import Container from '@/components/Layout/Container' import Navbar from '@/components/Layout/Navbar' import TokenList from '@/components/TokenList' -import { SharedWalletIcon } from '@bitcoin-design/bitcoin-icons-react/filled' // Contexts and Hooks import { useNumpad } from '@/hooks/useNumpad' @@ -53,7 +44,7 @@ export default function Page() { setCardScanned(true) } catch (e) { console.error(e) - alert("what the hell?" + JSON.stringify(e)) + alert('what the hell?' + JSON.stringify(e)) } }, [fetchLNURL] @@ -106,10 +97,7 @@ export default function Page() { return ( <> - - - - + Modo ARBOLITO diff --git a/src/components/Layout/Navbar/index.tsx b/src/components/Layout/Navbar/index.tsx index 1168318..7e7f677 100644 --- a/src/components/Layout/Navbar/index.tsx +++ b/src/components/Layout/Navbar/index.tsx @@ -1,35 +1,36 @@ 'use client' -import { RefreshIcon } from '@bitcoin-design/bitcoin-icons-react/filled' +import { useRouter } from 'next/navigation' +import { CaretLeftIcon } from '@bitcoin-design/bitcoin-icons-react/filled' -import { Flex, LinkButton } from '@/components/UI' +import { Flex, Icon } from '@/components/UI' import Container from '../Container' -import { Navbar } from './style' +import { Navbar, BackButton } from './style' +import { ReactNode } from 'react' interface ComponentProps { - children?: any - theme?: 'primary' | 'secondary' + children?: ReactNode + showBackPage?: boolean } export default function Component(props: ComponentProps) { - const { children, theme = 'primary' } = props + const { children, showBackPage = false } = props + + const router = useRouter() return ( - + - - {children} - - - - + {showBackPage && ( + router.back()}> + + + + + )} + {children} diff --git a/src/components/Layout/Navbar/style.tsx b/src/components/Layout/Navbar/style.tsx index 9f793b7..889eaa8 100644 --- a/src/components/Layout/Navbar/style.tsx +++ b/src/components/Layout/Navbar/style.tsx @@ -4,14 +4,20 @@ import { styled } from 'styled-components' import theme from '@/styles/theme' -interface NavbarProps { - $theme: 'primary' | 'secondary' -} +interface NavbarProps {} export const Navbar = styled.div` height: 60px; + position: relative; + z-index: 10; + background-color: ${theme.colors.background}; +` + +export const BackButton = styled.button` + background-color: transparent; + border: none; - background-color: ${props => theme.colors[props.$theme]}; + color: ${theme.colors.primary}; - color: ${theme.colors.black}; + cursor: pointer; ` From dd5e8492136ba7ec0913a2fff740d78d7858e00b Mon Sep 17 00:00:00 2001 From: Ferpa Date: Wed, 1 Nov 2023 16:05:15 -0300 Subject: [PATCH 112/159] fix POS scanner --- src/app/scan/page.tsx | 33 ++++++++++++++++++--------- src/app/tree/page.tsx | 1 - src/components/UI/Scanner/Scanner.tsx | 13 +++++------ src/lib/utils.ts | 26 ++++++++++----------- 4 files changed, 40 insertions(+), 33 deletions(-) diff --git a/src/app/scan/page.tsx b/src/app/scan/page.tsx index aca689b..d45bacd 100644 --- a/src/app/scan/page.tsx +++ b/src/app/scan/page.tsx @@ -6,13 +6,15 @@ import { useRouter } from 'next/navigation' // Components import QrScanner from '@/components/UI/Scanner/Scanner' import Container from '@/components/Layout/Container' -import { Button, Divider, Flex } from '@/components/UI' +import { Button, Divider, Flex, Heading } from '@/components/UI' // Types import { TransferTypes } from '@/types/transaction' // Utils -import { detectTransferType, extractLNURLFromQR } from '@/lib/utils' +import { detectTransferType, removeLightningStandard } from '@/lib/utils' +import Navbar from '@/components/Layout/Navbar' +import { useEffect } from 'react' export default function Page() { // Hooks @@ -22,29 +24,38 @@ export default function Page() { const handleScan = (result: any) => { if (!result || !result.data) return - const decodeTransferType: TransferTypes | false = detectTransferType( - result.data - ) - if (!decodeTransferType) return - const lnurl = extractLNURLFromQR(result.data) + const cleanScan: string = removeLightningStandard(result.data) + const scanType: boolean | string = detectTransferType(cleanScan) + if (!scanType) return - if (decodeTransferType === TransferTypes.INVOICE) { - router.push(`/tree?data=${lnurl}`) + if (scanType === TransferTypes.INVOICE) { + // router.push(`/tree?data=${cleanScan}`) return } - router.push(`/tree?data=${lnurl}`) + router.push(`/tree?data=${cleanScan}`) } + useEffect(() => { + router.prefetch('/tree') + }, []) + return ( <> + + + Escanea el código QR + + + diff --git a/src/app/tree/page.tsx b/src/app/tree/page.tsx index ac79c19..e18fc06 100644 --- a/src/app/tree/page.tsx +++ b/src/app/tree/page.tsx @@ -6,7 +6,6 @@ import { useRouter, useSearchParams } from 'next/navigation' // Utils import { formatToPreference } from '@/lib/formatter' -import { extractLNURLFromQR } from '@/lib/utils' // Components import { Flex, Heading, Text, Divider, Button, Keyboard } from '@/components/UI' diff --git a/src/components/UI/Scanner/Scanner.tsx b/src/components/UI/Scanner/Scanner.tsx index e7d28e5..9e470fe 100644 --- a/src/components/UI/Scanner/Scanner.tsx +++ b/src/components/UI/Scanner/Scanner.tsx @@ -2,12 +2,14 @@ import * as React from 'react' import NimiqQrScanner from 'qr-scanner' import { QrScannerProps } from './types' -const styles: any = { +const styles: Record = { container: { + height: '100%', width: '100%', - paddingTop: '100%', + bottom: 0, + left: 0, overflow: 'hidden', - position: 'relative' + position: 'fixed' }, video: { top: 0, @@ -16,8 +18,7 @@ const styles: any = { height: '100%', display: 'block', overflow: 'hidden', - position: 'absolute', - transform: undefined + position: 'absolute' } } @@ -84,11 +85,9 @@ const QrScanner = (props: QrScannerProps) => { if (onMount) onMount(scanner) return () => { - // dispose of component scanner.destroy() } } - // eslint-disable-next-line react-hooks/exhaustive-deps }, []) return ( diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 27dc68d..7a463f6 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -24,15 +24,12 @@ export const validateEmail = (email: string): RegExpMatchArray | null => { } export const detectTransferType = (data: string): TransferTypes | false => { - const cleanStr: string = data.includes('lightning://') - ? data.replace('lightning://', '').toUpperCase() - : data.toUpperCase() - - const isLUD16 = validateEmail(cleanStr) + const upperStr: string = data.toUpperCase() + const isLUD16 = validateEmail(upperStr) if (isLUD16) return TransferTypes.LUD16 - if (cleanStr.includes('LNURL')) return TransferTypes.LNURL - if (cleanStr.includes('LNBC')) return TransferTypes.INVOICE + if (upperStr.startsWith('LNURL')) return TransferTypes.LNURL + if (upperStr.startsWith('LNBC')) return TransferTypes.INVOICE return false } @@ -42,11 +39,12 @@ export const isValidLightningURL = (url: string): boolean => { return pattern.test(url) } -export const extractLNURLFromQR = (url: string): string | null => { - if (url.startsWith("lightning://")) { - // If it does, remove the prefix and return the rest of the string - return url.replace("lightning://", ""); - } - // Otherwise, return the string as is - return url; +export const removeLightningStandard = (str: string) => { + const lowStr: string = str.toLowerCase() + + return lowStr.startsWith('lightning://') + ? lowStr.replace('lightning://', '') + : lowStr.startsWith('lightning:') + ? lowStr.replace('lightning:', '') + : lowStr } From e73d5181b6b0b6eb304a3a95c1ffd03211c5720a Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Wed, 1 Nov 2023 16:36:01 -0300 Subject: [PATCH 113/159] implement order --- src/app/cart/page.tsx | 125 ++++++++++++++++++++++++++++++------------ 1 file changed, 91 insertions(+), 34 deletions(-) diff --git a/src/app/cart/page.tsx b/src/app/cart/page.tsx index c969bbc..eec0c0a 100644 --- a/src/app/cart/page.tsx +++ b/src/app/cart/page.tsx @@ -1,7 +1,13 @@ 'use client' // React/Next -import { useState } from 'react' +import { useCallback, useEffect, useState } from 'react' +import { useRouter } from 'next/navigation' + +// Hooks +import { useLN } from '@/context/LN' +import { useOrder } from '@/context/Order' +import { useNostr } from '@/context/Nostr' // Components import { TrashIcon } from '@bitcoin-design/bitcoin-icons-react/filled' @@ -24,6 +30,7 @@ import products from '@/constants/products.json' // Style import theme from '@/styles/theme' +import useCurrencyConverter from '@/hooks/useCurrencyConverter' interface ProductData { id: number @@ -36,7 +43,23 @@ interface ProductData { } } +// Constants +const DESTINATION_LNURL = process.env.NEXT_PUBLIC_DESTINATION! + export default function Page() { + // Hooks + const { fetchLNURL } = useLN() + const { + generateOrderEvent, + setAmount, + amount, + setOrderEvent, + clear: clearOrder + } = useOrder() + const { publish } = useNostr() + const router = useRouter() + const { convertCurrency } = useCurrencyConverter() + // Sheet const [showSheet, setShowSheet] = useState(false) @@ -47,44 +70,50 @@ export default function Page() { [productId: number]: number }>({}) - const addToCart = (product: ProductData) => { - // Update cart - const updatedCart = [...cart, product] - setCart(updatedCart) + const addToCart = useCallback( + (product: ProductData) => { + // Update cart + const updatedCart = [...cart, product] + setCart(updatedCart) - // Update quantities - const productId = product.id - const updatedQuantities = { ...productQuantities } - updatedQuantities[productId] = (updatedQuantities[productId] || 0) + 1 - setProductQuantities(updatedQuantities) - } + // Update quantities + const productId = product.id + const updatedQuantities = { ...productQuantities } + updatedQuantities[productId] = (updatedQuantities[productId] || 0) + 1 + setProductQuantities(updatedQuantities) + }, + [cart, productQuantities] + ) - const removeFromCart = (product: ProductData) => { - // Update cart - const updatedCart = [...cart] - - // Update quantities - const productId = product.id - const updatedQuantities = { ...productQuantities } - if (updatedQuantities[productId] > 0) { - updatedCart.splice( - updatedCart.findIndex(item => item.id === productId), - 1 - ) - updatedQuantities[productId] -= 1 - } + const removeFromCart = useCallback( + (product: ProductData) => { + // Update cart + const updatedCart = [...cart] - setCart(updatedCart) - setProductQuantities(updatedQuantities) - } + // Update quantities + const productId = product.id + const updatedQuantities = { ...productQuantities } + if (updatedQuantities[productId] > 0) { + updatedCart.splice( + updatedCart.findIndex(item => item.id === productId), + 1 + ) + updatedQuantities[productId] -= 1 + } + + setCart(updatedCart) + setProductQuantities(updatedQuantities) + }, + [cart, productQuantities] + ) - const getTotalPrice = () => { + const getTotalPrice = useCallback(() => { let totalPrice = 0 cart.forEach(product => { totalPrice += product.price.value }) return totalPrice - } + }, [cart]) const groupedProducts: { [categoryId: number]: ProductData[] } = {} @@ -96,16 +125,44 @@ export default function Page() { groupedProducts[categoryId].push(product) }) - const handleClearCart = () => { + const handleClearCart = useCallback(() => { setCart([]) setProductQuantities({}) - } + clearOrder() + }, []) - const handleClearCartAndCloseSheet = () => { + const handleClearCartAndCloseSheet = useCallback(() => { setShowSheet(false) handleClearCart() + }, [handleClearCart]) + + const handleCheckout = async () => { + if (amount <= 0) return + + const order = generateOrderEvent!() + + console.dir(order) + // console.info('Publishing order') + publish!(order).catch(e => { + console.warn('Error publishing order') + console.warn(e) + }) + + setOrderEvent!(order) + router.push('/payment/' + order.id) } + useEffect(() => { + void fetchLNURL(DESTINATION_LNURL) + clearOrder() + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []) + + useEffect(() => { + setAmount(convertCurrency(getTotalPrice(), 'ARS', 'SAT')) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [productQuantities, getTotalPrice]) + return ( <> @@ -218,7 +275,7 @@ export default function Page() { From 510b1ce75e7a4d3f293a51d438194466969345fb Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Wed, 1 Nov 2023 16:36:31 -0300 Subject: [PATCH 114/159] added dependencies on clear --- src/app/cart/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/cart/page.tsx b/src/app/cart/page.tsx index eec0c0a..d75ad8a 100644 --- a/src/app/cart/page.tsx +++ b/src/app/cart/page.tsx @@ -129,7 +129,7 @@ export default function Page() { setCart([]) setProductQuantities({}) clearOrder() - }, []) + }, [clearOrder]) const handleClearCartAndCloseSheet = useCallback(() => { setShowSheet(false) From 49144ca6c2ba3f2ffdab13a84b59632d559500f4 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Wed, 1 Nov 2023 17:38:49 -0300 Subject: [PATCH 115/159] added product type --- src/types/product.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/types/product.ts diff --git a/src/types/product.ts b/src/types/product.ts new file mode 100644 index 0000000..f5b9e58 --- /dev/null +++ b/src/types/product.ts @@ -0,0 +1,14 @@ +export interface ProductData { + id: number + category_id: number + name: string + description: string + price: { + value: number + currency: string + } +} + +export interface ProductQtyData extends ProductData { + qty: number +} From 2bea47f09029e89d9954c3d235751dd45fb77fb8 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Wed, 1 Nov 2023 17:40:42 -0300 Subject: [PATCH 116/159] added parseOrderProducts function --- src/lib/utils.ts | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 7a463f6..40346f4 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -5,6 +5,7 @@ import bolt11 from 'bolt11' import type { IOrderEventContent } from '@/types/order' import { TransferTypes } from '@/types/transaction' import type { Event } from 'nostr-tools' +import { ProductData, ProductQtyData } from '@/types/product' export const parseOrderDescription = (event: Event): IOrderEventContent => { return JSON.parse( @@ -12,6 +13,12 @@ export const parseOrderDescription = (event: Event): IOrderEventContent => { ) as IOrderEventContent } +export const parseOrderProducts = (event: Event): ProductQtyData[] => { + return JSON.parse( + event.tags.find(tag => tag[0] === 'products')![1]! + ) as ProductQtyData[] +} + export const parseZapInvoice = (event: Event): bolt11.PaymentRequestObject => { const paidInvoice = event.tags.find(tag => tag[0] === 'bolt11')?.[1] return bolt11.decode(paidInvoice!) @@ -48,3 +55,25 @@ export const removeLightningStandard = (str: string) => { ? lowStr.replace('lightning:', '') : lowStr } + +export const aggregateProducts = ( + products: ProductData[] +): ProductQtyData[] => { + const productMap = new Map() + + products.forEach(product => { + const key = `${product.id}` + const existingProduct = productMap.get(key) + if (existingProduct) { + existingProduct.qty += 1 + } else { + const newProduct: ProductQtyData = { + ...product, + qty: 1 + } + productMap.set(key, newProduct) + } + }) + + return Array.from(productMap.values()) +} From 280bfad65593e1a3fc056b69b7e17182016dc8b7 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Wed, 1 Nov 2023 17:41:16 -0300 Subject: [PATCH 117/159] added products to Order context --- src/context/Order.tsx | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/context/Order.tsx b/src/context/Order.tsx index d1f79d3..ed00b14 100644 --- a/src/context/Order.tsx +++ b/src/context/Order.tsx @@ -14,10 +14,15 @@ import type { Dispatch, SetStateAction } from 'react' import type { Event, UnsignedEvent } from 'nostr-tools' import { useLN } from './LN' import type { NDKEvent, NostrEvent } from '@nostr-dev-kit/ndk' +import { ProductQtyData } from '@/types/product' // Utils import { useNostr } from './Nostr' -import { parseOrderDescription, parseZapInvoice } from '@/lib/utils' +import { + parseOrderDescription, + parseOrderProducts, + parseZapInvoice +} from '@/lib/utils' import { getEventHash, getSignature, nip44, validateEvent } from 'nostr-tools' import bolt11 from 'bolt11' @@ -31,6 +36,8 @@ export interface IOrderContext { zapEvents: NostrEvent[] currentInvoice?: string memo: unknown + products: ProductQtyData[] + setProducts: Dispatch> clear: () => void setMemo: Dispatch> setAmount: Dispatch> @@ -53,6 +60,8 @@ export const OrderContext = createContext({ fiatAmount: 0, zapEvents: [], fiatCurrency: 'ARS', + memo: undefined, + products: [], checkOut: function (): Promise<{ eventId: string }> { throw new Error('Function not implemented.') }, @@ -62,12 +71,14 @@ export const OrderContext = createContext({ setFiatAmount: function (): void { throw new Error('Function not implemented.') }, - memo: undefined, setMemo: function (_value: unknown): void { throw new Error('Function not implemented.') }, clear: function (): void { throw new Error('Function not implemented.') + }, + setProducts: function (value: SetStateAction): void { + throw new Error('Function not implemented.') } }) @@ -93,6 +104,7 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { const [fiatAmount, setFiatAmount] = useState(0) const [fiatCurrency, setFiatCurrency] = useState('ARS') const [zapEvents, setZapEvents] = useState([]) + const [products, setProducts] = useState([]) const generateOrderEvent = useCallback((): Event => { const vote = (memo as any).vote as number @@ -112,7 +124,9 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { memo, amount, vote - }) + }), + 'products', + JSON.stringify(products) ] ] as string[][] } @@ -127,7 +141,7 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { console.dir(event) return event - }, [amount, localPrivateKey, localPublicKey, relays, memo]) + }, [memo, localPublicKey, relays, amount, products, localPrivateKey]) // Checkout function const checkOut = useCallback(async (): Promise<{ @@ -211,9 +225,11 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { } const description = parseOrderDescription(orderEvent as Event) + const _products = parseOrderProducts(orderEvent as Event) setOrderId(orderEvent.id) setAmount(description.amount) + setProducts(_products) setPendingAmount(description.amount) // setFiatAmount(description.fiatAmount) // setFiatCurrency(description.fiatCurrency) @@ -248,6 +264,8 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { pendingAmount, currentInvoice, memo, + products, + setProducts, clear, setMemo, checkOut, From 485a62ec06001dc2e2e7a458e2899adddeb774eb Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Wed, 1 Nov 2023 17:41:43 -0300 Subject: [PATCH 118/159] added router dependency on scan --- src/app/scan/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/scan/page.tsx b/src/app/scan/page.tsx index d45bacd..aa751a7 100644 --- a/src/app/scan/page.tsx +++ b/src/app/scan/page.tsx @@ -38,7 +38,7 @@ export default function Page() { useEffect(() => { router.prefetch('/tree') - }, []) + }, [router]) return ( <> From 403bba2ac17bf6fad2354029580b2a99804dd81b Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Wed, 1 Nov 2023 17:42:00 -0300 Subject: [PATCH 119/159] added abortReadCtrl switch --- src/hooks/useCard.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/hooks/useCard.ts b/src/hooks/useCard.ts index 240c977..796d4b7 100644 --- a/src/hooks/useCard.ts +++ b/src/hooks/useCard.ts @@ -31,9 +31,17 @@ const requestLNURL = async (url: string) => { } export const useCard = (): CardReturns => { - const { isNDEFAvailable, permission, read, abortReadCtrl } = useNfc() - const { isAvailable: isInjectedAvailable, read: readInjected } = - useInjectedNFC() + const { + isNDEFAvailable, + permission, + read, + abortReadCtrl: abortReadNativeCtrl + } = useNfc() + const { + isAvailable: isInjectedAvailable, + read: readInjected, + abortReadCtrl: abortReadInjectedCtrl + } = useInjectedNFC() const [status, setStatus] = useState(ScanCardStatus.IDLE) const readNative = useCallback(async (): Promise => { @@ -68,6 +76,6 @@ export const useCard = (): CardReturns => { permission, status, scan, - stop: abortReadCtrl + stop: isInjectedAvailable ? abortReadInjectedCtrl : abortReadNativeCtrl } } From 85a489e84d9ba4e7d681e93e252aa2f9f904fe1f Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Wed, 1 Nov 2023 17:42:17 -0300 Subject: [PATCH 120/159] disable lint on dependencies --- src/components/UI/Scanner/Scanner.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/UI/Scanner/Scanner.tsx b/src/components/UI/Scanner/Scanner.tsx index 9e470fe..8669789 100644 --- a/src/components/UI/Scanner/Scanner.tsx +++ b/src/components/UI/Scanner/Scanner.tsx @@ -88,6 +88,7 @@ const QrScanner = (props: QrScannerProps) => { scanner.destroy() } } + // eslint-disable-next-line react-hooks/exhaustive-deps }, []) return ( From ecf88e0530d25283509b1957de5fb31f0dba6156 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Wed, 1 Nov 2023 17:42:38 -0300 Subject: [PATCH 121/159] updated currency conversion and products on cart --- src/app/cart/page.tsx | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/src/app/cart/page.tsx b/src/app/cart/page.tsx index d75ad8a..ef07dec 100644 --- a/src/app/cart/page.tsx +++ b/src/app/cart/page.tsx @@ -8,6 +8,10 @@ import { useRouter } from 'next/navigation' import { useLN } from '@/context/LN' import { useOrder } from '@/context/Order' import { useNostr } from '@/context/Nostr' +import useCurrencyConverter from '@/hooks/useCurrencyConverter' + +// Types +import { ProductData } from '@/types/product' // Components import { TrashIcon } from '@bitcoin-design/bitcoin-icons-react/filled' @@ -30,18 +34,7 @@ import products from '@/constants/products.json' // Style import theme from '@/styles/theme' -import useCurrencyConverter from '@/hooks/useCurrencyConverter' - -interface ProductData { - id: number - category_id: number - name: string - description: string - price: { - value: number - currency: string - } -} +import { aggregateProducts } from '@/lib/utils' // Constants const DESTINATION_LNURL = process.env.NEXT_PUBLIC_DESTINATION! @@ -54,6 +47,7 @@ export default function Page() { setAmount, amount, setOrderEvent, + setProducts, clear: clearOrder } = useOrder() const { publish } = useNostr() @@ -140,8 +134,6 @@ export default function Page() { if (amount <= 0) return const order = generateOrderEvent!() - - console.dir(order) // console.info('Publishing order') publish!(order).catch(e => { console.warn('Error publishing order') @@ -160,6 +152,7 @@ export default function Page() { useEffect(() => { setAmount(convertCurrency(getTotalPrice(), 'ARS', 'SAT')) + setProducts(aggregateProducts(cart)) // eslint-disable-next-line react-hooks/exhaustive-deps }, [productQuantities, getTotalPrice]) From f536309c3272650a04ada897a727d6c135d1ef02 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Wed, 1 Nov 2023 17:43:25 -0300 Subject: [PATCH 122/159] implented products on payment --- src/app/payment/[orderId]/page.tsx | 33 +++++++++++++++--------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/src/app/payment/[orderId]/page.tsx b/src/app/payment/[orderId]/page.tsx index 38a4d7f..416e378 100644 --- a/src/app/payment/[orderId]/page.tsx +++ b/src/app/payment/[orderId]/page.tsx @@ -56,6 +56,7 @@ export default function Page() { amount, pendingAmount, zapEvents, + products, setOrderEvent, requestZapInvoice } = useOrder() @@ -163,31 +164,29 @@ export default function Page() { // New zap events useEffect(() => { + console.dir('products:') + console.dir(products) if (zapEvents.length <= 0 || finished || pendingAmount > 0) { return } - const testOrder: PrintOrder = { - items: [ - { - name: 'Coca Cola', - qty: 2, - price: 500 - }, - { - name: 'Pizza', - qty: 3, - price: 800 - } - ], - total: 1000, + const printOrder = { + total: convertCurrency(amount, 'SAT', 'ARS'), totalSats: amount, - currency: 'ARS' + currency: 'ARS', + items: products.map(product => ({ + name: product.name, + price: product.price.value, + qty: product.qty + })) } - print(testOrder) + console.dir('printOrder:') + console.dir(printOrder) + print(printOrder) setFinished(true) - }, [zapEvents, finished, pendingAmount, amount, print]) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [zapEvents, finished, pendingAmount, amount, print, products]) useEffect(() => { switch (scanStatus) { From da9897816a38fdca88be9e83e2cda660d7beb9f4 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Wed, 1 Nov 2023 21:51:25 -0300 Subject: [PATCH 123/159] fixed parseOrderProducts --- src/lib/utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 40346f4..f8640ee 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -15,7 +15,7 @@ export const parseOrderDescription = (event: Event): IOrderEventContent => { export const parseOrderProducts = (event: Event): ProductQtyData[] => { return JSON.parse( - event.tags.find(tag => tag[0] === 'products')![1]! + event.tags.find(tag => tag[0] === 'products')?.[1] ?? '[]' ) as ProductQtyData[] } From f455c93bfe4c55424f10b7c644e9f145b325d3bd Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Sat, 4 Nov 2023 17:22:43 -0300 Subject: [PATCH 124/159] fixed product bug --- src/context/Order.tsx | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/context/Order.tsx b/src/context/Order.tsx index ed00b14..2580a28 100644 --- a/src/context/Order.tsx +++ b/src/context/Order.tsx @@ -124,10 +124,9 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { memo, amount, vote - }), - 'products', - JSON.stringify(products) - ] + }) + ], + ['products', JSON.stringify(products)] ] as string[][] } From 2b6043c8bbf073f6c4222200654621b3b09278a3 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Sun, 5 Nov 2023 13:34:54 -0300 Subject: [PATCH 125/159] added FEDERATION_ID to env --- .env.example | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.env.example b/.env.example index fd63f94..7aad9a1 100644 --- a/.env.example +++ b/.env.example @@ -1,2 +1,4 @@ NEXT_PUBLIC_DESTINATION=pozo@lacrypta.ar -NEXT_PUBLIC_NOSTR_RELAY=wss://relay.damus.io/ \ No newline at end of file +NEXT_PUBLIC_NOSTR_RELAY=wss://relay.damus.io/ + +FEDERATION_ID=lawallet.ar \ No newline at end of file From 19e3d824fa02b2482ef2240b019c457bf8170fb0 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Sun, 5 Nov 2023 13:35:07 -0300 Subject: [PATCH 126/159] added payment types --- src/types/order.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/types/order.ts b/src/types/order.ts index 95d35d3..ff6ac35 100644 --- a/src/types/order.ts +++ b/src/types/order.ts @@ -1,3 +1,6 @@ +import { Event } from 'nostr-tools' +import { ProductQtyData } from './product' + export interface IOrderEventContent { amount: number vote: number @@ -8,3 +11,17 @@ export interface OrderItem { name: string price: number } + +export interface IPayment { + id: string + items: ProductQtyData[] + amount: number + event: Event + destinationLNURL: string + isPaid: boolean + isPrinted: boolean +} + +export interface IPaymentCache { + [orderId: string]: IPayment +} From acea84d2b074bd902df58b39ac03a9ceaba49c1d Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Sun, 5 Nov 2023 13:35:29 -0300 Subject: [PATCH 127/159] added scan action type --- src/types/card.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/types/card.ts b/src/types/card.ts index fc7e8ef..410cd8b 100644 --- a/src/types/card.ts +++ b/src/types/card.ts @@ -5,3 +5,10 @@ export enum ScanCardStatus { DONE = 'DONE', ERROR = 'ERROR' } + +export enum ScanAction { + IDENTITY_QUERY = 'identityQuery', + EXTENDED_SCAN = 'extendedScan', + WRONG = 'wrong', + DEFAULT = 'default' +} From 6920ea67a966e0d800592180d2adcfe703175259 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Sun, 5 Nov 2023 13:35:47 -0300 Subject: [PATCH 128/159] refactored order --- src/app/cart/page.tsx | 4 +- src/app/paydesk/page.tsx | 6 +- src/app/payment/[orderId]/page.tsx | 58 ++------ src/app/tree/page.tsx | 29 +++- src/context/LN.tsx | 46 +++++- src/context/Order.tsx | 220 ++++++++++++++++++++--------- src/hooks/useCard.ts | 25 +++- 7 files changed, 250 insertions(+), 138 deletions(-) diff --git a/src/app/cart/page.tsx b/src/app/cart/page.tsx index ef07dec..1b35dba 100644 --- a/src/app/cart/page.tsx +++ b/src/app/cart/page.tsx @@ -41,7 +41,7 @@ const DESTINATION_LNURL = process.env.NEXT_PUBLIC_DESTINATION! export default function Page() { // Hooks - const { fetchLNURL } = useLN() + const { setDestinationLNURL } = useLN() const { generateOrderEvent, setAmount, @@ -145,7 +145,7 @@ export default function Page() { } useEffect(() => { - void fetchLNURL(DESTINATION_LNURL) + void setDestinationLNURL(DESTINATION_LNURL) clearOrder() // eslint-disable-next-line react-hooks/exhaustive-deps }, []) diff --git a/src/app/paydesk/page.tsx b/src/app/paydesk/page.tsx index 08435c9..0b287ba 100644 --- a/src/app/paydesk/page.tsx +++ b/src/app/paydesk/page.tsx @@ -29,7 +29,7 @@ export default function Page() { const router = useRouter() const { generateOrderEvent, setAmount, setOrderEvent, clear } = useOrder() const { publish } = useNostr() - const { fetchLNURL } = useLN() + const { setDestinationLNURL } = useLN() const { userConfig } = useContext(LaWalletContext) const numpadData = useNumpad(userConfig.props.currency) @@ -65,8 +65,8 @@ export default function Page() { }, [sats]) useEffect(() => { - void fetchLNURL(DESTINATION_LNURL) - }, [fetchLNURL]) + void setDestinationLNURL(DESTINATION_LNURL) + }, [setDestinationLNURL]) // on mount useEffect(() => { diff --git a/src/app/payment/[orderId]/page.tsx b/src/app/payment/[orderId]/page.tsx index 416e378..b2b4ee8 100644 --- a/src/app/payment/[orderId]/page.tsx +++ b/src/app/payment/[orderId]/page.tsx @@ -6,14 +6,12 @@ import { useParams, useRouter, useSearchParams } from 'next/navigation' // Third-party import axios from 'axios' -import { Event } from 'nostr-tools' // Types import { LNURLResponse, LNURLWStatus } from '@/types/lnurl' import { ScanCardStatus } from '@/types/card' // Contexts and Hooks -import { useNostr } from '@/context/Nostr' import { useOrder } from '@/context/Order' import { useLN } from '@/context/LN' import { LaWalletContext } from '@/context/LaWalletContext' @@ -40,25 +38,22 @@ import { Loader } from '@/components/Loader/Loader' import { CheckIcon } from '@bitcoin-design/bitcoin-icons-react/filled' import theme from '@/styles/theme' import { usePrint } from '@/hooks/usePrint' -import { PrintOrder } from '@/types/print' export default function Page() { // Hooks const router = useRouter() const { orderId: orderIdFromUrl } = useParams() const query = useSearchParams() - const { getEvent } = useNostr() const { convertCurrency } = useCurrencyConverter() const { zapEmitterPubKey } = useLN() const { orderId, amount, - pendingAmount, - zapEvents, products, - setOrderEvent, - requestZapInvoice + isPaid, + currentInvoice: invoice, + loadOrder } = useOrder() const { isAvailable, permission, status: scanStatus, scan, stop } = useCard() const { print } = usePrint() @@ -66,7 +61,6 @@ export default function Page() { const { userConfig } = useContext(LaWalletContext) // Local states - const [invoice, setInvoice] = useState() const [cardStatus, setCardStatus] = useState(LNURLWStatus.IDLE) const [finished, setFinished] = useState(false) @@ -80,23 +74,6 @@ export default function Page() { router.push(back) }, [router, query]) - const fetchOrder = useCallback( - async (_orderId: string) => { - const order = await getEvent!(_orderId) - - if (!order) { - alert('NO HAY ORDER!') - return - } - - setOrderEvent!((await order.toNostrEvent()) as Event) - - console.info('ORDER:') - console.dir(order) - }, - [getEvent, setOrderEvent] - ) - const startRead = async () => { const lnurlResponse = await scan() processLNURLResponse(lnurlResponse) @@ -131,26 +108,13 @@ export default function Page() { return } - fetchOrder(orderIdFromUrl as string) - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [orderIdFromUrl, orderId]) - - // On orderId change - useEffect(() => { - if (!orderId || !zapEmitterPubKey) { - return + // fetchOrder(orderIdFromUrl as string) + if (!loadOrder(orderIdFromUrl as string)) { + alert('No se encontró la orden') + handleBack() } - - requestZapInvoice!(amount * 1000, orderId) - .then(_invoice => { - console.info('INVOICE:') - setInvoice!(_invoice) - }) - .catch(() => { - alert("Couldn't generate invoice.") - }) // eslint-disable-next-line react-hooks/exhaustive-deps - }, [orderId]) + }, [orderIdFromUrl, orderId]) // On Invoice ready useEffect(() => { @@ -164,9 +128,7 @@ export default function Page() { // New zap events useEffect(() => { - console.dir('products:') - console.dir(products) - if (zapEvents.length <= 0 || finished || pendingAmount > 0) { + if (!isPaid || finished) { return } @@ -186,7 +148,7 @@ export default function Page() { print(printOrder) setFinished(true) // eslint-disable-next-line react-hooks/exhaustive-deps - }, [zapEvents, finished, pendingAmount, amount, print, products]) + }, [isPaid, finished, amount, print, products]) useEffect(() => { switch (scanStatus) { diff --git a/src/app/tree/page.tsx b/src/app/tree/page.tsx index e18fc06..4d86fa0 100644 --- a/src/app/tree/page.tsx +++ b/src/app/tree/page.tsx @@ -19,6 +19,8 @@ import { useLN } from '@/context/LN' import { useNostr } from '@/context/Nostr' import { useOrder } from '@/context/Order' import { LaWalletContext } from '@/context/LaWalletContext' +import { useCard } from '@/hooks/useCard' +import { ScanAction } from '@/types/card' export default function Page() { // Hooks @@ -26,10 +28,12 @@ export default function Page() { const { generateOrderEvent, setAmount, setOrderEvent, clear } = useOrder() const { publish } = useNostr() const query = useSearchParams() - const { fetchLNURL } = useLN() + const { setDestinationLNURL } = useLN() const { userConfig } = useContext(LaWalletContext) const numpadData = useNumpad(userConfig.props.currency) + const { isAvailable, scan, stop } = useCard() + const sats = numpadData.intAmount['SAT'] // Local states @@ -39,14 +43,14 @@ export default function Page() { const processUrl = useCallback( async (url: string) => { try { - await fetchLNURL(url) + await setDestinationLNURL(url) setCardScanned(true) } catch (e) { console.error(e) alert('what the hell?' + JSON.stringify(e)) } }, - [fetchLNURL] + [setDestinationLNURL] ) const handleClick = async () => { @@ -65,6 +69,17 @@ export default function Page() { router.push(`/payment/${order.id}?back=/tree`) } + const startScanning = async () => { + try { + const scanned = await scan(ScanAction.WRONG) + alert(JSON.stringify(scanned)) + // setCardScanned(true); + } catch (e) { + console.error(e) + alert('what the hell?' + JSON.stringify(e)) + } + } + /** useEffects */ useEffect(() => { if (numpadData.usedCurrency !== userConfig.props.currency) @@ -91,8 +106,14 @@ export default function Page() { // on mount useEffect(() => { clear() + if (isAvailable) { + startScanning() + return () => { + stop() + } + } // eslint-disable-next-line react-hooks/exhaustive-deps - }, []) + }, [isAvailable]) return ( <> diff --git a/src/context/LN.tsx b/src/context/LN.tsx index dafc795..04a4e26 100644 --- a/src/context/LN.tsx +++ b/src/context/LN.tsx @@ -1,14 +1,26 @@ 'use client' // React -import { createContext, useCallback, useContext, useState } from 'react' +import { + Dispatch, + SetStateAction, + createContext, + useCallback, + useContext, + useEffect, + useState +} from 'react' // Interface export interface ILNContext { zapEmitterPubKey?: string callbackUrl?: string destination?: string - fetchLNURL: (_lnurl: string) => Promise + destinationPubKey?: string + destinationLNURL?: string + setZapEmitterPubKey: (_pubKey: string) => void + setCallbackUrl: (_url: string) => void + setDestinationLNURL: Dispatch> requestInvoice: (_req: InvoiceRequest) => Promise } @@ -20,10 +32,18 @@ const DESTINATION_LNURL = process.env.NEXT_PUBLIC_DESTINATION! // Context export const LNContext = createContext({ - fetchLNURL: function (_lnurl: string): Promise { + requestInvoice: function (_req: InvoiceRequest): Promise { throw new Error('Function not implemented.') }, - requestInvoice: function (_req: InvoiceRequest): Promise { + setZapEmitterPubKey: function (_pubKey: string): void { + throw new Error('Function not implemented.') + }, + setCallbackUrl: function (_url: string): void { + throw new Error('Function not implemented.') + }, + setDestinationLNURL: function ( + value: SetStateAction + ): void { throw new Error('Function not implemented.') } }) @@ -37,6 +57,8 @@ export const LNProvider = ({ children }: ILNProviderProps) => { // Local state const [zapEmitterPubKey, setZapEmitterPubKey] = useState() const [callbackUrl, setCallbackUrl] = useState() + const [destinationPubKey, setDestinationPubKey] = useState() + const [destinationLNURL, setDestinationLNURL] = useState() /** Functions */ const fetchLNURL = useCallback(async (lnurl: string) => { @@ -65,13 +87,27 @@ export const LNProvider = ({ children }: ILNProviderProps) => { [callbackUrl] ) + useEffect(() => { + if (!destinationLNURL) { + setZapEmitterPubKey(undefined) + setCallbackUrl(undefined) + return + } + fetchLNURL(destinationLNURL) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [destinationLNURL]) + return ( diff --git a/src/context/Order.tsx b/src/context/Order.tsx index 2580a28..39634b9 100644 --- a/src/context/Order.tsx +++ b/src/context/Order.tsx @@ -13,40 +13,41 @@ import { import type { Dispatch, SetStateAction } from 'react' import type { Event, UnsignedEvent } from 'nostr-tools' import { useLN } from './LN' -import type { NDKEvent, NostrEvent } from '@nostr-dev-kit/ndk' +import type { NDKEvent } from '@nostr-dev-kit/ndk' import { ProductQtyData } from '@/types/product' +import { IPayment, IPaymentCache } from '@/types/order' -// Utils +// Contexts and Hooks import { useNostr } from './Nostr' -import { - parseOrderDescription, - parseOrderProducts, - parseZapInvoice -} from '@/lib/utils' -import { getEventHash, getSignature, nip44, validateEvent } from 'nostr-tools' +import { useLocalStorage } from 'react-use-storage' + +// Utils import bolt11 from 'bolt11' +import { parseZapInvoice } from '@/lib/utils' +import { getEventHash, getSignature, nip44, validateEvent } from 'nostr-tools' // Interface export interface IOrderContext { orderId?: string amount: number - pendingAmount: number fiatAmount: number fiatCurrency?: string - zapEvents: NostrEvent[] currentInvoice?: string memo: unknown products: ProductQtyData[] + isPaid?: boolean + isPrinted?: boolean + orderEvent: Event | undefined + loadOrder: (orderId: string) => boolean + setIsPrinted?: Dispatch> setProducts: Dispatch> clear: () => void setMemo: Dispatch> setAmount: Dispatch> checkOut: () => Promise<{ eventId: string }> - setCurrentInvoice?: Dispatch> setOrderEvent?: Dispatch> generateOrderEvent?: () => Event setFiatAmount: Dispatch> - addZapEvent?: (event: NDKEvent) => void requestZapInvoice?: ( amountMillisats: number, orderEventId: string @@ -56,9 +57,7 @@ export interface IOrderContext { // Context export const OrderContext = createContext({ amount: 0, - pendingAmount: 0, fiatAmount: 0, - zapEvents: [], fiatCurrency: 'ARS', memo: undefined, products: [], @@ -79,7 +78,11 @@ export const OrderContext = createContext({ }, setProducts: function (value: SetStateAction): void { throw new Error('Function not implemented.') - } + }, + loadOrder: function (orderId: string): boolean { + throw new Error('Function not implemented.') + }, + orderEvent: undefined }) // Component Props @@ -91,20 +94,29 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { // Hooks const { relays, localPublicKey, localPrivateKey, generateZapEvent } = useNostr() - const { requestInvoice, zapEmitterPubKey } = useLN() + const { + destinationLNURL, + zapEmitterPubKey, + requestInvoice, + setDestinationLNURL + } = useLN() const { subscribeZap, publish } = useNostr() // Local states const [orderId, setOrderId] = useState() + const [isPaid, setIsPaid] = useState(false) + const [isPrinted, setIsPrinted] = useState(false) const [orderEvent, setOrderEvent] = useState() const [amount, setAmount] = useState(0) const [memo, setMemo] = useState({}) const [currentInvoice, setCurrentInvoice] = useState() - const [pendingAmount, setPendingAmount] = useState(0) const [fiatAmount, setFiatAmount] = useState(0) const [fiatCurrency, setFiatCurrency] = useState('ARS') - const [zapEvents, setZapEvents] = useState([]) const [products, setProducts] = useState([]) + const [paymentsCache, setPaymentsCache] = useLocalStorage( + 'paymentsCache', + {} + ) const generateOrderEvent = useCallback((): Event => { const vote = (memo as any).vote as number @@ -139,8 +151,55 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { console.info('event:') console.dir(event) + // Saving current payments status + const payment: IPayment = { + amount, + event: event!, + id: event!.id, + isPaid, + destinationLNURL: destinationLNURL!, + isPrinted: isPrinted, + items: products + } + + paymentsCache[payment.id] = payment + setPaymentsCache(paymentsCache) + return event - }, [memo, localPublicKey, relays, amount, products, localPrivateKey]) + }, [ + memo, + localPublicKey, + relays, + amount, + products, + localPrivateKey, + isPaid, + destinationLNURL, + isPrinted, + paymentsCache, + setPaymentsCache + ]) + + // Load order from cache + const loadOrder = useCallback( + (orderId: string): boolean => { + console.info('Loading order from cache') + const order = paymentsCache[orderId] + if (!order) { + return false + } + setAmount(order.amount) + setIsPaid(order.isPaid) + setIsPrinted(order.isPrinted) + setProducts(order.items) + setOrderEvent(order.event) + + setDestinationLNURL(order.destinationLNURL) + setOrderId(order.id) + return true + }, + [paymentsCache, setDestinationLNURL] + ) // Checkout function const checkOut = useCallback(async (): Promise<{ @@ -153,18 +212,6 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { return { eventId: order.id } }, [generateOrderEvent, publish]) - const addZapEvent = useCallback(async (event: NDKEvent) => { - const invoice = parseZapInvoice(event as Event) - if (!invoice.complete) { - console.info('Incomplete invoice') - return - } - const amountPaid = parseInt(invoice.millisatoshis!) / 1000 - setPendingAmount(prev => prev - amountPaid) - const _event = await event.toNostrEvent() - setZapEvents(prev => [...prev, _event]) - }, []) - const requestZapInvoice = useCallback( async (amountMillisats: number, orderEventId: string): Promise => { // Generate ZapRequestEvent @@ -184,63 +231,80 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { [generateZapEvent, requestInvoice] ) + const handlePaymentReceived = useCallback( + async (event: NDKEvent) => { + const invoice = parseZapInvoice(event as Event) + if (!invoice.complete) { + console.info('Incomplete invoice') + return + } + const amountPaid = parseInt(invoice.millisatoshis!) / 1000 + if (amountPaid >= amount) { + setIsPaid(true) + } + const _event = await event.toNostrEvent() + }, + [amount] + ) + // Handle new incoming zap - const onZap = (event: NDKEvent) => { - if (event.pubkey !== zapEmitterPubKey) { - throw new Error('Invalid Recipient Pubkey') - } + const onZap = useCallback( + (event: NDKEvent) => { + if (event.pubkey !== zapEmitterPubKey) { + throw new Error('Invalid Recipient Pubkey') + } - if (!validateEvent(event)) { - throw new Error('Invalid event') - } + if (!validateEvent(event)) { + throw new Error('Invalid event') + } - const paidInvoice = event.tags.find(tag => tag[0] === 'bolt11')?.[1] - const decodedPaidInvoice = bolt11.decode(paidInvoice!) + const paidInvoice = event.tags.find(tag => tag[0] === 'bolt11')?.[1] + const decodedPaidInvoice = bolt11.decode(paidInvoice!) - addZapEvent(event) - console.info('Amount paid : ' + decodedPaidInvoice.millisatoshis) - } + handlePaymentReceived(event) + console.info('Amount paid : ' + decodedPaidInvoice.millisatoshis) + }, + [handlePaymentReceived, zapEmitterPubKey] + ) const clear = useCallback(() => { - setAmount(0) setOrderId(undefined) setOrderEvent(undefined) - setMemo({}) + setAmount(0) setFiatAmount(0) - setZapEvents([]) + setIsPaid(false) + setCurrentInvoice(undefined) + setIsPrinted(false) + setProducts([]) + setMemo({}) }, []) /** useEffects */ - // on orderEvent change + // on order id change useEffect(() => { - if (!orderEvent) { - setOrderId(undefined) - setAmount(0) - setPendingAmount(0) - setFiatAmount(0) - setFiatCurrency('ARS') + if (!orderId) { return } - - const description = parseOrderDescription(orderEvent as Event) - const _products = parseOrderProducts(orderEvent as Event) - - setOrderId(orderEvent.id) - setAmount(description.amount) - setProducts(_products) - setPendingAmount(description.amount) - // setFiatAmount(description.fiatAmount) - // setFiatCurrency(description.fiatCurrency) - }, [orderEvent]) + const order = paymentsCache[orderId] + // Prevent order from updating to false + paymentsCache[orderId] = { + ...order, + isPaid: order.isPaid || isPaid, + isPrinted: order.isPrinted || isPrinted + } + setPaymentsCache(paymentsCache) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [orderId, isPaid, isPrinted, paymentsCache]) // Subscribe for zaps useEffect(() => { - if (!orderId || !zapEmitterPubKey) { + if (!orderId || !zapEmitterPubKey || isPaid) { return } console.info(`Subscribing for ${orderId}...`) + const sub = subscribeZap!(orderId) sub.addListener('event', onZap) @@ -252,29 +316,45 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { // eslint-disable-next-line react-hooks/exhaustive-deps }, [orderId, zapEmitterPubKey, zapEmitterPubKey]) + // On orderId change + useEffect(() => { + if (!orderId || !zapEmitterPubKey) { + return + } + + requestZapInvoice!(amount * 1000, orderId) + .then(_invoice => { + setCurrentInvoice!(_invoice) + }) + .catch(() => { + alert("Couldn't generate invoice.") + }) + }, [amount, orderId, zapEmitterPubKey, requestZapInvoice]) + return ( {children} diff --git a/src/hooks/useCard.ts b/src/hooks/useCard.ts index 796d4b7..fa490aa 100644 --- a/src/hooks/useCard.ts +++ b/src/hooks/useCard.ts @@ -5,7 +5,7 @@ import { useCallback, useState } from 'react' import axios from 'axios' // Types -import { ScanCardStatus } from '@/types/card' +import { ScanCardStatus, ScanAction } from '@/types/card' import { LNURLResponse } from '@/types/lnurl' // Hooks @@ -16,12 +16,23 @@ export type CardReturns = { isAvailable: boolean permission: string status: ScanCardStatus - scan: () => Promise + scan: (type?: ScanAction) => Promise stop: () => void } -const requestLNURL = async (url: string) => { - const response = await axios.get(url) +const FEDERATION_ID = process.env.FEDERATION_ID! + +const requestLNURL = async (url: string, type: ScanAction) => { + const headers = { + 'Content-Type': 'application/json', + 'X-LaWallet-Action': type, + 'X-LaWallet-Param': `federationId=${FEDERATION_ID}, tokens=BTC` + } + + alert('headers: ' + JSON.stringify(headers)) + const response = await axios.get(url, { + headers: headers + }) if (response.status !== 200) { alert(JSON.stringify(response.data)) throw new Error('Hubo un error: ' + JSON.stringify(response.data)) @@ -51,7 +62,9 @@ export const useCard = (): CardReturns => { return decoder.decode(record.data) }, [read]) - const scan = async (): Promise => { + const scan = async ( + type: ScanAction = ScanAction.DEFAULT + ): Promise => { setStatus(ScanCardStatus.SCANNING) let url = '' try { @@ -66,7 +79,7 @@ export const useCard = (): CardReturns => { } setStatus(ScanCardStatus.REQUESTING) - const response = requestLNURL(url) + const response = requestLNURL(url, type) setStatus(ScanCardStatus.DONE) return response } From d06cc8a87cd2d69404965b6172b8cc4ceddce946 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Sun, 5 Nov 2023 16:43:43 -0300 Subject: [PATCH 129/159] added NEXT_PUBLIC_IDENTITY_PROVIDER_URL to env --- .env.example | 1 + 1 file changed, 1 insertion(+) diff --git a/.env.example b/.env.example index 7aad9a1..4b5d6b5 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,5 @@ NEXT_PUBLIC_DESTINATION=pozo@lacrypta.ar NEXT_PUBLIC_NOSTR_RELAY=wss://relay.damus.io/ +NEXT_PUBLIC_IDENTITY_PROVIDER_URL=https://lawallet.ar FEDERATION_ID=lawallet.ar \ No newline at end of file From 19705433ff449c1d10297d60d62b2f8445fb71ba Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Sun, 5 Nov 2023 16:44:00 -0300 Subject: [PATCH 130/159] added isValidUrl function --- src/lib/utils.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/lib/utils.ts b/src/lib/utils.ts index f8640ee..94542de 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -77,3 +77,16 @@ export const aggregateProducts = ( return Array.from(productMap.values()) } + +export function isValidUrl(urlString: string): boolean { + const pattern = new RegExp( + '^(https?:\\/\\/)?' + // protocol + '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // domain name and extension + '((\\d{1,3}\\.){3}\\d{1,3}))' + // OR ip (v4) address + '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // port and path + '(\\?[;&a-z\\d%_.~+=-]*)?' + // query string + '(\\#[-a-z\\d_]*)?$', + 'i' + ) // fragment locator + return !!pattern.test(urlString) +} From 256f4c091c2f5b1515ac17f7662c8121d815c512 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Sun, 5 Nov 2023 16:44:11 -0300 Subject: [PATCH 131/159] removed wrong type on card --- src/types/card.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/types/card.ts b/src/types/card.ts index 410cd8b..72a25d1 100644 --- a/src/types/card.ts +++ b/src/types/card.ts @@ -9,6 +9,5 @@ export enum ScanCardStatus { export enum ScanAction { IDENTITY_QUERY = 'identityQuery', EXTENDED_SCAN = 'extendedScan', - WRONG = 'wrong', DEFAULT = 'default' } From 95e863d044303e17a962b10867580caac72df75c Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Sun, 5 Nov 2023 16:44:22 -0300 Subject: [PATCH 132/159] added accountPubKey to LNRUL type --- src/types/lnurl.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/types/lnurl.ts b/src/types/lnurl.ts index 704f37e..55c9a29 100644 --- a/src/types/lnurl.ts +++ b/src/types/lnurl.ts @@ -5,6 +5,7 @@ export interface LNURLResponse { minWithdrawable: number maxWithdrawable: number defaultDescription: string + accountPubKey?: string } export enum LNURLWStatus { From a802e5d064edb4d72fd68577aaa3470ce6443ebe Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Sun, 5 Nov 2023 16:44:39 -0300 Subject: [PATCH 133/159] added mock for card scan --- src/hooks/useCard.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/hooks/useCard.ts b/src/hooks/useCard.ts index fa490aa..695e6fa 100644 --- a/src/hooks/useCard.ts +++ b/src/hooks/useCard.ts @@ -29,6 +29,15 @@ const requestLNURL = async (url: string, type: ScanAction) => { 'X-LaWallet-Param': `federationId=${FEDERATION_ID}, tokens=BTC` } + if (type === ScanAction.IDENTITY_QUERY) { + alert('Returning Mock') + return { + tag: 'laWallet:identityQuery', + accountPubKey: + '685e19eeb895be1331aaa3d1a2c946fbb36cbf83ec763cdaa1561f799d07c21d' + } + } + alert('headers: ' + JSON.stringify(headers)) const response = await axios.get(url, { headers: headers From 8a782c6a4c12b48842a978d16a360d080ff1d65e Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Sun, 5 Nov 2023 16:45:08 -0300 Subject: [PATCH 134/159] added regular urls on fetchLNURL --- src/context/LN.tsx | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/context/LN.tsx b/src/context/LN.tsx index 04a4e26..b5cf587 100644 --- a/src/context/LN.tsx +++ b/src/context/LN.tsx @@ -27,6 +27,7 @@ export interface ILNContext { import { requestPayServiceParams } from 'lnurl-pay' import axios from 'axios' import type { InvoiceRequest } from '@/types/lightning' +import { isValidUrl } from '@/lib/utils' const DESTINATION_LNURL = process.env.NEXT_PUBLIC_DESTINATION! @@ -62,16 +63,28 @@ export const LNProvider = ({ children }: ILNProviderProps) => { /** Functions */ const fetchLNURL = useCallback(async (lnurl: string) => { + let lud06 console.info(`Fetching LNURL: ${lnurl}`) - const lud06 = await requestPayServiceParams({ - lnUrlOrAddress: lnurl - }) + if (isValidUrl(lnurl)) { + console.info('Going for regular https') + const response = await axios.get(lnurl) + lud06 = { + ...response.data, + rawData: response.data + } + } else { + console.info('Going for LNURL') + lud06 = await requestPayServiceParams({ + lnUrlOrAddress: lnurl + }) + } console.info('LUD06 response:') console.dir(lud06) // TODO: Check if lud06 is valid setZapEmitterPubKey(lud06.rawData.nostrPubkey as string) + setDestinationPubKey(lud06.rawData.accountPubKey as string) setCallbackUrl(lud06.callback) }, []) From 5ffbdb78e8b92775afa78866a45e8b8dbc4a8df4 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Sun, 5 Nov 2023 16:45:29 -0300 Subject: [PATCH 135/159] process cards on tree --- src/app/tree/page.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/app/tree/page.tsx b/src/app/tree/page.tsx index 4d86fa0..b746cfd 100644 --- a/src/app/tree/page.tsx +++ b/src/app/tree/page.tsx @@ -22,6 +22,8 @@ import { LaWalletContext } from '@/context/LaWalletContext' import { useCard } from '@/hooks/useCard' import { ScanAction } from '@/types/card' +const IDENTITY_PROVIDER_URL = process.env.NEXT_PUBLIC_IDENTITY_PROVIDER_URL! + export default function Page() { // Hooks const router = useRouter() @@ -71,7 +73,13 @@ export default function Page() { const startScanning = async () => { try { - const scanned = await scan(ScanAction.WRONG) + const scanned = await scan(ScanAction.IDENTITY_QUERY) + if (scanned.tag !== 'laWallet:identityQuery') { + alert('Compatible solo con tarjetas de LaWallet') + return + } + + processUrl(`${IDENTITY_PROVIDER_URL}/api/lud06/${scanned.accountPubKey}`) alert(JSON.stringify(scanned)) // setCardScanned(true); } catch (e) { From f1aa9477e1a74d86bd9fdef93f0b535501c43781 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Sun, 5 Nov 2023 23:00:36 -0300 Subject: [PATCH 136/159] updated contexts --- src/context/LN.tsx | 31 +++++++++++++++++++++++++------ src/context/Nostr.tsx | 25 ++++++++++++++++++++++++- src/context/Order.tsx | 19 ++++++++++++++----- 3 files changed, 63 insertions(+), 12 deletions(-) diff --git a/src/context/LN.tsx b/src/context/LN.tsx index b5cf587..db7a08f 100644 --- a/src/context/LN.tsx +++ b/src/context/LN.tsx @@ -11,6 +11,14 @@ import { useState } from 'react' +// Types +import type { InvoiceRequest } from '@/types/lightning' + +// Utils +import axios from 'axios' +import { requestPayServiceParams } from 'lnurl-pay' +import { isValidUrl } from '@/lib/utils' + // Interface export interface ILNContext { zapEmitterPubKey?: string @@ -18,17 +26,13 @@ export interface ILNContext { destination?: string destinationPubKey?: string destinationLNURL?: string + setAccountPubKey: (_pubKey: string) => void setZapEmitterPubKey: (_pubKey: string) => void setCallbackUrl: (_url: string) => void setDestinationLNURL: Dispatch> requestInvoice: (_req: InvoiceRequest) => Promise } -import { requestPayServiceParams } from 'lnurl-pay' -import axios from 'axios' -import type { InvoiceRequest } from '@/types/lightning' -import { isValidUrl } from '@/lib/utils' - const DESTINATION_LNURL = process.env.NEXT_PUBLIC_DESTINATION! // Context @@ -46,6 +50,9 @@ export const LNContext = createContext({ value: SetStateAction ): void { throw new Error('Function not implemented.') + }, + setAccountPubKey: function (_pubKey: string): void { + throw new Error('Function not implemented.') } }) @@ -54,6 +61,8 @@ interface ILNProviderProps { children: React.ReactNode } +const IDENTITY_PROVIDER_URL = process.env.NEXT_PUBLIC_IDENTITY_PROVIDER_URL! + export const LNProvider = ({ children }: ILNProviderProps) => { // Local state const [zapEmitterPubKey, setZapEmitterPubKey] = useState() @@ -88,6 +97,12 @@ export const LNProvider = ({ children }: ILNProviderProps) => { setCallbackUrl(lud06.callback) }, []) + const setAccountPubKey = (pubkey: string) => { + setDestinationPubKey(pubkey) + setCallbackUrl(pubkey) + setDestinationLNURL(`${IDENTITY_PROVIDER_URL}/api/lud06/${pubkey}`) + } + const requestInvoice = useCallback( async ({ amountMillisats, zapEvent }: InvoiceRequest): Promise => { const encodedZapEvent = encodeURI(JSON.stringify(zapEvent)) @@ -106,9 +121,12 @@ export const LNProvider = ({ children }: ILNProviderProps) => { setCallbackUrl(undefined) return } + if (destinationPubKey) { + return + } fetchLNURL(destinationLNURL) // eslint-disable-next-line react-hooks/exhaustive-deps - }, [destinationLNURL]) + }, [destinationLNURL, destinationPubKey]) return ( { destinationPubKey, destination: DESTINATION_LNURL, destinationLNURL, + setAccountPubKey, setZapEmitterPubKey, setCallbackUrl, setDestinationLNURL, diff --git a/src/context/Nostr.tsx b/src/context/Nostr.tsx index f3107fc..6a9e4e9 100644 --- a/src/context/Nostr.tsx +++ b/src/context/Nostr.tsx @@ -18,7 +18,6 @@ import { getEventHash, getPublicKey, getSignature, - nip44, relayInit } from 'nostr-tools' import { useLocalStorage } from 'react-use-storage' @@ -34,6 +33,7 @@ export interface INostrContext { ndk: NDK generateZapEvent?: (amountMillisats: number, postEventId?: string) => NDKEvent subscribeZap?: (eventId: string) => NDKSubscription + subscribeInternalTransaction?: (eventId: string) => NDKSubscription getEvent?: (eventId: string) => Promise publish?: (_event: Event) => Promise> } @@ -62,6 +62,7 @@ interface INostrProviderProps { import NDK, { NDKEvent, + NDKKind, type NDKRelay, type NDKSubscription } from '@nostr-dev-kit/ndk' @@ -124,6 +125,27 @@ export const NostrProvider = ({ children }: INostrProviderProps) => { return sub } + const subscribeInternalTransaction = (eventId: string): NDKSubscription => { + console.info(`Listening for zap (${eventId})...`) + console.info(`Recipient pubkey: ${zapEmitterPubKey}`) + const sub = ndk.subscribe( + [ + { + kinds: [1112 as NDKKind], + authors: [zapEmitterPubKey!], + '#e': [eventId], + '#t': ['intenal-transaction-ok', 'intenal-transaction-error'], + since: 1693157776 + } + ], + { + closeOnEose: false, + groupableDelay: 0 + } + ) + return sub + } + const getEvent = async (eventId: string): Promise => { return ndk.fetchEvent({ ids: [eventId] @@ -165,6 +187,7 @@ export const NostrProvider = ({ children }: INostrProviderProps) => { ndk, generateZapEvent, subscribeZap, + subscribeInternalTransaction, getEvent, publish }} diff --git a/src/context/Order.tsx b/src/context/Order.tsx index 39634b9..5c0ea0f 100644 --- a/src/context/Order.tsx +++ b/src/context/Order.tsx @@ -100,7 +100,7 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { requestInvoice, setDestinationLNURL } = useLN() - const { subscribeZap, publish } = useNostr() + const { subscribeZap, subscribeInternalTransaction, publish } = useNostr() // Local states const [orderId, setOrderId] = useState() @@ -267,6 +267,11 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { [handlePaymentReceived, zapEmitterPubKey] ) + const onInternalTransaction = useCallback((event: NDKEvent) => { + console.info('event') + console.dir(event) + }, []) + const clear = useCallback(() => { setOrderId(undefined) setOrderEvent(undefined) @@ -305,13 +310,17 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { console.info(`Subscribing for ${orderId}...`) - const sub = subscribeZap!(orderId) + const subZap = subscribeZap!(orderId) + const subInternal = subscribeInternalTransaction!(orderId) - sub.addListener('event', onZap) + subZap.addListener('event', onZap) + subInternal.addListener('event', onInternalTransaction) return () => { - sub.removeAllListeners() - sub.stop() + subZap.removeAllListeners() + subInternal.removeAllListeners() + subZap.stop() + subInternal.stop() } // eslint-disable-next-line react-hooks/exhaustive-deps }, [orderId, zapEmitterPubKey, zapEmitterPubKey]) From 0228afe277ab42fd0c7e57f173bbd6b8989f55d8 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Sun, 5 Nov 2023 23:00:43 -0300 Subject: [PATCH 137/159] fixed pages --- src/app/payment/[orderId]/page.tsx | 75 ++++++++++++++++++++++-------- src/app/tree/page.tsx | 9 ++-- 2 files changed, 60 insertions(+), 24 deletions(-) diff --git a/src/app/payment/[orderId]/page.tsx b/src/app/payment/[orderId]/page.tsx index b2b4ee8..82bdfe6 100644 --- a/src/app/payment/[orderId]/page.tsx +++ b/src/app/payment/[orderId]/page.tsx @@ -9,7 +9,7 @@ import axios from 'axios' // Types import { LNURLResponse, LNURLWStatus } from '@/types/lnurl' -import { ScanCardStatus } from '@/types/card' +import { ScanAction, ScanCardStatus } from '@/types/card' // Contexts and Hooks import { useOrder } from '@/context/Order' @@ -74,25 +74,62 @@ export default function Page() { router.push(back) }, [router, query]) - const startRead = async () => { - const lnurlResponse = await scan() - processLNURLResponse(lnurlResponse) - } - - const processLNURLResponse = async (response: LNURLResponse) => { - setCardStatus(LNURLWStatus.CALLBACK) - const url = response.callback - const _response = await axios.get(url, { - params: { k1: response.k1, pr: invoice } - }) - if (_response.status !== 200) { - setCardStatus(LNURLWStatus.ERROR) - alert('Hubo un error ge') - alert(JSON.stringify(_response.data)) - return + const processRegularPayment = useCallback( + async (response: LNURLResponse) => { + setCardStatus(LNURLWStatus.CALLBACK) + const url = response.callback + const _response = await axios.get(url, { + params: { k1: response.k1, pr: invoice } + }) + if (_response.status !== 200) { + setCardStatus(LNURLWStatus.ERROR) + alert('Hubo un error al intentar cobrar') + alert(JSON.stringify(_response.data)) + return + } + setCardStatus(LNURLWStatus.DONE) + }, + [invoice] + ) + + const processExtendedPayment = useCallback( + async (response: LNURLResponse) => { + alert(JSON.stringify(response)) + + setCardStatus(LNURLWStatus.CALLBACK) + const url = response.callback + + try { + await axios.post(url, { + params: { + k1: response.k1, + tokens: { + btc: amount + } + } + }) + alert('Vamooooosssss') + + setCardStatus(LNURLWStatus.DONE) + } catch (e) { + setCardStatus(LNURLWStatus.ERROR) + alert(JSON.stringify(e)) + alert('Hubo un error al intentar cobrar por extended') + } + }, + [amount] + ) + + const startRead = useCallback(async () => { + const lnurlResponse = await scan(ScanAction.EXTENDED_SCAN) + + if (lnurlResponse.tag === 'laWallet:withdrawRequest') { + processExtendedPayment(lnurlResponse) + alert('Implementing extended') + } else { + processRegularPayment(lnurlResponse) } - setCardStatus(LNURLWStatus.DONE) - } + }, [processExtendedPayment, processRegularPayment, scan]) /** useEffects */ // Search for orderIdFromURL diff --git a/src/app/tree/page.tsx b/src/app/tree/page.tsx index b746cfd..0f100c6 100644 --- a/src/app/tree/page.tsx +++ b/src/app/tree/page.tsx @@ -22,15 +22,13 @@ import { LaWalletContext } from '@/context/LaWalletContext' import { useCard } from '@/hooks/useCard' import { ScanAction } from '@/types/card' -const IDENTITY_PROVIDER_URL = process.env.NEXT_PUBLIC_IDENTITY_PROVIDER_URL! - export default function Page() { // Hooks const router = useRouter() + const query = useSearchParams() const { generateOrderEvent, setAmount, setOrderEvent, clear } = useOrder() const { publish } = useNostr() - const query = useSearchParams() - const { setDestinationLNURL } = useLN() + const { setDestinationLNURL, setAccountPubKey } = useLN() const { userConfig } = useContext(LaWalletContext) const numpadData = useNumpad(userConfig.props.currency) @@ -79,7 +77,8 @@ export default function Page() { return } - processUrl(`${IDENTITY_PROVIDER_URL}/api/lud06/${scanned.accountPubKey}`) + setAccountPubKey(scanned.accountPubKey!) + setCardScanned(true) alert(JSON.stringify(scanned)) // setCardScanned(true); } catch (e) { From 9f54180f0fe563d7c9253de9272635dd08065017 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Mon, 6 Nov 2023 20:31:36 -0300 Subject: [PATCH 138/159] fix isValidUrl --- src/lib/utils.ts | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 94542de..0409b12 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -79,14 +79,9 @@ export const aggregateProducts = ( } export function isValidUrl(urlString: string): boolean { - const pattern = new RegExp( - '^(https?:\\/\\/)?' + // protocol - '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // domain name and extension - '((\\d{1,3}\\.){3}\\d{1,3}))' + // OR ip (v4) address - '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // port and path - '(\\?[;&a-z\\d%_.~+=-]*)?' + // query string - '(\\#[-a-z\\d_]*)?$', - 'i' - ) // fragment locator - return !!pattern.test(urlString) + const expression = + /[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)?/gi + const regex = new RegExp(expression) + + return !!urlString.match(regex) } From e942c77103d08284b16122220ab7fa5bc1789e2b Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Mon, 6 Nov 2023 20:31:45 -0300 Subject: [PATCH 139/159] fix NEXT_PUBLIC_FEDERATION_ID env --- .env.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.example b/.env.example index 4b5d6b5..a66a50d 100644 --- a/.env.example +++ b/.env.example @@ -2,4 +2,4 @@ NEXT_PUBLIC_DESTINATION=pozo@lacrypta.ar NEXT_PUBLIC_NOSTR_RELAY=wss://relay.damus.io/ NEXT_PUBLIC_IDENTITY_PROVIDER_URL=https://lawallet.ar -FEDERATION_ID=lawallet.ar \ No newline at end of file +NEXT_PUBLIC_FEDERATION_ID=lawallet.ar \ No newline at end of file From e1c0d79fde49c56ad349137397a8b814bdaa241d Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Tue, 7 Nov 2023 11:40:16 -0300 Subject: [PATCH 140/159] refactored types --- src/types/card.ts | 1 + src/types/lnurl.ts | 16 ++++++++++++---- src/types/order.ts | 3 ++- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/types/card.ts b/src/types/card.ts index 72a25d1..1c4cb62 100644 --- a/src/types/card.ts +++ b/src/types/card.ts @@ -7,6 +7,7 @@ export enum ScanCardStatus { } export enum ScanAction { + PAY_REQUEST = 'payRequest', IDENTITY_QUERY = 'identityQuery', EXTENDED_SCAN = 'extendedScan', DEFAULT = 'default' diff --git a/src/types/lnurl.ts b/src/types/lnurl.ts index 55c9a29..4f6a019 100644 --- a/src/types/lnurl.ts +++ b/src/types/lnurl.ts @@ -1,11 +1,19 @@ export interface LNURLResponse { tag: string callback: string - k1: string - minWithdrawable: number - maxWithdrawable: number - defaultDescription: string + k1?: string + metadata?: string + commentAllowed?: number + minWithdrawable?: number + maxWithdrawable?: number + minSendable?: number + maxSendable?: number + payerData?: { [_key: string]: { mandatory: boolean } } + defaultDescription?: string + nostrPubkey?: string + allowsNostr?: boolean accountPubKey?: string + federationId?: string } export enum LNURLWStatus { diff --git a/src/types/order.ts b/src/types/order.ts index ff6ac35..2850808 100644 --- a/src/types/order.ts +++ b/src/types/order.ts @@ -1,5 +1,6 @@ import { Event } from 'nostr-tools' import { ProductQtyData } from './product' +import { LNURLResponse } from './lnurl' export interface IOrderEventContent { amount: number @@ -17,7 +18,7 @@ export interface IPayment { items: ProductQtyData[] amount: number event: Event - destinationLNURL: string + lud06: LNURLResponse isPaid: boolean isPrinted: boolean } From 091e15e76e4f678f58ff1f7ab1bd70b5b0cdaa2e Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Tue, 7 Nov 2023 11:40:29 -0300 Subject: [PATCH 141/159] moved fetchLNURL to utils --- src/lib/utils.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 0409b12..eb6e3b3 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -6,6 +6,8 @@ import type { IOrderEventContent } from '@/types/order' import { TransferTypes } from '@/types/transaction' import type { Event } from 'nostr-tools' import { ProductData, ProductQtyData } from '@/types/product' +import { requestPayServiceParams } from 'lnurl-pay' +import { LNURLResponse } from '@/types/lnurl' export const parseOrderDescription = (event: Event): IOrderEventContent => { return JSON.parse( @@ -85,3 +87,14 @@ export function isValidUrl(urlString: string): boolean { return !!urlString.match(regex) } + +export async function fetchLNURL(lnurl: string): Promise { + console.info('fetchLNURL') + console.info(lnurl) + console.info('requestPayServiceParams') + return ( + await requestPayServiceParams({ + lnUrlOrAddress: lnurl + }) + ).rawData as unknown as LNURLResponse +} From 5e504f7b98d048d08fe7da4d4585f6060808cfe8 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Tue, 7 Nov 2023 11:40:43 -0300 Subject: [PATCH 142/159] refactored context for tapping --- src/context/LN.tsx | 100 +++++++++++++++++------------------------- src/context/Nostr.tsx | 6 +-- src/context/Order.tsx | 30 +++++-------- 3 files changed, 53 insertions(+), 83 deletions(-) diff --git a/src/context/LN.tsx b/src/context/LN.tsx index db7a08f..6282a62 100644 --- a/src/context/LN.tsx +++ b/src/context/LN.tsx @@ -16,42 +16,33 @@ import type { InvoiceRequest } from '@/types/lightning' // Utils import axios from 'axios' -import { requestPayServiceParams } from 'lnurl-pay' -import { isValidUrl } from '@/lib/utils' +import { LNURLResponse } from '@/types/lnurl' // Interface export interface ILNContext { zapEmitterPubKey?: string callbackUrl?: string - destination?: string destinationPubKey?: string - destinationLNURL?: string + isReady?: boolean + lud06?: LNURLResponse + setLUD06: Dispatch> + clear: () => void setAccountPubKey: (_pubKey: string) => void - setZapEmitterPubKey: (_pubKey: string) => void - setCallbackUrl: (_url: string) => void - setDestinationLNURL: Dispatch> requestInvoice: (_req: InvoiceRequest) => Promise } -const DESTINATION_LNURL = process.env.NEXT_PUBLIC_DESTINATION! - // Context export const LNContext = createContext({ requestInvoice: function (_req: InvoiceRequest): Promise { throw new Error('Function not implemented.') }, - setZapEmitterPubKey: function (_pubKey: string): void { - throw new Error('Function not implemented.') - }, - setCallbackUrl: function (_url: string): void { + setAccountPubKey: function (_pubKey: string): void { throw new Error('Function not implemented.') }, - setDestinationLNURL: function ( - value: SetStateAction - ): void { + clear: function (): void { throw new Error('Function not implemented.') }, - setAccountPubKey: function (_pubKey: string): void { + setLUD06: function (value: SetStateAction): void { throw new Error('Function not implemented.') } }) @@ -68,65 +59,55 @@ export const LNProvider = ({ children }: ILNProviderProps) => { const [zapEmitterPubKey, setZapEmitterPubKey] = useState() const [callbackUrl, setCallbackUrl] = useState() const [destinationPubKey, setDestinationPubKey] = useState() - const [destinationLNURL, setDestinationLNURL] = useState() + const [isReady, setIsReady] = useState(false) + const [lud06, setLUD06] = useState() /** Functions */ - const fetchLNURL = useCallback(async (lnurl: string) => { - let lud06 - console.info(`Fetching LNURL: ${lnurl}`) - if (isValidUrl(lnurl)) { - console.info('Going for regular https') - const response = await axios.get(lnurl) - lud06 = { - ...response.data, - rawData: response.data - } - } else { - console.info('Going for LNURL') - lud06 = await requestPayServiceParams({ - lnUrlOrAddress: lnurl - }) - } - - console.info('LUD06 response:') - console.dir(lud06) - // TODO: Check if lud06 is valid - setZapEmitterPubKey(lud06.rawData.nostrPubkey as string) - setDestinationPubKey(lud06.rawData.accountPubKey as string) - setCallbackUrl(lud06.callback) - }, []) - - const setAccountPubKey = (pubkey: string) => { + const setAccountPubKey = useCallback((pubkey: string) => { setDestinationPubKey(pubkey) setCallbackUrl(pubkey) - setDestinationLNURL(`${IDENTITY_PROVIDER_URL}/api/lud06/${pubkey}`) - } + setIsReady(true) + }, []) const requestInvoice = useCallback( async ({ amountMillisats, zapEvent }: InvoiceRequest): Promise => { const encodedZapEvent = encodeURI(JSON.stringify(zapEvent)) - const url = `${callbackUrl}?amount=${amountMillisats}&nostr=${encodedZapEvent}&lnurl=${DESTINATION_LNURL}` + const url = `${callbackUrl}?amount=${amountMillisats}&nostr=${encodedZapEvent}&lnurl=${destinationPubKey}` console.info('url') console.dir(url) const response = await axios.get(url) return response.data.pr as string }, - [callbackUrl] + [callbackUrl, destinationPubKey] ) + const clear = useCallback((): void => { + console.info('CLEAR LN') + setLUD06(undefined) + setZapEmitterPubKey(undefined) + setCallbackUrl(undefined) + setDestinationPubKey(undefined) + setIsReady(false) + }, []) + + // on lud06 change useEffect(() => { - if (!destinationLNURL) { - setZapEmitterPubKey(undefined) - setCallbackUrl(undefined) + if (!lud06) { return } - if (destinationPubKey) { + + if (!lud06.allowsNostr || !lud06.nostrPubkey) { + console.warn('LNURL does not allow nostr') + alert('LNURL does not allow nostr') return } - fetchLNURL(destinationLNURL) - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [destinationLNURL, destinationPubKey]) + + setZapEmitterPubKey(lud06.nostrPubkey) + setCallbackUrl(lud06.callback) + setDestinationPubKey(lud06.accountPubKey) + setIsReady(true) + }, [lud06]) return ( { zapEmitterPubKey, callbackUrl, destinationPubKey, - destination: DESTINATION_LNURL, - destinationLNURL, + isReady, + lud06, + setLUD06, + clear, setAccountPubKey, - setZapEmitterPubKey, - setCallbackUrl, - setDestinationLNURL, requestInvoice }} > diff --git a/src/context/Nostr.tsx b/src/context/Nostr.tsx index 6a9e4e9..51152e6 100644 --- a/src/context/Nostr.tsx +++ b/src/context/Nostr.tsx @@ -68,7 +68,7 @@ import NDK, { } from '@nostr-dev-kit/ndk' export const NostrProvider = ({ children }: INostrProviderProps) => { - const { zapEmitterPubKey, destination } = useLN() + const { zapEmitterPubKey } = useLN() // const [privateKey, setPrivateKey] = useState() const [privateKey] = useLocalStorage('nostrPrivateKey', generatePrivateKey()) const [publicKey, setPublicKey] = useState() @@ -84,7 +84,7 @@ export const NostrProvider = ({ children }: INostrProviderProps) => { tags: [ ['relays', ...relays], ['amount', amountMillisats.toString()], - ['lnurl', destination], + ['lnurl', 'lnurl'], ['p', zapEmitterPubKey] ] as string[][] } @@ -102,7 +102,7 @@ export const NostrProvider = ({ children }: INostrProviderProps) => { return event }, - [destination, zapEmitterPubKey, privateKey, publicKey] + [zapEmitterPubKey, privateKey, publicKey] ) const subscribeZap = (eventId: string): NDKSubscription => { diff --git a/src/context/Order.tsx b/src/context/Order.tsx index 5c0ea0f..bf14451 100644 --- a/src/context/Order.tsx +++ b/src/context/Order.tsx @@ -94,12 +94,7 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { // Hooks const { relays, localPublicKey, localPrivateKey, generateZapEvent } = useNostr() - const { - destinationLNURL, - zapEmitterPubKey, - requestInvoice, - setDestinationLNURL - } = useLN() + const { lud06, zapEmitterPubKey, requestInvoice, setLUD06 } = useLN() const { subscribeZap, subscribeInternalTransaction, publish } = useNostr() // Local states @@ -119,8 +114,6 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { ) const generateOrderEvent = useCallback((): Event => { - const vote = (memo as any).vote as number - const unsignedEvent: UnsignedEvent = { kind: 1, content: '', @@ -134,8 +127,7 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { 'description', JSON.stringify({ memo, - amount, - vote + amount }) ], ['products', JSON.stringify(products)] @@ -148,16 +140,13 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { ...unsignedEvent } - console.info('event:') - console.dir(event) - // Saving current payments status const payment: IPayment = { amount, event: event!, id: event!.id, isPaid, - destinationLNURL: destinationLNURL!, + lud06: lud06!, isPrinted: isPrinted, items: products } @@ -167,14 +156,14 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { return event }, [ - memo, localPublicKey, relays, + memo, amount, products, localPrivateKey, isPaid, - destinationLNURL, + lud06, isPrinted, paymentsCache, setPaymentsCache @@ -193,12 +182,13 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { setIsPrinted(order.isPrinted) setProducts(order.items) setOrderEvent(order.event) - - setDestinationLNURL(order.destinationLNURL) + setLUD06(order.lud06) setOrderId(order.id) + + console.dir(order) return true }, - [paymentsCache, setDestinationLNURL] + [paymentsCache, setLUD06] ) // Checkout function @@ -323,7 +313,7 @@ export const OrderProvider = ({ children }: IOrderProviderProps) => { subInternal.stop() } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [orderId, zapEmitterPubKey, zapEmitterPubKey]) + }, [orderId, zapEmitterPubKey, zapEmitterPubKey, isPaid]) // On orderId change useEffect(() => { From a843b7da607846b5ca063ddda3ab0f2a75b40d14 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Tue, 7 Nov 2023 11:41:04 -0300 Subject: [PATCH 143/159] replaced identityQuery with payment --- src/hooks/useCard.ts | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/hooks/useCard.ts b/src/hooks/useCard.ts index 695e6fa..f9d6e3f 100644 --- a/src/hooks/useCard.ts +++ b/src/hooks/useCard.ts @@ -20,7 +20,7 @@ export type CardReturns = { stop: () => void } -const FEDERATION_ID = process.env.FEDERATION_ID! +const FEDERATION_ID = process.env.NEXT_PUBLIC_FEDERATION_ID! const requestLNURL = async (url: string, type: ScanAction) => { const headers = { @@ -29,15 +29,6 @@ const requestLNURL = async (url: string, type: ScanAction) => { 'X-LaWallet-Param': `federationId=${FEDERATION_ID}, tokens=BTC` } - if (type === ScanAction.IDENTITY_QUERY) { - alert('Returning Mock') - return { - tag: 'laWallet:identityQuery', - accountPubKey: - '685e19eeb895be1331aaa3d1a2c946fbb36cbf83ec763cdaa1561f799d07c21d' - } - } - alert('headers: ' + JSON.stringify(headers)) const response = await axios.get(url, { headers: headers From 2dedaa1a7543c3d13b74515ecee1100e9bf1964a Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Tue, 7 Nov 2023 11:41:22 -0300 Subject: [PATCH 144/159] finished tapping feature --- src/app/tree/page.tsx | 64 +++++++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 24 deletions(-) diff --git a/src/app/tree/page.tsx b/src/app/tree/page.tsx index 0f100c6..0a2d3ac 100644 --- a/src/app/tree/page.tsx +++ b/src/app/tree/page.tsx @@ -21,18 +21,26 @@ import { useOrder } from '@/context/Order' import { LaWalletContext } from '@/context/LaWalletContext' import { useCard } from '@/hooks/useCard' import { ScanAction } from '@/types/card' +import { fetchLNURL } from '@/lib/utils' +import { BtnLoader } from '@/components/Loader/Loader' export default function Page() { // Hooks const router = useRouter() const query = useSearchParams() - const { generateOrderEvent, setAmount, setOrderEvent, clear } = useOrder() + const { + generateOrderEvent, + setAmount, + setOrderEvent, + clear: clearOrder + } = useOrder() const { publish } = useNostr() - const { setDestinationLNURL, setAccountPubKey } = useLN() + const { isReady, setLUD06, clear: clearLN } = useLN() const { userConfig } = useContext(LaWalletContext) const numpadData = useNumpad(userConfig.props.currency) - const { isAvailable, scan, stop } = useCard() + const [isTapping, setIsTapping] = useState(false) + const [isLoading, setIsLoading] = useState(false) const sats = numpadData.intAmount['SAT'] @@ -43,17 +51,19 @@ export default function Page() { const processUrl = useCallback( async (url: string) => { try { - await setDestinationLNURL(url) + const lud06 = await fetchLNURL(url) + setLUD06(lud06) setCardScanned(true) } catch (e) { console.error(e) alert('what the hell?' + JSON.stringify(e)) } }, - [setDestinationLNURL] + [setLUD06] ) const handleClick = async () => { + setIsLoading(true) // POC const order = generateOrderEvent!() @@ -69,22 +79,24 @@ export default function Page() { router.push(`/payment/${order.id}?back=/tree`) } - const startScanning = async () => { + const startTapping = async () => { + setIsTapping(true) try { - const scanned = await scan(ScanAction.IDENTITY_QUERY) - if (scanned.tag !== 'laWallet:identityQuery') { + const scanned = await scan(ScanAction.PAY_REQUEST) + alert(JSON.stringify(scanned)) + if (scanned.tag !== 'laWallet:payRequest') { alert('Compatible solo con tarjetas de LaWallet') + setIsTapping(false) return } - - setAccountPubKey(scanned.accountPubKey!) - setCardScanned(true) + setLUD06(scanned) alert(JSON.stringify(scanned)) - // setCardScanned(true); + setCardScanned(true) } catch (e) { console.error(e) alert('what the hell?' + JSON.stringify(e)) } + setIsTapping(false) } /** useEffects */ @@ -98,23 +110,22 @@ export default function Page() { // eslint-disable-next-line react-hooks/exhaustive-deps }, [sats]) + // Gets useEffect(() => { const url = query.get('data') - if (!url) { + clearOrder() + clearLN() return } - - console.info('processUrl?') processUrl(url) // eslint-disable-next-line react-hooks/exhaustive-deps }, [query]) - // on mount + // NFC available useEffect(() => { - clear() if (isAvailable) { - startScanning() + startTapping() return () => { stop() } @@ -145,10 +156,15 @@ export default function Page() { ) : ( - Escaneando receptor... - - Acerca la tarjeta de quien desea cargar su tarjeta mediante NFC. - + {isTapping && ( + <> + Escaneando receptor... + + Acerca la tarjeta de quien desea cargar su tarjeta mediante + NFC. + + + )} From 33bdcdb7d7640fff2892a6dca86b4da680b65ff5 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Tue, 7 Nov 2023 11:41:37 -0300 Subject: [PATCH 145/159] applied fetchUrl refactor on pages --- src/app/cart/page.tsx | 6 +++--- src/app/paydesk/page.tsx | 9 ++++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/app/cart/page.tsx b/src/app/cart/page.tsx index 1b35dba..2b8b8c2 100644 --- a/src/app/cart/page.tsx +++ b/src/app/cart/page.tsx @@ -34,14 +34,14 @@ import products from '@/constants/products.json' // Style import theme from '@/styles/theme' -import { aggregateProducts } from '@/lib/utils' +import { aggregateProducts, fetchLNURL } from '@/lib/utils' // Constants const DESTINATION_LNURL = process.env.NEXT_PUBLIC_DESTINATION! export default function Page() { // Hooks - const { setDestinationLNURL } = useLN() + const { setLUD06 } = useLN() const { generateOrderEvent, setAmount, @@ -145,8 +145,8 @@ export default function Page() { } useEffect(() => { - void setDestinationLNURL(DESTINATION_LNURL) clearOrder() + fetchLNURL(DESTINATION_LNURL).then(setLUD06) // eslint-disable-next-line react-hooks/exhaustive-deps }, []) diff --git a/src/app/paydesk/page.tsx b/src/app/paydesk/page.tsx index 0b287ba..64ffca2 100644 --- a/src/app/paydesk/page.tsx +++ b/src/app/paydesk/page.tsx @@ -20,6 +20,7 @@ import Container from '@/components/Layout/Container' import Navbar from '@/components/Layout/Navbar' import TokenList from '@/components/TokenList' import { BtnLoader } from '@/components/Loader/Loader' +import { fetchLNURL } from '@/lib/utils' // Constants const DESTINATION_LNURL = process.env.NEXT_PUBLIC_DESTINATION! @@ -29,7 +30,7 @@ export default function Page() { const router = useRouter() const { generateOrderEvent, setAmount, setOrderEvent, clear } = useOrder() const { publish } = useNostr() - const { setDestinationLNURL } = useLN() + const { setLUD06 } = useLN() const { userConfig } = useContext(LaWalletContext) const numpadData = useNumpad(userConfig.props.currency) @@ -65,8 +66,10 @@ export default function Page() { }, [sats]) useEffect(() => { - void setDestinationLNURL(DESTINATION_LNURL) - }, [setDestinationLNURL]) + console.info('HACIENDO ESTO : ' + DESTINATION_LNURL) + fetchLNURL(DESTINATION_LNURL).then(setLUD06) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []) // on mount useEffect(() => { From 989daab0b0bfb3683d3f97729498e1c2a9b68994 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Tue, 7 Nov 2023 11:41:49 -0300 Subject: [PATCH 146/159] fix print --- src/app/payment/[orderId]/page.tsx | 31 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/src/app/payment/[orderId]/page.tsx b/src/app/payment/[orderId]/page.tsx index 82bdfe6..e9571d0 100644 --- a/src/app/payment/[orderId]/page.tsx +++ b/src/app/payment/[orderId]/page.tsx @@ -14,9 +14,10 @@ import { ScanAction, ScanCardStatus } from '@/types/card' // Contexts and Hooks import { useOrder } from '@/context/Order' import { useLN } from '@/context/LN' -import { LaWalletContext } from '@/context/LaWalletContext' import { useCard } from '@/hooks/useCard' +import { usePrint } from '@/hooks/usePrint' import useCurrencyConverter from '@/hooks/useCurrencyConverter' +import { LaWalletContext } from '@/context/LaWalletContext' // Utils import { formatToPreference } from '@/lib/formatter' @@ -37,7 +38,6 @@ import Container from '@/components/Layout/Container' import { Loader } from '@/components/Loader/Loader' import { CheckIcon } from '@bitcoin-design/bitcoin-icons-react/filled' import theme from '@/styles/theme' -import { usePrint } from '@/hooks/usePrint' export default function Page() { // Hooks @@ -46,13 +46,15 @@ export default function Page() { const query = useSearchParams() const { convertCurrency } = useCurrencyConverter() - const { zapEmitterPubKey } = useLN() + const { zapEmitterPubKey, lud06 } = useLN() const { orderId, amount, products, isPaid, + isPrinted, currentInvoice: invoice, + setIsPrinted, loadOrder } = useOrder() const { isAvailable, permission, status: scanStatus, scan, stop } = useCard() @@ -62,7 +64,6 @@ export default function Page() { // Local states const [cardStatus, setCardStatus] = useState(LNURLWStatus.IDLE) - const [finished, setFinished] = useState(false) /** Functions */ const handleBack = useCallback(() => { @@ -151,9 +152,9 @@ export default function Page() { handleBack() } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [orderIdFromUrl, orderId]) + }, [orderIdFromUrl, orderId, loadOrder]) - // On Invoice ready + // on Invoice ready useEffect(() => { if (!invoice || !zapEmitterPubKey || !isAvailable) { return @@ -163,9 +164,9 @@ export default function Page() { // eslint-disable-next-line react-hooks/exhaustive-deps }, [invoice, zapEmitterPubKey]) - // New zap events + // new zap events useEffect(() => { - if (!isPaid || finished) { + if (!isPaid || isPrinted) { return } @@ -183,10 +184,11 @@ export default function Page() { console.dir('printOrder:') console.dir(printOrder) print(printOrder) - setFinished(true) + setIsPrinted!(true) // eslint-disable-next-line react-hooks/exhaustive-deps - }, [isPaid, finished, amount, print, products]) + }, [isPaid, amount, products, print]) + // on card scanStatus change useEffect(() => { switch (scanStatus) { case ScanCardStatus.SCANNING: @@ -201,7 +203,7 @@ export default function Page() { } }, [scanStatus]) - // On Mount + // on Mount useEffect(() => { return () => { stop() @@ -245,7 +247,7 @@ export default function Page() { isOpen={cardStatus === LNURLWStatus.ERROR} /> - {finished ? ( + {isPaid ? ( <> @@ -275,11 +277,6 @@ export default function Page() {
- {/* - - */} + From a497f2cad25cc2bd17fdef70a22fc233e36e4f93 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Tue, 7 Nov 2023 14:07:37 -0300 Subject: [PATCH 150/159] removed NEXT_PUBLIC_IDENTITY_PROVIDER_URL from env --- .env.example | 2 -- src/context/LN.tsx | 2 -- 2 files changed, 4 deletions(-) diff --git a/.env.example b/.env.example index a66a50d..02d2070 100644 --- a/.env.example +++ b/.env.example @@ -1,5 +1,3 @@ NEXT_PUBLIC_DESTINATION=pozo@lacrypta.ar NEXT_PUBLIC_NOSTR_RELAY=wss://relay.damus.io/ -NEXT_PUBLIC_IDENTITY_PROVIDER_URL=https://lawallet.ar - NEXT_PUBLIC_FEDERATION_ID=lawallet.ar \ No newline at end of file diff --git a/src/context/LN.tsx b/src/context/LN.tsx index 6282a62..902da08 100644 --- a/src/context/LN.tsx +++ b/src/context/LN.tsx @@ -52,8 +52,6 @@ interface ILNProviderProps { children: React.ReactNode } -const IDENTITY_PROVIDER_URL = process.env.NEXT_PUBLIC_IDENTITY_PROVIDER_URL! - export const LNProvider = ({ children }: ILNProviderProps) => { // Local state const [zapEmitterPubKey, setZapEmitterPubKey] = useState() From f915b1133d43546bb5f71ddabb78d10236aa0fa6 Mon Sep 17 00:00:00 2001 From: Jona Date: Tue, 7 Nov 2023 16:09:55 -0300 Subject: [PATCH 151/159] fix(constant): removed some products --- src/constants/products.json | 24 ++---------------------- 1 file changed, 2 insertions(+), 22 deletions(-) diff --git a/src/constants/products.json b/src/constants/products.json index 4ba3cf0..1abe146 100644 --- a/src/constants/products.json +++ b/src/constants/products.json @@ -42,7 +42,7 @@ { "id": 5, "category_id": 2, - "name": "Hongos", + "name": "Papa fritas", "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", "price": { "value": 2400, @@ -52,7 +52,7 @@ { "id": 6, "category_id": 2, - "name": "Porro", + "name": "Pancho", "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", "price": { "value": 2400, @@ -69,16 +69,6 @@ "currency": "ARS" } }, - { - "id": 8, - "category_id": 1, - "name": "Esperma de pitufo", - "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", - "price": { - "value": 1500, - "currency": "ARS" - } - }, { "id": 9, "category_id": 1, @@ -118,15 +108,5 @@ "value": 1500, "currency": "ARS" } - }, - { - "id": 13, - "category_id": 3, - "name": "Preservativos", - "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", - "price": { - "value": 1500, - "currency": "ARS" - } } ] \ No newline at end of file From 8e7b3be9ae69a83c4607cc84bd09c7dc204d48ec Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Thu, 9 Nov 2023 15:48:07 -0300 Subject: [PATCH 152/159] added menu jsons --- src/constants/menus/coffee.json | 112 ++++++++++++++++++++++++++++++++ src/constants/menus/green.json | 112 ++++++++++++++++++++++++++++++++ src/constants/menus/pizza.json | 112 ++++++++++++++++++++++++++++++++ src/constants/menus/urban.json | 112 ++++++++++++++++++++++++++++++++ 4 files changed, 448 insertions(+) create mode 100644 src/constants/menus/coffee.json create mode 100644 src/constants/menus/green.json create mode 100644 src/constants/menus/pizza.json create mode 100644 src/constants/menus/urban.json diff --git a/src/constants/menus/coffee.json b/src/constants/menus/coffee.json new file mode 100644 index 0000000..72ca71e --- /dev/null +++ b/src/constants/menus/coffee.json @@ -0,0 +1,112 @@ +[ + { + "id": 1, + "category_id": 1, + "name": "Fernet", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 2000, + "currency": "ARS" + } + }, + { + "id": 2, + "category_id": 1, + "name": "Gin Tonic", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + }, + { + "id": 3, + "category_id": 1, + "name": "Cerveza", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1000, + "currency": "ARS" + } + }, + { + "id": 4, + "category_id": 2, + "name": "Shawarma", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 3400, + "currency": "ARS" + } + }, + { + "id": 5, + "category_id": 2, + "name": "Papa fritas", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 2400, + "currency": "ARS" + } + }, + { + "id": 6, + "category_id": 2, + "name": "Pancho", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 2400, + "currency": "ARS" + } + }, + { + "id": 7, + "category_id": 1, + "name": "Champagne", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + }, + { + "id": 9, + "category_id": 1, + "name": "Licor de melon", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + }, + { + "id": 10, + "category_id": 3, + "name": "Remera", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + }, + { + "id": 11, + "category_id": 3, + "name": "Gorra", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + }, + { + "id": 12, + "category_id": 3, + "name": "Medias", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + } +] diff --git a/src/constants/menus/green.json b/src/constants/menus/green.json new file mode 100644 index 0000000..72ca71e --- /dev/null +++ b/src/constants/menus/green.json @@ -0,0 +1,112 @@ +[ + { + "id": 1, + "category_id": 1, + "name": "Fernet", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 2000, + "currency": "ARS" + } + }, + { + "id": 2, + "category_id": 1, + "name": "Gin Tonic", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + }, + { + "id": 3, + "category_id": 1, + "name": "Cerveza", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1000, + "currency": "ARS" + } + }, + { + "id": 4, + "category_id": 2, + "name": "Shawarma", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 3400, + "currency": "ARS" + } + }, + { + "id": 5, + "category_id": 2, + "name": "Papa fritas", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 2400, + "currency": "ARS" + } + }, + { + "id": 6, + "category_id": 2, + "name": "Pancho", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 2400, + "currency": "ARS" + } + }, + { + "id": 7, + "category_id": 1, + "name": "Champagne", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + }, + { + "id": 9, + "category_id": 1, + "name": "Licor de melon", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + }, + { + "id": 10, + "category_id": 3, + "name": "Remera", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + }, + { + "id": 11, + "category_id": 3, + "name": "Gorra", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + }, + { + "id": 12, + "category_id": 3, + "name": "Medias", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + } +] diff --git a/src/constants/menus/pizza.json b/src/constants/menus/pizza.json new file mode 100644 index 0000000..72ca71e --- /dev/null +++ b/src/constants/menus/pizza.json @@ -0,0 +1,112 @@ +[ + { + "id": 1, + "category_id": 1, + "name": "Fernet", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 2000, + "currency": "ARS" + } + }, + { + "id": 2, + "category_id": 1, + "name": "Gin Tonic", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + }, + { + "id": 3, + "category_id": 1, + "name": "Cerveza", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1000, + "currency": "ARS" + } + }, + { + "id": 4, + "category_id": 2, + "name": "Shawarma", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 3400, + "currency": "ARS" + } + }, + { + "id": 5, + "category_id": 2, + "name": "Papa fritas", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 2400, + "currency": "ARS" + } + }, + { + "id": 6, + "category_id": 2, + "name": "Pancho", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 2400, + "currency": "ARS" + } + }, + { + "id": 7, + "category_id": 1, + "name": "Champagne", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + }, + { + "id": 9, + "category_id": 1, + "name": "Licor de melon", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + }, + { + "id": 10, + "category_id": 3, + "name": "Remera", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + }, + { + "id": 11, + "category_id": 3, + "name": "Gorra", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + }, + { + "id": 12, + "category_id": 3, + "name": "Medias", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + } +] diff --git a/src/constants/menus/urban.json b/src/constants/menus/urban.json new file mode 100644 index 0000000..72ca71e --- /dev/null +++ b/src/constants/menus/urban.json @@ -0,0 +1,112 @@ +[ + { + "id": 1, + "category_id": 1, + "name": "Fernet", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 2000, + "currency": "ARS" + } + }, + { + "id": 2, + "category_id": 1, + "name": "Gin Tonic", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + }, + { + "id": 3, + "category_id": 1, + "name": "Cerveza", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1000, + "currency": "ARS" + } + }, + { + "id": 4, + "category_id": 2, + "name": "Shawarma", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 3400, + "currency": "ARS" + } + }, + { + "id": 5, + "category_id": 2, + "name": "Papa fritas", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 2400, + "currency": "ARS" + } + }, + { + "id": 6, + "category_id": 2, + "name": "Pancho", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 2400, + "currency": "ARS" + } + }, + { + "id": 7, + "category_id": 1, + "name": "Champagne", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + }, + { + "id": 9, + "category_id": 1, + "name": "Licor de melon", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + }, + { + "id": 10, + "category_id": 3, + "name": "Remera", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + }, + { + "id": 11, + "category_id": 3, + "name": "Gorra", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + }, + { + "id": 12, + "category_id": 3, + "name": "Medias", + "description": "Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minus, incidunt!", + "price": { + "value": 1500, + "currency": "ARS" + } + } +] From f409669656d4bab47627c85f3cf8a78605e363da Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Thu, 9 Nov 2023 15:48:14 -0300 Subject: [PATCH 153/159] added lud06 caches --- src/constants/lud06/coffee.json | 18 ++++++++++++++++++ src/constants/lud06/green.json | 18 ++++++++++++++++++ src/constants/lud06/pizza.json | 18 ++++++++++++++++++ src/constants/lud06/urban.json | 18 ++++++++++++++++++ 4 files changed, 72 insertions(+) create mode 100644 src/constants/lud06/coffee.json create mode 100644 src/constants/lud06/green.json create mode 100644 src/constants/lud06/pizza.json create mode 100644 src/constants/lud06/urban.json diff --git a/src/constants/lud06/coffee.json b/src/constants/lud06/coffee.json new file mode 100644 index 0000000..8f98c9d --- /dev/null +++ b/src/constants/lud06/coffee.json @@ -0,0 +1,18 @@ +{ + "status": "OK", + "tag": "payRequest", + "commentAllowed": 255, + "callback": "https://api.lawallet.ar/lnurlp/8e74cf71a9d756f514e57a0c6392b032e832a936525a6298258187d94c5c90ea/callback", + "metadata": "[[\"text/plain\", \"lawallet\"]]", + "minSendable": 1000, + "maxSendable": 10000000000, + "payerData": { + "name": { "mandatory": false }, + "email": { "mandatory": false }, + "pubkey": { "mandatory": false } + }, + "nostrPubkey": "e17feb5f2cf83546bcf7fd9c8237b05275be958bd521543c2285ffc6c2d654b3", + "allowsNostr": true, + "federationId": "lawallet.ar", + "accountPubKey": "8e74cf71a9d756f514e57a0c6392b032e832a936525a6298258187d94c5c90ea" +} diff --git a/src/constants/lud06/green.json b/src/constants/lud06/green.json new file mode 100644 index 0000000..8f98c9d --- /dev/null +++ b/src/constants/lud06/green.json @@ -0,0 +1,18 @@ +{ + "status": "OK", + "tag": "payRequest", + "commentAllowed": 255, + "callback": "https://api.lawallet.ar/lnurlp/8e74cf71a9d756f514e57a0c6392b032e832a936525a6298258187d94c5c90ea/callback", + "metadata": "[[\"text/plain\", \"lawallet\"]]", + "minSendable": 1000, + "maxSendable": 10000000000, + "payerData": { + "name": { "mandatory": false }, + "email": { "mandatory": false }, + "pubkey": { "mandatory": false } + }, + "nostrPubkey": "e17feb5f2cf83546bcf7fd9c8237b05275be958bd521543c2285ffc6c2d654b3", + "allowsNostr": true, + "federationId": "lawallet.ar", + "accountPubKey": "8e74cf71a9d756f514e57a0c6392b032e832a936525a6298258187d94c5c90ea" +} diff --git a/src/constants/lud06/pizza.json b/src/constants/lud06/pizza.json new file mode 100644 index 0000000..8f98c9d --- /dev/null +++ b/src/constants/lud06/pizza.json @@ -0,0 +1,18 @@ +{ + "status": "OK", + "tag": "payRequest", + "commentAllowed": 255, + "callback": "https://api.lawallet.ar/lnurlp/8e74cf71a9d756f514e57a0c6392b032e832a936525a6298258187d94c5c90ea/callback", + "metadata": "[[\"text/plain\", \"lawallet\"]]", + "minSendable": 1000, + "maxSendable": 10000000000, + "payerData": { + "name": { "mandatory": false }, + "email": { "mandatory": false }, + "pubkey": { "mandatory": false } + }, + "nostrPubkey": "e17feb5f2cf83546bcf7fd9c8237b05275be958bd521543c2285ffc6c2d654b3", + "allowsNostr": true, + "federationId": "lawallet.ar", + "accountPubKey": "8e74cf71a9d756f514e57a0c6392b032e832a936525a6298258187d94c5c90ea" +} diff --git a/src/constants/lud06/urban.json b/src/constants/lud06/urban.json new file mode 100644 index 0000000..8f98c9d --- /dev/null +++ b/src/constants/lud06/urban.json @@ -0,0 +1,18 @@ +{ + "status": "OK", + "tag": "payRequest", + "commentAllowed": 255, + "callback": "https://api.lawallet.ar/lnurlp/8e74cf71a9d756f514e57a0c6392b032e832a936525a6298258187d94c5c90ea/callback", + "metadata": "[[\"text/plain\", \"lawallet\"]]", + "minSendable": 1000, + "maxSendable": 10000000000, + "payerData": { + "name": { "mandatory": false }, + "email": { "mandatory": false }, + "pubkey": { "mandatory": false } + }, + "nostrPubkey": "e17feb5f2cf83546bcf7fd9c8237b05275be958bd521543c2285ffc6c2d654b3", + "allowsNostr": true, + "federationId": "lawallet.ar", + "accountPubKey": "8e74cf71a9d756f514e57a0c6392b032e832a936525a6298258187d94c5c90ea" +} From 2ebead769049e2e03f94b914001b6e8b230cade0 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Thu, 9 Nov 2023 15:48:27 -0300 Subject: [PATCH 154/159] updated cart for multiple pages --- src/app/cart/page.tsx | 54 +++++++++++++++++++++++++++++++++---------- 1 file changed, 42 insertions(+), 12 deletions(-) diff --git a/src/app/cart/page.tsx b/src/app/cart/page.tsx index 9f1bac4..db3b324 100644 --- a/src/app/cart/page.tsx +++ b/src/app/cart/page.tsx @@ -30,16 +30,25 @@ import Navbar from '@/components/Layout/Navbar' // MOCK import categories from '@/constants/categories.json' -import products from '@/constants/products.json' // Style import theme from '@/styles/theme' import { aggregateProducts, fetchLNURL } from '@/lib/utils' +import { LNURLResponse } from '@/types/lnurl' + +interface PageProps { + name: string + title: string + lud06: LNURLResponse +} // Constants const DESTINATION_LNURL = process.env.NEXT_PUBLIC_DESTINATION! -export default function Page() { +export default function Page({ + name: pageName = 'coffee', + title: pageTitle = 'Carrito de Café' +}: PageProps) { // Hooks const { setLUD06 } = useLN() const { @@ -54,6 +63,11 @@ export default function Page() { const router = useRouter() const { convertCurrency } = useCurrencyConverter() + const [menuProducts, setMenuProducts] = useState([]) + const [groupedProducts, setGroupedProducts] = useState<{ + [categoryId: number]: ProductData[] + }>([]) + // Sheet const [showSheet, setShowSheet] = useState(false) @@ -109,15 +123,28 @@ export default function Page() { return totalPrice }, [cart]) - const groupedProducts: { [categoryId: number]: ProductData[] } = {} + const loadMenu = useCallback(async (name: string) => { + alert(name) + + const products = (await import(`@/constants/menus/${name}.json`)) + .default as ProductData[] - products.forEach(product => { - const categoryId = product.category_id - if (!groupedProducts[categoryId]) { - groupedProducts[categoryId] = [] - } - groupedProducts[categoryId].push(product) - }) + console.info('^^^^^^^ PRODUCTS ^^^^^^^') + console.dir(products) + const _groupedProducts: { + [categoryId: number]: ProductData[] + } = {} + products.forEach(product => { + const categoryId = product.category_id + if (!_groupedProducts[categoryId]) { + _groupedProducts[categoryId] = [] + } + _groupedProducts[categoryId].push(product) + }) + + setGroupedProducts(_groupedProducts) + setMenuProducts(products) + }, []) const handleClearCart = useCallback(() => { setCart([]) @@ -147,6 +174,7 @@ export default function Page() { useEffect(() => { clearOrder() fetchLNURL(DESTINATION_LNURL).then(setLUD06) + loadMenu(pageName) // eslint-disable-next-line react-hooks/exhaustive-deps }, []) @@ -159,7 +187,7 @@ export default function Page() { return ( <> - Carrito de compras + {pageTitle} @@ -222,7 +250,9 @@ export default function Page() { const id = Number(product[0]) const quantities = Number(product[1]) - const localProduct = products.find(product => product.id === id) + const localProduct = menuProducts.find( + product => product.id === id + ) if (quantities > 0 && localProduct) { return ( From c0824a1c2a62fe6ac57c9de2256aebb0d24a41d5 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Thu, 9 Nov 2023 15:48:32 -0300 Subject: [PATCH 155/159] added new pages --- src/app/cart/coffee/page.tsx | 8 ++++++++ src/app/cart/green/page.tsx | 8 ++++++++ src/app/cart/pizza/page.tsx | 8 ++++++++ src/app/cart/urban/page.tsx | 8 ++++++++ 4 files changed, 32 insertions(+) create mode 100644 src/app/cart/coffee/page.tsx create mode 100644 src/app/cart/green/page.tsx create mode 100644 src/app/cart/pizza/page.tsx create mode 100644 src/app/cart/urban/page.tsx diff --git a/src/app/cart/coffee/page.tsx b/src/app/cart/coffee/page.tsx new file mode 100644 index 0000000..0e4e6d9 --- /dev/null +++ b/src/app/cart/coffee/page.tsx @@ -0,0 +1,8 @@ +import Page from '../page' +import lud06 from '@/constants/lud06/coffee.json' + +export const CoffeeMenu = () => { + return +} + +export default CoffeeMenu diff --git a/src/app/cart/green/page.tsx b/src/app/cart/green/page.tsx new file mode 100644 index 0000000..ef469d3 --- /dev/null +++ b/src/app/cart/green/page.tsx @@ -0,0 +1,8 @@ +import Page from '../page' +import lud06 from '@/constants/lud06/green.json' + +export const GreenMenu = () => { + return +} + +export default GreenMenu diff --git a/src/app/cart/pizza/page.tsx b/src/app/cart/pizza/page.tsx new file mode 100644 index 0000000..ecd5c7a --- /dev/null +++ b/src/app/cart/pizza/page.tsx @@ -0,0 +1,8 @@ +import Page from '../page' +import lud06 from '@/constants/lud06/pizza.json' + +export const PizzaMenu = () => { + return +} + +export default PizzaMenu diff --git a/src/app/cart/urban/page.tsx b/src/app/cart/urban/page.tsx new file mode 100644 index 0000000..1c40c80 --- /dev/null +++ b/src/app/cart/urban/page.tsx @@ -0,0 +1,8 @@ +import Page from '../page' +import lud06 from '@/constants/lud06/urban.json' + +export const UrbanMenu = () => { + return +} + +export default UrbanMenu From 9a3447ac42581aa3e91098c197f7cdd92d33e7fd Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Thu, 9 Nov 2023 15:51:22 -0300 Subject: [PATCH 156/159] removed alert --- src/app/cart/page.tsx | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/app/cart/page.tsx b/src/app/cart/page.tsx index db3b324..5ba438e 100644 --- a/src/app/cart/page.tsx +++ b/src/app/cart/page.tsx @@ -35,10 +35,11 @@ import categories from '@/constants/categories.json' import theme from '@/styles/theme' import { aggregateProducts, fetchLNURL } from '@/lib/utils' import { LNURLResponse } from '@/types/lnurl' +import { set } from 'date-fns' interface PageProps { - name: string - title: string + name?: string + title?: string lud06: LNURLResponse } @@ -47,7 +48,8 @@ const DESTINATION_LNURL = process.env.NEXT_PUBLIC_DESTINATION! export default function Page({ name: pageName = 'coffee', - title: pageTitle = 'Carrito de Café' + title: pageTitle = 'Carrito de Café', + lud06 }: PageProps) { // Hooks const { setLUD06 } = useLN() @@ -124,13 +126,8 @@ export default function Page({ }, [cart]) const loadMenu = useCallback(async (name: string) => { - alert(name) - const products = (await import(`@/constants/menus/${name}.json`)) .default as ProductData[] - - console.info('^^^^^^^ PRODUCTS ^^^^^^^') - console.dir(products) const _groupedProducts: { [categoryId: number]: ProductData[] } = {} @@ -173,10 +170,13 @@ export default function Page({ useEffect(() => { clearOrder() - fetchLNURL(DESTINATION_LNURL).then(setLUD06) loadMenu(pageName) + setLUD06(lud06) + // fetchLNURL(DESTINATION_LNURL).then(setLUD06) // eslint-disable-next-line react-hooks/exhaustive-deps - }, []) + }, [lud06]) + + useEffect(() => {}, []) useEffect(() => { setAmount(convertCurrency(getTotalPrice(), 'ARS', 'SAT')) From e661f75a37fe3bc96671d4cb616d2b3d8bfe0190 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Thu, 9 Nov 2023 16:07:25 -0300 Subject: [PATCH 157/159] fix pizza --- src/app/cart/pizza/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/cart/pizza/page.tsx b/src/app/cart/pizza/page.tsx index ecd5c7a..2b82794 100644 --- a/src/app/cart/pizza/page.tsx +++ b/src/app/cart/pizza/page.tsx @@ -2,7 +2,7 @@ import Page from '../page' import lud06 from '@/constants/lud06/pizza.json' export const PizzaMenu = () => { - return + return } export default PizzaMenu From 8eba2570442993811bde2d0ab56986927f8bf395 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Thu, 9 Nov 2023 16:07:37 -0300 Subject: [PATCH 158/159] removed lnurl destinatino --- src/app/cart/page.tsx | 44 +++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/app/cart/page.tsx b/src/app/cart/page.tsx index 5ba438e..a0d3e41 100644 --- a/src/app/cart/page.tsx +++ b/src/app/cart/page.tsx @@ -35,7 +35,6 @@ import categories from '@/constants/categories.json' import theme from '@/styles/theme' import { aggregateProducts, fetchLNURL } from '@/lib/utils' import { LNURLResponse } from '@/types/lnurl' -import { set } from 'date-fns' interface PageProps { name?: string @@ -43,9 +42,6 @@ interface PageProps { lud06: LNURLResponse } -// Constants -const DESTINATION_LNURL = process.env.NEXT_PUBLIC_DESTINATION! - export default function Page({ name: pageName = 'coffee', title: pageTitle = 'Carrito de Café', @@ -192,25 +188,29 @@ export default function Page({ - {categories.map(category => ( - - - {category.name} - - - {groupedProducts[category.id]?.map(product => ( - addToCart(product)} - quantityInCart={productQuantities[product.id] || 0} - onRemoveOne={() => removeFromCart(product)} - onAddOne={() => addToCart(product)} - /> - ))} + {categories.map(category => + groupedProducts[category.id] ? ( + + + {category.name} + + + {groupedProducts[category.id]?.map(product => ( + addToCart(product)} + quantityInCart={productQuantities[product.id] || 0} + onRemoveOne={() => removeFromCart(product)} + onAddOne={() => addToCart(product)} + /> + ))} + - - ))} + ) : ( + <> + ) + )} {cart.length > 0 && ( From eca0c2c8a4ca8d880f1e72dd4ee34114f464e1b3 Mon Sep 17 00:00:00 2001 From: Agustin Kassis Date: Thu, 9 Nov 2023 16:33:49 -0300 Subject: [PATCH 159/159] added menu --- src/app/cart/coffee/page.tsx | 6 +++--- src/app/cart/{page.tsx => components/menu.tsx} | 6 +++--- src/app/cart/green/page.tsx | 6 +++--- src/app/cart/pizza/page.tsx | 6 +++--- src/app/cart/urban/page.tsx | 6 +++--- 5 files changed, 15 insertions(+), 15 deletions(-) rename src/app/cart/{page.tsx => components/menu.tsx} (99%) diff --git a/src/app/cart/coffee/page.tsx b/src/app/cart/coffee/page.tsx index 0e4e6d9..5480f4e 100644 --- a/src/app/cart/coffee/page.tsx +++ b/src/app/cart/coffee/page.tsx @@ -1,8 +1,8 @@ -import Page from '../page' import lud06 from '@/constants/lud06/coffee.json' +import Menu from '../components/menu' -export const CoffeeMenu = () => { - return +const CoffeeMenu = () => { + return } export default CoffeeMenu diff --git a/src/app/cart/page.tsx b/src/app/cart/components/menu.tsx similarity index 99% rename from src/app/cart/page.tsx rename to src/app/cart/components/menu.tsx index a0d3e41..af6cd60 100644 --- a/src/app/cart/page.tsx +++ b/src/app/cart/components/menu.tsx @@ -36,17 +36,17 @@ import theme from '@/styles/theme' import { aggregateProducts, fetchLNURL } from '@/lib/utils' import { LNURLResponse } from '@/types/lnurl' -interface PageProps { +interface MenuProps { name?: string title?: string lud06: LNURLResponse } -export default function Page({ +export default function Menu({ name: pageName = 'coffee', title: pageTitle = 'Carrito de Café', lud06 -}: PageProps) { +}: MenuProps) { // Hooks const { setLUD06 } = useLN() const { diff --git a/src/app/cart/green/page.tsx b/src/app/cart/green/page.tsx index ef469d3..a32c230 100644 --- a/src/app/cart/green/page.tsx +++ b/src/app/cart/green/page.tsx @@ -1,8 +1,8 @@ -import Page from '../page' import lud06 from '@/constants/lud06/green.json' +import Menu from '../components/menu' -export const GreenMenu = () => { - return +const GreenMenu = () => { + return } export default GreenMenu diff --git a/src/app/cart/pizza/page.tsx b/src/app/cart/pizza/page.tsx index 2b82794..470b5e4 100644 --- a/src/app/cart/pizza/page.tsx +++ b/src/app/cart/pizza/page.tsx @@ -1,8 +1,8 @@ -import Page from '../page' import lud06 from '@/constants/lud06/pizza.json' +import Menu from '../components/menu' -export const PizzaMenu = () => { - return +const PizzaMenu = () => { + return } export default PizzaMenu diff --git a/src/app/cart/urban/page.tsx b/src/app/cart/urban/page.tsx index 1c40c80..43cec61 100644 --- a/src/app/cart/urban/page.tsx +++ b/src/app/cart/urban/page.tsx @@ -1,8 +1,8 @@ -import Page from '../page' import lud06 from '@/constants/lud06/urban.json' +import Menu from '../components/menu' -export const UrbanMenu = () => { - return +const UrbanMenu = () => { + return } export default UrbanMenu