diff --git a/.github/labeler.yml b/.github/labeler.yml index 71e9482c99..5d35153e1d 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -22,6 +22,11 @@ admin-panel: - flake.lock - pnpm-lock.yaml +map: + - apps/map/* + - flake.lock + - pnpm-lock.yaml + core: - core/api/* - core/api-cron/* diff --git a/.github/workflows/bats.yml b/.github/workflows/bats.yml index f050386d9f..8b5df6699f 100644 --- a/.github/workflows/bats.yml +++ b/.github/workflows/bats.yml @@ -23,7 +23,7 @@ jobs: - name: Buck2 build run: | nix develop -c buck2 build //core/api //core/api-ws-server \ - //core/api-keys //apps/dashboard //apps/consent //apps/pay //apps/admin-panel \ + //core/api-keys //apps/dashboard //apps/consent //apps/pay //apps/admin-panel //apps/map \ //core/notifications - name: Run bats tests run: | diff --git a/.github/workflows/buck2-test.yaml b/.github/workflows/buck2-test.yaml index 445260ddad..f072fc87cb 100644 --- a/.github/workflows/buck2-test.yaml +++ b/.github/workflows/buck2-test.yaml @@ -23,7 +23,7 @@ jobs: ${{ toJSON(github.event.pull_request.labels.*.name) }} EOF - DEFAULT_LABELS=("dashboard" "consent" "pay" "core" "api-keys" "notifications" "admin-panel") + DEFAULT_LABELS=("dashboard" "consent" "pay" "core" "api-keys" "notifications" "admin-panel" "map") LABELS=($(jq -r '.[]' < labels.json)) if [ ${#LABELS[@]} -eq 0 ]; then LABELS=("${DEFAULT_LABELS[@]}") @@ -33,7 +33,7 @@ jobs: for LABEL in "${LABELS[@]}"; do case "$LABEL" in - dashboard|consent|pay|admin-panel) + dashboard|consent|pay|admin-panel|map) ARGS+=" //apps/$LABEL:test" ;; core) diff --git a/.github/workflows/integration-test.yml b/.github/workflows/integration-test.yml index 0cf1b06d86..cf39a00ff4 100644 --- a/.github/workflows/integration-test.yml +++ b/.github/workflows/integration-test.yml @@ -27,7 +27,7 @@ jobs: ${{ toJSON(github.event.pull_request.labels.*.name) }} EOF - DEFAULT_LABELS=("dashboard" "consent" "pay" "core" "admin-panel") + DEFAULT_LABELS=("dashboard" "consent" "pay" "core" "admin-panel" "map") LABELS=($(jq -r '.[]' < labels.json)) if [ ${#LABELS[@]} -eq 0 ]; then LABELS=("${DEFAULT_LABELS[@]}") @@ -37,7 +37,7 @@ jobs: for LABEL in "${LABELS[@]}"; do case "$LABEL" in - dashboard|consent|pay|core|admin-panel) + dashboard|consent|pay|core|admin-panel|map) ARGS+=" $LABEL" ;; esac diff --git a/BUCK b/BUCK index 79553ed659..482cfe37fc 100644 --- a/BUCK +++ b/BUCK @@ -8,6 +8,7 @@ pnpm_workspace( "//apps/dashboard:package.json", "//apps/pay:package.json", "//apps/admin-panel:package.json", + "//apps/map:package.json", "//lib/eslint-config:package.json", "//lib/galoy-components:package.json" ], diff --git a/apps/map/.eslintrc.json b/apps/map/.eslintrc.json new file mode 100644 index 0000000000..bffb357a71 --- /dev/null +++ b/apps/map/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/apps/map/.gitignore b/apps/map/.gitignore new file mode 100644 index 0000000000..fd3dbb571a --- /dev/null +++ b/apps/map/.gitignore @@ -0,0 +1,36 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +.yarn/install-state.gz + +# 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/apps/map/BUCK b/apps/map/BUCK new file mode 100644 index 0000000000..83780d50c2 --- /dev/null +++ b/apps/map/BUCK @@ -0,0 +1,84 @@ +load( + "@toolchains//workspace-pnpm:macros.bzl", + "dev_pnpm_task_binary", + "dev_pnpm_task_test", + "build_node_modules", + "next_build", + "next_build_bin", + "eslint", + "audit", +) + +dev_pnpm_task_binary( + name = "dev", + command = "dev", +) + +dev_pnpm_task_binary( + name = "lint-fix", + command = "lint:fix", +) + +dev_pnpm_task_test( + name = "test-integration", + command = "test", +) + +export_file( + name = "package.json", + visibility = ["PUBLIC"], +) + +build_node_modules( + name = "node_modules", +) + +filegroup( + name = "src", + srcs = glob([ + "app/**", + "theme/**", + "services/**", + "components/**", + "tailwind.config.ts", + "postcss.config.js", + "next.config.js", + "tsconfig.json", + "*.ts", + "instrumentation.node.ts" + ]), +) + +next_build( + name = "build", + srcs = [":src"], +) + +next_build_bin( + name = "map", +) + +dev_deps_srcs = { + "lib/eslint-config": "//lib/eslint-config:src", +} + +audit( + name = "audit", + level = "critical", +) + +eslint( + name = "lint", + srcs = [":src"] + glob([".eslint*"]), + extensions = [".ts", ".tsx"], + allow_warnings = True, + dev_deps_srcs = dev_deps_srcs, +) + +test_suite( + name = "test", + tests = [ + ":audit", + ":lint", + ], +) diff --git a/apps/map/Dockerfile b/apps/map/Dockerfile new file mode 100644 index 0000000000..fd299527dd --- /dev/null +++ b/apps/map/Dockerfile @@ -0,0 +1,32 @@ +FROM nixos/nix:latest AS builder +ARG APP=map + +COPY . /workdir +WORKDIR /workdir + +RUN set -eux; \ + nix \ + --extra-experimental-features "nix-command flakes impure-derivations ca-derivations" \ + --option filter-syscalls false \ + build \ + ".#$APP"; + +RUN mkdir -p /tmp/nix-store-closure /tmp/local-bin +RUN cp -R $(nix-store --query --requisites result/) /tmp/nix-store-closure +RUN ln -snf $(nix-store --query result/)/bin/* /tmp/local-bin/ + +FROM gcr.io/distroless/static-debian11 AS final +ARG APP=map + +WORKDIR /app/$APP +COPY --from=builder /tmp/nix-store-closure /nix/store +COPY --from=builder /tmp/local-bin/* /usr/local/bin/ + +USER 1000 + +ARG COMMITHASH +ENV COMMITHASH ${COMMITHASH} + +CMD [ \ + "/usr/local/bin/run" \ +] diff --git a/apps/map/README.md b/apps/map/README.md new file mode 100644 index 0000000000..0a55876c0e --- /dev/null +++ b/apps/map/README.md @@ -0,0 +1,9 @@ +# Map + +### local dev setup +This app uses Google Maps, therefore it requires a Google Maps API token: +``` +NEXT_PUBLIC_MAP_API_TOKEN +``` + +App run's on port `3005` by default. diff --git a/apps/map/app/favicon.ico b/apps/map/app/favicon.ico new file mode 100644 index 0000000000..06739ff07e Binary files /dev/null and b/apps/map/app/favicon.ico differ diff --git a/apps/map/app/globals.css b/apps/map/app/globals.css new file mode 100644 index 0000000000..b5c61c9567 --- /dev/null +++ b/apps/map/app/globals.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/apps/map/app/layout.tsx b/apps/map/app/layout.tsx new file mode 100644 index 0000000000..9b8bb28818 --- /dev/null +++ b/apps/map/app/layout.tsx @@ -0,0 +1,22 @@ +import type { Metadata } from "next" +import { Inter_Tight } from "next/font/google" +import "./globals.css" + +const inter = Inter_Tight({ subsets: ["latin"] }) + +export const metadata: Metadata = { + title: "Maps", + description: "Merchant map for Blink", +} + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode +}>) { + return ( + + {children} + + ) +} diff --git a/apps/map/app/page.tsx b/apps/map/app/page.tsx new file mode 100644 index 0000000000..0d819695f2 --- /dev/null +++ b/apps/map/app/page.tsx @@ -0,0 +1,19 @@ +import MapComponent from "@/components/map" +import { businessMapMarkers } from "@/services/galoy/graphql/queries/business-map-marker" +import Image from "next/image" + +export default async function Home() { + const mapData = await businessMapMarkers() + if (mapData instanceof Error) { + return
{mapData.message}
+ } + + return ( +
+
+ Blink Logo +
+ +
+ ) +} diff --git a/apps/map/app/server-acton.ts b/apps/map/app/server-acton.ts new file mode 100644 index 0000000000..b68d930271 --- /dev/null +++ b/apps/map/app/server-acton.ts @@ -0,0 +1,76 @@ +"use server" + +import { merchantMapSuggest } from "@/services/galoy/graphql/mutation/merchant-map-suggest" +import { isValidCoordinates } from "./utils" + +export const submitMerchantSuggest = async ( + _prevState: { + error: boolean + message: string + }, + form: FormData, +): Promise<{ + error: boolean + message: string +}> => { + const title = form.get("title") + const username = form.get("username") + const latitude = form.get("latitude") + const longitude = form.get("longitude") + if ( + !title || + !username || + !latitude || + !longitude || + typeof title !== "string" || + typeof username != "string" || + typeof latitude != "string" || + typeof longitude != "string" + ) { + return { + error: true, + message: "Missing fields", + } + } + + const lat = Number(latitude) + const lon = Number(longitude) + + if ( + isValidCoordinates({ + latitude: lat, + longitude: lon, + }) + ) { + return { + error: true, + message: "Invalid coordinates", + } + } + + const response = await merchantMapSuggest({ + title, + username, + latitude: lat, + longitude: lon, + }) + + if (response instanceof Error) { + return { + error: true, + message: response.message, + } + } + + if (response.errors.length > 0) { + return { + error: true, + message: response.errors[0].message, + } + } + + return { + error: false, + message: "success", + } +} diff --git a/apps/map/app/utils.ts b/apps/map/app/utils.ts new file mode 100644 index 0000000000..f0f71cf7e7 --- /dev/null +++ b/apps/map/app/utils.ts @@ -0,0 +1,11 @@ +export function isValidCoordinates({ + latitude, + longitude, +}: { + latitude: number + longitude: number +}): boolean { + const isValidLatitude: boolean = latitude >= -90 && latitude <= 90 + const isValidLongitude: boolean = longitude >= -180 && longitude <= 180 + return isValidLatitude && isValidLongitude +} diff --git a/apps/map/codegen.yml b/apps/map/codegen.yml new file mode 100644 index 0000000000..2a58c294fe --- /dev/null +++ b/apps/map/codegen.yml @@ -0,0 +1,61 @@ +overwrite: true +schema: + - "../../core/api/src/graphql/public/schema.graphql" +documents: + - "app/**/*.{ts,tsx}" + - "services/**/*.{ts,tsx}" +generates: + services/galoy/graphql/generated.ts: + plugins: + - typescript + - typescript-operations + - typescript-react-apollo + - add: + content: "// this file is autogenerated by codegen" + - add: + content: "\/* eslint-disable *\/" + config: + # typesPrefix: GQL + enumsAsConst: true + immutableTypes: true + strictScalars: true + nonOptionalTypename: true + scalars: + AccountApiKeyLabel: "string" + AuthToken: "string" + CentAmount: "number" + ContactAlias: "string" + Hex32Bytes: "string" + Language: "string" + LnPaymentPreImage: "string" + LnPaymentRequest: "string" + LnPaymentSecret: "string" + Memo: "string" + OnChainAddress: "string" + OnChainTxHash: "string" + OneTimeAuthCode: "string" + PaymentHash: "string" + Phone: "string" + SafeInt: "number" + SatAmount: "number" + SignedAmount: "number" + TargetConfirmations: "number" + Timestamp: "number" + Username: "string" + WalletId: "string" + Seconds: "number" + DisplayCurrency: "string" + SignedDisplayMajorAmount: "string" + CountryCode: "string" + EmailRegistrationId: "string" + TotpRegistrationId: "string" + EmailAddress: "string" + TotpSecret: "string" + TotpCode: "string" + Feedback: "string" + Minutes: "string" + LnPubkey: "string" + EndpointId: "string" + EndpointUrl: "string" + Object: "string" + NotificationCategory: "string" diff --git a/apps/map/components/input/index.tsx b/apps/map/components/input/index.tsx new file mode 100644 index 0000000000..165b65b67f --- /dev/null +++ b/apps/map/components/input/index.tsx @@ -0,0 +1,34 @@ +import React, { InputHTMLAttributes } from "react" + +interface InputProps extends InputHTMLAttributes { + label?: string + id: string +} + +const InputComponent: React.FC = ({ label, id, ...inputProps }) => { + return ( +
+ {label ? ( + + ) : null} + +
+ ) +} + +export default InputComponent diff --git a/apps/map/components/logo/location.tsx b/apps/map/components/logo/location.tsx new file mode 100644 index 0000000000..5e310d9366 --- /dev/null +++ b/apps/map/components/logo/location.tsx @@ -0,0 +1,16 @@ +import React from "react" + +const LocationIcon = () => ( + + + + +) + +export default LocationIcon diff --git a/apps/map/components/map/index.tsx b/apps/map/components/map/index.tsx new file mode 100644 index 0000000000..aba045cf3f --- /dev/null +++ b/apps/map/components/map/index.tsx @@ -0,0 +1,336 @@ +"use client" +import React, { useState, useMemo, useEffect, useCallback, useRef } from "react" +import { GoogleMap, MarkerF, InfoWindow, useLoadScript } from "@react-google-maps/api" +import { BusinessMapMarkersQuery } from "@/services/galoy/graphql/generated" +import Link from "next/link" +import { theme } from "./map-theme" +import { env } from "@/env" +import LocationIcon from "../logo/location" +import { SuggestMapFormSheet } from "./suggest-form" + +type MapComponentProps = { + mapData: BusinessMapMarkersQuery["businessMapMarkers"] +} +const DEFAULT_LAT = 13.7942 +const DEFAULT_LNG = -88.8965 + +export default function MapComponent({ mapData }: MapComponentProps) { + const mapRef = useRef() + const [selectedMarker, setSelectedMarker] = useState< + BusinessMapMarkersQuery["businessMapMarkers"][number] | null + >(null) + const [currentLocation, setCurrentLocation] = useState({ + coordinates: { + lat: DEFAULT_LAT, + lng: DEFAULT_LNG, + }, + userAllowedLocation: false, + }) + + const [draggablePin, setDraggablePin] = useState({ + coordinates: { lat: 0, lng: 0 }, + visible: false, + }) + + const libraries = useMemo(() => ["places"], []) + const onMapLoad = useCallback((map: google.maps.Map) => { + mapRef.current = map + }, []) + + const mapOptions = useMemo( + () => ({ + disableDefaultUI: true, + clickableIcons: true, + zoomControl: true, + maxZoom: 38, + minZoom: 3, + styles: [...theme, ...unwantedMarkers], + restriction: { + latLngBounds: { + north: 85, + south: -85, + east: 180, + west: -180, + }, + strictBounds: true, + }, + }), + [], + ) + + useEffect(() => { + navigator.geolocation.getCurrentPosition( + (position) => { + setCurrentLocation({ + coordinates: { lat: position.coords.latitude, lng: position.coords.longitude }, + userAllowedLocation: true, + }) + }, + () => { + console.error("Could not fetch the location") + }, + ) + }, []) + + const { isLoaded } = useLoadScript({ + googleMapsApiKey: env.NEXT_PUBLIC_MAP_API_TOKEN, + libraries: libraries as any, + }) + + if (!isLoaded) { + return

Loading...

+ } + + const handleMarkerClick = ( + marker: BusinessMapMarkersQuery["businessMapMarkers"][number], + ) => { + setSelectedMarker(marker) + } + + const centerMapOnCurrentLocation = () => { + if (mapRef.current) { + mapRef.current.panTo(currentLocation.coordinates) + mapRef.current.setZoom(14) + } + } + + const addDraggablePin = () => { + const center = mapRef?.current?.getCenter() + + if (!center) { + return + } + + setDraggablePin({ + coordinates: { lat: center?.lat(), lng: center?.lng() }, + visible: true, + }) + } + + const cancelDraggablePin = () => { + setDraggablePin({ + coordinates: { lat: 0, lng: 0 }, + visible: false, + }) + } + + const handleDragEnd = (event: google.maps.MapMouseEvent) => { + const lat = event?.latLng?.lat() + const lng = event?.latLng?.lng() + + if (!lat || !lng) { + return + } + + setDraggablePin({ + coordinates: { lat, lng }, + visible: true, + }) + } + + const onInputChangeDraggablePinLat = (e: React.ChangeEvent) => { + setDraggablePin({ + coordinates: { lat: Number(e.target.value), lng: draggablePin.coordinates.lng }, + visible: true, + }) + + if (!mapRef.current) { + return + } + mapRef.current.panTo({ + lat: Number(e.target.value), + lng: draggablePin.coordinates.lng, + }) + } + + const onInputChangeDraggablePinLong = (e: React.ChangeEvent) => { + setDraggablePin({ + coordinates: { lat: draggablePin.coordinates.lat, lng: Number(e.target.value) }, + visible: true, + }) + + if (!mapRef.current) { + return + } + mapRef.current.panTo({ + lat: draggablePin.coordinates.lat, + lng: Number(e.target.value), + }) + } + + return ( + <> + {draggablePin.visible && ( +
+
+
+ + +
+
+ + +
+
+
+ )} + + {draggablePin.visible && ( +
+ + +
+ )} + {!draggablePin.visible && ( + + )} + {currentLocation.userAllowedLocation && ( + + )} + + {mapData.map((marker, index) => ( + handleMarkerClick(marker)} + /> + ))} + {currentLocation.userAllowedLocation && ( + + )} + {selectedMarker && ( + setSelectedMarker(null)} + > +
+

+ {selectedMarker.username} +

+ + + +
+
+ )} + {draggablePin.visible && ( + + )} +
+ + ) +} + +const unwantedMarkers = [ + { + featureType: "poi", + elementType: "labels", + stylers: [{ visibility: "off" }], + }, + { + featureType: "transit", + elementType: "all", + stylers: [{ visibility: "off" }], + }, + { + featureType: "poi.park", + elementType: "labels", + stylers: [{ visibility: "off" }], + }, + { + featureType: "poi.business", + stylers: [{ visibility: "off" }], + }, + { + featureType: "poi.business", + stylers: [{ visibility: "off" }], + }, + { + featureType: "landscape.man_made", + stylers: [{ visibility: "off" }], + }, + { + featureType: "road", + elementType: "labels.icon", + stylers: [{ visibility: "off" }], + }, +] diff --git a/apps/map/components/map/map-theme.ts b/apps/map/components/map/map-theme.ts new file mode 100644 index 0000000000..2e4a72f826 --- /dev/null +++ b/apps/map/components/map/map-theme.ts @@ -0,0 +1,80 @@ +export const theme = [ + { elementType: "geometry", stylers: [{ color: "#242f3e" }] }, + { elementType: "labels.text.stroke", stylers: [{ color: "#242f3e" }] }, + { elementType: "labels.text.fill", stylers: [{ color: "#746855" }] }, + { + featureType: "administrative.locality", + elementType: "labels.text.fill", + stylers: [{ color: "#d59563" }], + }, + { + featureType: "poi", + elementType: "labels.text.fill", + stylers: [{ color: "#d59563" }], + }, + { + featureType: "poi.park", + elementType: "geometry", + stylers: [{ color: "#263c3f" }], + }, + { + featureType: "poi.park", + elementType: "labels.text.fill", + stylers: [{ color: "#6b9a76" }], + }, + { + featureType: "road", + elementType: "geometry", + stylers: [{ color: "#38414e" }], + }, + { + featureType: "road", + elementType: "geometry.stroke", + stylers: [{ color: "#212a37" }], + }, + { + featureType: "road", + elementType: "labels.text.fill", + stylers: [{ color: "#9ca5b3" }], + }, + { + featureType: "road.highway", + elementType: "geometry", + stylers: [{ color: "#746855" }], + }, + { + featureType: "road.highway", + elementType: "geometry.stroke", + stylers: [{ color: "#1f2835" }], + }, + { + featureType: "road.highway", + elementType: "labels.text.fill", + stylers: [{ color: "#f3d19c" }], + }, + { + featureType: "transit", + elementType: "geometry", + stylers: [{ color: "#2f3948" }], + }, + { + featureType: "transit.station", + elementType: "labels.text.fill", + stylers: [{ color: "#d59563" }], + }, + { + featureType: "water", + elementType: "geometry", + stylers: [{ color: "#17263c" }], + }, + { + featureType: "water", + elementType: "labels.text.fill", + stylers: [{ color: "#515c6d" }], + }, + { + featureType: "water", + elementType: "labels.text.stroke", + stylers: [{ color: "#17263c" }], + }, +] diff --git a/apps/map/components/map/suggest-form.tsx b/apps/map/components/map/suggest-form.tsx new file mode 100644 index 0000000000..e2c06455ee --- /dev/null +++ b/apps/map/components/map/suggest-form.tsx @@ -0,0 +1,120 @@ +import { submitMerchantSuggest } from "@/app/server-acton" +import InputComponent from "../input" +import { + Sheet, + SheetContent, + SheetDescription, + SheetHeader, + SheetTitle, + SheetTrigger, +} from "../sheet" +import { useFormState } from "react-dom" +import { useState } from "react" + +type formProps = { + latitude: number + longitude: number +} + +export function SuggestMapFormSheet({ latitude, longitude }: formProps) { + const [isOpen, setIsOpen] = useState(false) + const [coordinates, setCoordinates] = useState({ + latitude: latitude, + longitude: longitude, + }) + + const [state, formAction] = useFormState< + { + error: boolean + message: string + }, + FormData + >(submitMerchantSuggest, { + error: false, + message: "", + }) + + const handleOpen = () => { + state.error = false + state.message = "" + setCoordinates({ + latitude, + longitude, + }) + setIsOpen(true) + } + + return ( + + + + + + + Suggest Business + + {state.message === "success" ? ( +

{"Request Submitted"}

+ ) : ( + <> + + Fill the Details of the Business you want to Add. + +
+ + + { + setCoordinates({ ...coordinates, latitude: Number(e.target.value) }) + }} + /> + { + setCoordinates({ + ...coordinates, + longitude: Number(e.target.value), + }) + }} + /> + {state.error && {state.message}} + + + + )} +
+
+ ) +} diff --git a/apps/map/components/sheet/index.tsx b/apps/map/components/sheet/index.tsx new file mode 100644 index 0000000000..a6095ced50 --- /dev/null +++ b/apps/map/components/sheet/index.tsx @@ -0,0 +1,126 @@ +import * as React from "react" +import * as SheetPrimitive from "@radix-ui/react-dialog" +import { cva, type VariantProps } from "class-variance-authority" +import { cn } from "../utils" + +const Sheet = SheetPrimitive.Root + +const SheetTrigger = SheetPrimitive.Trigger + +const SheetClose = SheetPrimitive.Close + +const SheetPortal = SheetPrimitive.Portal + +const SheetOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +SheetOverlay.displayName = SheetPrimitive.Overlay.displayName + +const sheetVariants = cva( + "fixed z-50 gap-4 bg-white p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500", + { + variants: { + side: { + top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top", + bottom: + "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom", + left: "inset-y-0 left-0 h-full sm:w-3/4 sm:border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left w-full sm:max-w-sm", + right: + "inset-y-0 right-0 h-full sm:w-3/4 sm:border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right w-full sm:max-w-sm", + }, + }, + defaultVariants: { + side: "right", + }, + }, +) + +interface SheetContentProps + extends React.ComponentPropsWithoutRef, + VariantProps {} + +const SheetContent = React.forwardRef< + React.ElementRef, + SheetContentProps +>(({ side = "right", className, children, ...props }, ref) => ( + + + + {children} + + xClose + + + +)) +SheetContent.displayName = SheetPrimitive.Content.displayName + +const SheetHeader = ({ className, ...props }: React.HTMLAttributes) => ( +
+) +SheetHeader.displayName = "SheetHeader" + +const SheetFooter = ({ className, ...props }: React.HTMLAttributes) => ( +
+) +SheetFooter.displayName = "SheetFooter" + +const SheetTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +SheetTitle.displayName = SheetPrimitive.Title.displayName + +const SheetDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +SheetDescription.displayName = SheetPrimitive.Description.displayName + +export { + Sheet, + SheetPortal, + SheetOverlay, + SheetTrigger, + SheetClose, + SheetContent, + SheetHeader, + SheetFooter, + SheetTitle, + SheetDescription, +} diff --git a/apps/map/components/utils.ts b/apps/map/components/utils.ts new file mode 100644 index 0000000000..bd0c391ddd --- /dev/null +++ b/apps/map/components/utils.ts @@ -0,0 +1,6 @@ +import { clsx, type ClassValue } from "clsx" +import { twMerge } from "tailwind-merge" + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)) +} diff --git a/apps/map/env.ts b/apps/map/env.ts new file mode 100644 index 0000000000..434a7d20b7 --- /dev/null +++ b/apps/map/env.ts @@ -0,0 +1,15 @@ +import { createEnv } from "@t3-oss/env-nextjs" +import { z } from "zod" + +export const env = createEnv({ + server: { + CORE_URL: z.string().default("http://localhost:4455/graphql"), + }, + client: { + NEXT_PUBLIC_MAP_API_TOKEN: z.string().default(""), + }, + runtimeEnv: { + CORE_URL: process.env.CORE_URL, + NEXT_PUBLIC_MAP_API_TOKEN: process.env.NEXT_PUBLIC_MAP_API_TOKEN, + }, +}) diff --git a/apps/map/instrumentation.node.ts b/apps/map/instrumentation.node.ts new file mode 100644 index 0000000000..377f594508 --- /dev/null +++ b/apps/map/instrumentation.node.ts @@ -0,0 +1,35 @@ +import { NodeSDK } from "@opentelemetry/sdk-node" +import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http" +import { Resource } from "@opentelemetry/resources" +import { SemanticResourceAttributes } from "@opentelemetry/semantic-conventions" +import { SimpleSpanProcessor } from "@opentelemetry/sdk-trace-node" +import { NetInstrumentation } from "@opentelemetry/instrumentation-net" +import { HttpInstrumentation } from "@opentelemetry/instrumentation-http" +import { GraphQLInstrumentation } from "@opentelemetry/instrumentation-graphql" +import { W3CTraceContextPropagator } from "@opentelemetry/core" + +const sdk = new NodeSDK({ + textMapPropagator: new W3CTraceContextPropagator(), + resource: new Resource({ + [SemanticResourceAttributes.SERVICE_NAME]: + process.env.TRACING_SERVICE_NAME || "map", + }), + spanProcessor: new SimpleSpanProcessor(new OTLPTraceExporter()), + instrumentations: [ + new NetInstrumentation(), + new HttpInstrumentation(), + new GraphQLInstrumentation({ + mergeItems: true, + allowValues: true, + }), + ], +}) +sdk.start() + +process.on("SIGTERM", () => { + sdk + .shutdown() + .then(() => console.log("Tracing terminated")) + .catch((error) => console.log("Error terminating tracing", error)) + .finally(() => process.exit(0)) +}) diff --git a/apps/map/instrumentation.ts b/apps/map/instrumentation.ts new file mode 100644 index 0000000000..e357de1a6d --- /dev/null +++ b/apps/map/instrumentation.ts @@ -0,0 +1,7 @@ +export async function register() { + console.log("register", process.env.NEXT_RUNTIME) + + if (process.env.NEXT_RUNTIME === "nodejs") { + await import("./instrumentation.node") + } +} diff --git a/apps/map/next-env.d.ts b/apps/map/next-env.d.ts new file mode 100644 index 0000000000..4f11a03dc6 --- /dev/null +++ b/apps/map/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/apps/map/next.config.js b/apps/map/next.config.js new file mode 100644 index 0000000000..cbd4faab40 --- /dev/null +++ b/apps/map/next.config.js @@ -0,0 +1,10 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + experimental: { + outputFileTracingRoot: require("path").join(__dirname, "../../"), + instrumentationHook: true, + }, + output: "standalone", +} + +module.exports = nextConfig diff --git a/apps/map/package.json b/apps/map/package.json new file mode 100644 index 0000000000..98b1374681 --- /dev/null +++ b/apps/map/package.json @@ -0,0 +1,58 @@ +{ + "name": "map", + "private": true, + "scripts": { + "dev": "next dev -p 3005", + "build": "next build", + "start": "next start", + "lint": "next lint", + "lint:fix": "eslint --fix --ext .ts,.tsx .", + "codegen": "graphql-codegen --config codegen.yml", + "test": "echo 'Need to add test'" + }, + "dependencies": { + "@apollo/client": "^3.9.2", + "@opentelemetry/api": "^1.6.0", + "@opentelemetry/core": "^1.21.0", + "@opentelemetry/exporter-trace-otlp-http": "^0.44.0", + "@opentelemetry/instrumentation-graphql": "^0.35.2", + "@opentelemetry/instrumentation-http": "^0.44.0", + "@opentelemetry/instrumentation-net": "^0.32.2", + "@opentelemetry/resources": "^1.17.1", + "@opentelemetry/sdk-node": "^0.48.0", + "@opentelemetry/sdk-trace-node": "^1.18.1", + "@opentelemetry/semantic-conventions": "^1.17.1", + "@radix-ui/react-dialog": "^1.0.5", + "@react-google-maps/api": "^2.19.2", + "@t3-oss/env-nextjs": "^0.8.0", + "class-variance-authority": "^0.7.0", + "clsx": "^2.0.0", + "graphql": "^16.8.1", + "next": "14.1.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "tailwind-merge": "^2.1.0", + "tailwindcss-animate": "^1.0.7", + "zod": "^3.22.4" + }, + "devDependencies": { + "@galoy/eslint-config": "workspace:^", + "@graphql-codegen/add": "^5.0.0", + "@graphql-codegen/cli": "^5.0.0", + "@graphql-codegen/client-preset": "^4.1.0", + "@graphql-codegen/typescript": "^4.0.1", + "@graphql-codegen/typescript-operations": "^4.0.1", + "@graphql-codegen/typescript-react-apollo": "^4.1.0", + "@graphql-codegen/typescript-resolvers": "^4.0.1", + "@graphql-inspector/cli": "^4.0.3", + "@types/node": "^20", + "@types/react": "18.2.31", + "@types/react-dom": "18.2.14", + "autoprefixer": "^10.0.1", + "eslint": "^8", + "eslint-config-next": "14.1.0", + "postcss": "^8", + "tailwindcss": "^3.3.0", + "typescript": "^5" + } +} \ No newline at end of file diff --git a/apps/map/postcss.config.js b/apps/map/postcss.config.js new file mode 100644 index 0000000000..12a703d900 --- /dev/null +++ b/apps/map/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/apps/map/prettier.config.js b/apps/map/prettier.config.js new file mode 100644 index 0000000000..e6236cf0be --- /dev/null +++ b/apps/map/prettier.config.js @@ -0,0 +1,15 @@ +module.exports = { + // Custom: + semi: false, + trailingComma: "all", + printWidth: 90, + quoteProps: "consistent", + // Defaults: + singleQuote: false, + tabWidth: 2, + useTabs: false, + bracketSpacing: true, + arrowParens: "always", + proseWrap: "preserve", + endOfLine: "lf", +} diff --git a/apps/map/prettierrc.js b/apps/map/prettierrc.js new file mode 100644 index 0000000000..9c225f1883 --- /dev/null +++ b/apps/map/prettierrc.js @@ -0,0 +1,3 @@ +const baseConfig = require("@galoy/eslint-config/prettier") + +module.exports = baseConfig diff --git a/apps/map/public/logo.svg b/apps/map/public/logo.svg new file mode 100644 index 0000000000..f48cc40169 --- /dev/null +++ b/apps/map/public/logo.svg @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/map/services/galoy/graphql/client.ts b/apps/map/services/galoy/graphql/client.ts new file mode 100644 index 0000000000..e7b202cca1 --- /dev/null +++ b/apps/map/services/galoy/graphql/client.ts @@ -0,0 +1,23 @@ +import { ApolloClient, HttpLink, InMemoryCache } from "@apollo/client" +import { propagation, context } from "@opentelemetry/api" +import { env } from "@/env" + +export const apolloClient = { + UnAuthed: () => { + return new ApolloClient({ + cache: new InMemoryCache(), + link: new HttpLink({ + uri: env.CORE_URL, + fetchOptions: { cache: "no-store" }, + fetch: (uri, options) => { + const headersWithTrace = options?.headers || {} + propagation.inject(context.active(), headersWithTrace) + return fetch(uri, { + ...options, + headers: headersWithTrace, + }) + }, + }), + }) + }, +} diff --git a/apps/map/services/galoy/graphql/generated.ts b/apps/map/services/galoy/graphql/generated.ts new file mode 100644 index 0000000000..442540d77b --- /dev/null +++ b/apps/map/services/galoy/graphql/generated.ts @@ -0,0 +1,2152 @@ +// this file is autogenerated by codegen +/* eslint-disable */ +import { gql } from '@apollo/client'; +import * as Apollo from '@apollo/client'; +export type Maybe = T | null; +export type InputMaybe = Maybe; +export type Exact = { [K in keyof T]: T[K] }; +export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; +export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; +export type MakeEmpty = { [_ in K]?: never }; +export type Incremental = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never }; +const defaultOptions = {} as const; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: { input: string; output: string; } + String: { input: string; output: string; } + Boolean: { input: boolean; output: boolean; } + Int: { input: number; output: number; } + Float: { input: number; output: number; } + /** An Opaque Bearer token */ + AuthToken: { input: string; output: string; } + /** (Positive) Cent amount (1/100 of a dollar) */ + CentAmount: { input: number; output: number; } + /** An alias name that a user can set for a wallet (with which they have transactions) */ + ContactAlias: { input: string; output: string; } + /** A CCA2 country code (ex US, FR, etc) */ + CountryCode: { input: string; output: string; } + /** Display currency of an account */ + DisplayCurrency: { input: string; output: string; } + /** Email address */ + EmailAddress: { input: string; output: string; } + /** An id to be passed between registrationInitiate and registrationValidate for confirming email */ + EmailRegistrationId: { input: string; output: string; } + EndpointId: { input: string; output: string; } + /** Url that will be fetched on events for the account */ + EndpointUrl: { input: string; output: string; } + /** Feedback shared with our user */ + Feedback: { input: string; output: string; } + /** Hex-encoded string of 32 bytes */ + Hex32Bytes: { input: string; output: string; } + Language: { input: string; output: string; } + LnPaymentPreImage: { input: string; output: string; } + /** BOLT11 lightning invoice payment request with the amount included */ + LnPaymentRequest: { input: string; output: string; } + LnPaymentSecret: { input: string; output: string; } + /** Text field in a lightning payment transaction */ + Memo: { input: string; output: string; } + /** (Positive) amount of minutes */ + Minutes: { input: string; output: string; } + NotificationCategory: { input: string; output: string; } + /** An address for an on-chain bitcoin destination */ + OnChainAddress: { input: string; output: string; } + OnChainTxHash: { input: string; output: string; } + /** An authentication code valid for a single use */ + OneTimeAuthCode: { input: string; output: string; } + PaymentHash: { input: string; output: string; } + /** Phone number which includes country code */ + Phone: { input: string; output: string; } + /** Non-fractional signed whole numeric value between -(2^53) + 1 and 2^53 - 1 */ + SafeInt: { input: number; output: number; } + /** (Positive) Satoshi amount */ + SatAmount: { input: number; output: number; } + /** (Positive) amount of seconds */ + Seconds: { input: number; output: number; } + /** An amount (of a currency) that can be negative (e.g. in a transaction) */ + SignedAmount: { input: number; output: number; } + /** A string amount (of a currency) that can be negative (e.g. in a transaction) */ + SignedDisplayMajorAmount: { input: string; output: string; } + /** Timestamp field, serialized as Unix time (the number of seconds since the Unix epoch) */ + Timestamp: { input: number; output: number; } + /** A time-based one-time password */ + TotpCode: { input: string; output: string; } + /** An id to be passed between set and verify for confirming totp */ + TotpRegistrationId: { input: string; output: string; } + /** A secret to generate time-based one-time password */ + TotpSecret: { input: string; output: string; } + /** Unique identifier of a user */ + Username: { input: string; output: string; } + /** Unique identifier of a wallet */ + WalletId: { input: string; output: string; } +}; + +export type Account = { + readonly callbackEndpoints: ReadonlyArray; + readonly csvTransactions: Scalars['String']['output']; + readonly defaultWallet: PublicWallet; + /** @deprecated Shifting property to 'defaultWallet.id' */ + readonly defaultWalletId: Scalars['WalletId']['output']; + readonly displayCurrency: Scalars['DisplayCurrency']['output']; + readonly id: Scalars['ID']['output']; + readonly invoices?: Maybe; + readonly level: AccountLevel; + readonly limits: AccountLimits; + readonly notificationSettings: NotificationSettings; + readonly pendingIncomingTransactions: ReadonlyArray; + readonly realtimePrice: RealtimePrice; + readonly transactions?: Maybe; + readonly walletById: Wallet; + readonly wallets: ReadonlyArray; +}; + + +export type AccountCsvTransactionsArgs = { + walletIds: ReadonlyArray; +}; + + +export type AccountInvoicesArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + walletIds?: InputMaybe>>; +}; + + +export type AccountPendingIncomingTransactionsArgs = { + walletIds?: InputMaybe>>; +}; + + +export type AccountTransactionsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + walletIds?: InputMaybe>>; +}; + + +export type AccountWalletByIdArgs = { + walletId: Scalars['WalletId']['input']; +}; + +export type AccountDeletePayload = { + readonly __typename: 'AccountDeletePayload'; + readonly errors: ReadonlyArray; + readonly success: Scalars['Boolean']['output']; +}; + +export type AccountDisableNotificationCategoryInput = { + readonly category: Scalars['NotificationCategory']['input']; + readonly channel?: InputMaybe; +}; + +export type AccountDisableNotificationChannelInput = { + readonly channel: NotificationChannel; +}; + +export type AccountEnableNotificationCategoryInput = { + readonly category: Scalars['NotificationCategory']['input']; + readonly channel?: InputMaybe; +}; + +export type AccountEnableNotificationChannelInput = { + readonly channel: NotificationChannel; +}; + +export const AccountLevel = { + One: 'ONE', + Two: 'TWO', + Zero: 'ZERO' +} as const; + +export type AccountLevel = typeof AccountLevel[keyof typeof AccountLevel]; +export type AccountLimit = { + /** The rolling time interval in seconds that the limits would apply for. */ + readonly interval?: Maybe; + /** The amount of cents remaining below the limit for the current 24 hour period. */ + readonly remainingLimit?: Maybe; + /** The current maximum limit for a given 24 hour period. */ + readonly totalLimit: Scalars['CentAmount']['output']; +}; + +export type AccountLimits = { + readonly __typename: 'AccountLimits'; + /** Limits for converting between currencies among a account's own wallets. */ + readonly convert: ReadonlyArray; + /** Limits for sending to other internal accounts. */ + readonly internalSend: ReadonlyArray; + /** Limits for withdrawing to external onchain or lightning destinations. */ + readonly withdrawal: ReadonlyArray; +}; + +export type AccountUpdateDefaultWalletIdInput = { + readonly walletId: Scalars['WalletId']['input']; +}; + +export type AccountUpdateDefaultWalletIdPayload = { + readonly __typename: 'AccountUpdateDefaultWalletIdPayload'; + readonly account?: Maybe; + readonly errors: ReadonlyArray; +}; + +export type AccountUpdateDisplayCurrencyInput = { + readonly currency: Scalars['DisplayCurrency']['input']; +}; + +export type AccountUpdateDisplayCurrencyPayload = { + readonly __typename: 'AccountUpdateDisplayCurrencyPayload'; + readonly account?: Maybe; + readonly errors: ReadonlyArray; +}; + +export type AccountUpdateNotificationSettingsPayload = { + readonly __typename: 'AccountUpdateNotificationSettingsPayload'; + readonly account?: Maybe; + readonly errors: ReadonlyArray; +}; + +export type AuthTokenPayload = { + readonly __typename: 'AuthTokenPayload'; + readonly authToken?: Maybe; + readonly errors: ReadonlyArray; + readonly totpRequired?: Maybe; +}; + +/** A wallet belonging to an account which contains a BTC balance and a list of transactions. */ +export type BtcWallet = Wallet & { + readonly __typename: 'BTCWallet'; + readonly accountId: Scalars['ID']['output']; + /** A balance stored in BTC. */ + readonly balance: Scalars['SignedAmount']['output']; + readonly id: Scalars['ID']['output']; + readonly invoiceByPaymentHash: Invoice; + /** A list of all invoices associated with walletIds optionally passed. */ + readonly invoices?: Maybe; + /** An unconfirmed incoming onchain balance. */ + readonly pendingIncomingBalance: Scalars['SignedAmount']['output']; + readonly pendingIncomingTransactions: ReadonlyArray; + readonly pendingIncomingTransactionsByAddress: ReadonlyArray; + readonly transactionById: Transaction; + /** A list of BTC transactions associated with this wallet. */ + readonly transactions?: Maybe; + readonly transactionsByAddress?: Maybe; + readonly transactionsByPaymentHash: ReadonlyArray; + readonly walletCurrency: WalletCurrency; +}; + + +/** A wallet belonging to an account which contains a BTC balance and a list of transactions. */ +export type BtcWalletInvoiceByPaymentHashArgs = { + paymentHash: Scalars['PaymentHash']['input']; +}; + + +/** A wallet belonging to an account which contains a BTC balance and a list of transactions. */ +export type BtcWalletInvoicesArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + + +/** A wallet belonging to an account which contains a BTC balance and a list of transactions. */ +export type BtcWalletPendingIncomingTransactionsByAddressArgs = { + address: Scalars['OnChainAddress']['input']; +}; + + +/** A wallet belonging to an account which contains a BTC balance and a list of transactions. */ +export type BtcWalletTransactionByIdArgs = { + transactionId: Scalars['ID']['input']; +}; + + +/** A wallet belonging to an account which contains a BTC balance and a list of transactions. */ +export type BtcWalletTransactionsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + + +/** A wallet belonging to an account which contains a BTC balance and a list of transactions. */ +export type BtcWalletTransactionsByAddressArgs = { + address: Scalars['OnChainAddress']['input']; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + + +/** A wallet belonging to an account which contains a BTC balance and a list of transactions. */ +export type BtcWalletTransactionsByPaymentHashArgs = { + paymentHash: Scalars['PaymentHash']['input']; +}; + +export type BuildInformation = { + readonly __typename: 'BuildInformation'; + readonly commitHash?: Maybe; + readonly helmRevision?: Maybe; +}; + +export type CallbackEndpoint = { + readonly __typename: 'CallbackEndpoint'; + readonly id: Scalars['EndpointId']['output']; + readonly url: Scalars['EndpointUrl']['output']; +}; + +export type CallbackEndpointAddInput = { + /** callback endpoint to be called */ + readonly url: Scalars['EndpointUrl']['input']; +}; + +export type CallbackEndpointAddPayload = { + readonly __typename: 'CallbackEndpointAddPayload'; + readonly errors: ReadonlyArray; + readonly id?: Maybe; +}; + +export type CallbackEndpointDeleteInput = { + readonly id: Scalars['EndpointId']['input']; +}; + +export type CaptchaCreateChallengePayload = { + readonly __typename: 'CaptchaCreateChallengePayload'; + readonly errors: ReadonlyArray; + readonly result?: Maybe; +}; + +export type CaptchaCreateChallengeResult = { + readonly __typename: 'CaptchaCreateChallengeResult'; + readonly challengeCode: Scalars['String']['output']; + readonly failbackMode: Scalars['Boolean']['output']; + readonly id: Scalars['String']['output']; + readonly newCaptcha: Scalars['Boolean']['output']; +}; + +export type CaptchaRequestAuthCodeInput = { + readonly challengeCode: Scalars['String']['input']; + readonly channel?: InputMaybe; + readonly phone: Scalars['Phone']['input']; + readonly secCode: Scalars['String']['input']; + readonly validationCode: Scalars['String']['input']; +}; + +export type CentAmountPayload = { + readonly __typename: 'CentAmountPayload'; + readonly amount?: Maybe; + readonly errors: ReadonlyArray; +}; + +export type ConsumerAccount = Account & { + readonly __typename: 'ConsumerAccount'; + readonly callbackEndpoints: ReadonlyArray; + /** return CSV stream, base64 encoded, of the list of transactions in the wallet */ + readonly csvTransactions: Scalars['String']['output']; + readonly defaultWallet: PublicWallet; + readonly defaultWalletId: Scalars['WalletId']['output']; + readonly displayCurrency: Scalars['DisplayCurrency']['output']; + readonly id: Scalars['ID']['output']; + /** A list of all invoices associated with walletIds optionally passed. */ + readonly invoices?: Maybe; + readonly level: AccountLevel; + readonly limits: AccountLimits; + readonly notificationSettings: NotificationSettings; + readonly pendingIncomingTransactions: ReadonlyArray; + /** List the quiz questions of the consumer account */ + readonly quiz: ReadonlyArray; + readonly realtimePrice: RealtimePrice; + /** A list of all transactions associated with walletIds optionally passed. */ + readonly transactions?: Maybe; + readonly walletById: Wallet; + readonly wallets: ReadonlyArray; +}; + + +export type ConsumerAccountCsvTransactionsArgs = { + walletIds: ReadonlyArray; +}; + + +export type ConsumerAccountInvoicesArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + walletIds?: InputMaybe>>; +}; + + +export type ConsumerAccountPendingIncomingTransactionsArgs = { + walletIds?: InputMaybe>>; +}; + + +export type ConsumerAccountTransactionsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + walletIds?: InputMaybe>>; +}; + + +export type ConsumerAccountWalletByIdArgs = { + walletId: Scalars['WalletId']['input']; +}; + +export type Coordinates = { + readonly __typename: 'Coordinates'; + readonly latitude: Scalars['Float']['output']; + readonly longitude: Scalars['Float']['output']; +}; + +export type Country = { + readonly __typename: 'Country'; + readonly id: Scalars['CountryCode']['output']; + readonly supportedAuthChannels: ReadonlyArray; +}; + +export type Currency = { + readonly __typename: 'Currency'; + readonly flag: Scalars['String']['output']; + readonly fractionDigits: Scalars['Int']['output']; + readonly id: Scalars['ID']['output']; + readonly name: Scalars['String']['output']; + readonly symbol: Scalars['String']['output']; +}; + +export type DepositFeesInformation = { + readonly __typename: 'DepositFeesInformation'; + readonly minBankFee: Scalars['String']['output']; + /** below this amount minBankFee will be charged */ + readonly minBankFeeThreshold: Scalars['String']['output']; + /** ratio to charge as basis points above minBankFeeThreshold amount */ + readonly ratio: Scalars['String']['output']; +}; + +export type DeviceNotificationTokenCreateInput = { + readonly deviceToken: Scalars['String']['input']; +}; + +export type Email = { + readonly __typename: 'Email'; + readonly address?: Maybe; + readonly verified?: Maybe; +}; + +export type Error = { + readonly code?: Maybe; + readonly message: Scalars['String']['output']; + readonly path?: Maybe>>; +}; + +export const ExchangeCurrencyUnit = { + Btcsat: 'BTCSAT', + Usdcent: 'USDCENT' +} as const; + +export type ExchangeCurrencyUnit = typeof ExchangeCurrencyUnit[keyof typeof ExchangeCurrencyUnit]; +export type FeedbackSubmitInput = { + readonly feedback: Scalars['Feedback']['input']; +}; + +export type FeesInformation = { + readonly __typename: 'FeesInformation'; + readonly deposit: DepositFeesInformation; +}; + +/** Provides global settings for the application which might have an impact for the user. */ +export type Globals = { + readonly __typename: 'Globals'; + readonly buildInformation: BuildInformation; + readonly feesInformation: FeesInformation; + /** The domain name for lightning addresses accepted by this Galoy instance */ + readonly lightningAddressDomain: Scalars['String']['output']; + readonly lightningAddressDomainAliases: ReadonlyArray; + /** Which network (mainnet, testnet, regtest, signet) this instance is running on. */ + readonly network: Network; + /** + * A list of public keys for the running lightning nodes. + * This can be used to know if an invoice belongs to one of our nodes. + */ + readonly nodesIds: ReadonlyArray; + /** A list of countries and their supported auth channels */ + readonly supportedCountries: ReadonlyArray; +}; + +export type GraphQlApplicationError = Error & { + readonly __typename: 'GraphQLApplicationError'; + readonly code?: Maybe; + readonly message: Scalars['String']['output']; + readonly path?: Maybe>>; +}; + +export type InitiationVia = InitiationViaIntraLedger | InitiationViaLn | InitiationViaOnChain; + +export type InitiationViaIntraLedger = { + readonly __typename: 'InitiationViaIntraLedger'; + readonly counterPartyUsername?: Maybe; + readonly counterPartyWalletId?: Maybe; +}; + +export type InitiationViaLn = { + readonly __typename: 'InitiationViaLn'; + readonly paymentHash: Scalars['PaymentHash']['output']; + /** Bolt11 invoice */ + readonly paymentRequest: Scalars['LnPaymentRequest']['output']; +}; + +export type InitiationViaOnChain = { + readonly __typename: 'InitiationViaOnChain'; + readonly address: Scalars['OnChainAddress']['output']; +}; + +export type IntraLedgerPaymentSendInput = { + /** Amount in satoshis. */ + readonly amount: Scalars['SatAmount']['input']; + /** Optional memo to be attached to the payment. */ + readonly memo?: InputMaybe; + readonly recipientWalletId: Scalars['WalletId']['input']; + /** The wallet ID of the sender. */ + readonly walletId: Scalars['WalletId']['input']; +}; + +export type IntraLedgerUpdate = { + readonly __typename: 'IntraLedgerUpdate'; + /** @deprecated Deprecated in favor of transaction */ + readonly amount: Scalars['SatAmount']['output']; + /** @deprecated Deprecated in favor of transaction */ + readonly displayCurrencyPerSat: Scalars['Float']['output']; + readonly transaction: Transaction; + readonly txNotificationType: TxNotificationType; + /** @deprecated updated over displayCurrencyPerSat */ + readonly usdPerSat: Scalars['Float']['output']; + /** @deprecated Deprecated in favor of transaction */ + readonly walletId: Scalars['WalletId']['output']; +}; + +export type IntraLedgerUsdPaymentSendInput = { + /** Amount in cents. */ + readonly amount: Scalars['CentAmount']['input']; + /** Optional memo to be attached to the payment. */ + readonly memo?: InputMaybe; + readonly recipientWalletId: Scalars['WalletId']['input']; + /** The wallet ID of the sender. */ + readonly walletId: Scalars['WalletId']['input']; +}; + +/** A lightning invoice. */ +export type Invoice = { + readonly createdAt: Scalars['Timestamp']['output']; + /** The payment hash of the lightning invoice. */ + readonly paymentHash: Scalars['PaymentHash']['output']; + /** The bolt11 invoice to be paid. */ + readonly paymentRequest: Scalars['LnPaymentRequest']['output']; + /** The payment secret of the lightning invoice. This is not the preimage of the payment hash. */ + readonly paymentSecret: Scalars['LnPaymentSecret']['output']; + /** The payment status of the invoice. */ + readonly paymentStatus: InvoicePaymentStatus; +}; + +/** A connection to a list of items. */ +export type InvoiceConnection = { + readonly __typename: 'InvoiceConnection'; + /** A list of edges. */ + readonly edges?: Maybe>; + /** Information to aid in pagination. */ + readonly pageInfo: PageInfo; +}; + +/** An edge in a connection. */ +export type InvoiceEdge = { + readonly __typename: 'InvoiceEdge'; + /** A cursor for use in pagination */ + readonly cursor: Scalars['String']['output']; + /** The item at the end of the edge */ + readonly node: Invoice; +}; + +export const InvoicePaymentStatus = { + Expired: 'EXPIRED', + Paid: 'PAID', + Pending: 'PENDING' +} as const; + +export type InvoicePaymentStatus = typeof InvoicePaymentStatus[keyof typeof InvoicePaymentStatus]; +export type LnAddressPaymentSendInput = { + /** Amount in satoshis. */ + readonly amount: Scalars['SatAmount']['input']; + /** Lightning address to send to. */ + readonly lnAddress: Scalars['String']['input']; + /** Wallet ID to send bitcoin from. */ + readonly walletId: Scalars['WalletId']['input']; +}; + +export type LnInvoice = Invoice & { + readonly __typename: 'LnInvoice'; + readonly createdAt: Scalars['Timestamp']['output']; + readonly paymentHash: Scalars['PaymentHash']['output']; + readonly paymentRequest: Scalars['LnPaymentRequest']['output']; + readonly paymentSecret: Scalars['LnPaymentSecret']['output']; + readonly paymentStatus: InvoicePaymentStatus; + readonly satoshis: Scalars['SatAmount']['output']; +}; + +export type LnInvoiceCreateInput = { + /** Amount in satoshis. */ + readonly amount: Scalars['SatAmount']['input']; + /** Optional invoice expiration time in minutes. */ + readonly expiresIn?: InputMaybe; + /** Optional memo for the lightning invoice. */ + readonly memo?: InputMaybe; + /** Wallet ID for a BTC wallet belonging to the current account. */ + readonly walletId: Scalars['WalletId']['input']; +}; + +export type LnInvoiceCreateOnBehalfOfRecipientInput = { + /** Amount in satoshis. */ + readonly amount: Scalars['SatAmount']['input']; + readonly descriptionHash?: InputMaybe; + /** Optional invoice expiration time in minutes. */ + readonly expiresIn?: InputMaybe; + /** Optional memo for the lightning invoice. */ + readonly memo?: InputMaybe; + /** Wallet ID for a BTC wallet which belongs to any account. */ + readonly recipientWalletId: Scalars['WalletId']['input']; +}; + +export type LnInvoiceFeeProbeInput = { + readonly paymentRequest: Scalars['LnPaymentRequest']['input']; + readonly walletId: Scalars['WalletId']['input']; +}; + +export type LnInvoicePayload = { + readonly __typename: 'LnInvoicePayload'; + readonly errors: ReadonlyArray; + readonly invoice?: Maybe; +}; + +export type LnInvoicePaymentInput = { + /** Optional memo to associate with the lightning invoice. */ + readonly memo?: InputMaybe; + /** Payment request representing the invoice which is being paid. */ + readonly paymentRequest: Scalars['LnPaymentRequest']['input']; + /** Wallet ID with sufficient balance to cover amount of invoice. Must belong to the account of the current user. */ + readonly walletId: Scalars['WalletId']['input']; +}; + +export type LnInvoicePaymentStatusInput = { + readonly paymentRequest: Scalars['LnPaymentRequest']['input']; +}; + +export type LnInvoicePaymentStatusPayload = { + readonly __typename: 'LnInvoicePaymentStatusPayload'; + readonly errors: ReadonlyArray; + readonly status?: Maybe; +}; + +export type LnNoAmountInvoice = Invoice & { + readonly __typename: 'LnNoAmountInvoice'; + readonly createdAt: Scalars['Timestamp']['output']; + readonly paymentHash: Scalars['PaymentHash']['output']; + readonly paymentRequest: Scalars['LnPaymentRequest']['output']; + readonly paymentSecret: Scalars['LnPaymentSecret']['output']; + readonly paymentStatus: InvoicePaymentStatus; +}; + +export type LnNoAmountInvoiceCreateInput = { + /** Optional invoice expiration time in minutes. */ + readonly expiresIn?: InputMaybe; + /** Optional memo for the lightning invoice. */ + readonly memo?: InputMaybe; + /** ID for either a USD or BTC wallet belonging to the account of the current user. */ + readonly walletId: Scalars['WalletId']['input']; +}; + +export type LnNoAmountInvoiceCreateOnBehalfOfRecipientInput = { + /** Optional invoice expiration time in minutes. */ + readonly expiresIn?: InputMaybe; + /** Optional memo for the lightning invoice. */ + readonly memo?: InputMaybe; + /** ID for either a USD or BTC wallet which belongs to the account of any user. */ + readonly recipientWalletId: Scalars['WalletId']['input']; +}; + +export type LnNoAmountInvoiceFeeProbeInput = { + readonly amount: Scalars['SatAmount']['input']; + readonly paymentRequest: Scalars['LnPaymentRequest']['input']; + readonly walletId: Scalars['WalletId']['input']; +}; + +export type LnNoAmountInvoicePayload = { + readonly __typename: 'LnNoAmountInvoicePayload'; + readonly errors: ReadonlyArray; + readonly invoice?: Maybe; +}; + +export type LnNoAmountInvoicePaymentInput = { + /** Amount to pay in satoshis. */ + readonly amount: Scalars['SatAmount']['input']; + /** Optional memo to associate with the lightning invoice. */ + readonly memo?: InputMaybe; + /** Payment request representing the invoice which is being paid. */ + readonly paymentRequest: Scalars['LnPaymentRequest']['input']; + /** Wallet ID with sufficient balance to cover amount defined in mutation request. Must belong to the account of the current user. */ + readonly walletId: Scalars['WalletId']['input']; +}; + +export type LnNoAmountUsdInvoiceFeeProbeInput = { + readonly amount: Scalars['CentAmount']['input']; + readonly paymentRequest: Scalars['LnPaymentRequest']['input']; + readonly walletId: Scalars['WalletId']['input']; +}; + +export type LnNoAmountUsdInvoicePaymentInput = { + /** Amount to pay in USD cents. */ + readonly amount: Scalars['CentAmount']['input']; + /** Optional memo to associate with the lightning invoice. */ + readonly memo?: InputMaybe; + /** Payment request representing the invoice which is being paid. */ + readonly paymentRequest: Scalars['LnPaymentRequest']['input']; + /** Wallet ID with sufficient balance to cover amount defined in mutation request. Must belong to the account of the current user. */ + readonly walletId: Scalars['WalletId']['input']; +}; + +export type LnUpdate = { + readonly __typename: 'LnUpdate'; + /** @deprecated Deprecated in favor of transaction */ + readonly paymentHash: Scalars['PaymentHash']['output']; + readonly status: InvoicePaymentStatus; + readonly transaction: Transaction; + /** @deprecated Deprecated in favor of transaction */ + readonly walletId: Scalars['WalletId']['output']; +}; + +export type LnUsdInvoiceBtcDenominatedCreateOnBehalfOfRecipientInput = { + /** Amount in satoshis. */ + readonly amount: Scalars['SatAmount']['input']; + readonly descriptionHash?: InputMaybe; + /** Optional invoice expiration time in minutes. */ + readonly expiresIn?: InputMaybe; + /** Optional memo for the lightning invoice. Acts as a note to the recipient. */ + readonly memo?: InputMaybe; + /** Wallet ID for a USD wallet which belongs to the account of any user. */ + readonly recipientWalletId: Scalars['WalletId']['input']; +}; + +export type LnUsdInvoiceCreateInput = { + /** Amount in USD cents. */ + readonly amount: Scalars['CentAmount']['input']; + /** Optional invoice expiration time in minutes. */ + readonly expiresIn?: InputMaybe; + /** Optional memo for the lightning invoice. */ + readonly memo?: InputMaybe; + /** Wallet ID for a USD wallet belonging to the current user. */ + readonly walletId: Scalars['WalletId']['input']; +}; + +export type LnUsdInvoiceCreateOnBehalfOfRecipientInput = { + /** Amount in USD cents. */ + readonly amount: Scalars['CentAmount']['input']; + readonly descriptionHash?: InputMaybe; + /** Optional invoice expiration time in minutes. */ + readonly expiresIn?: InputMaybe; + /** Optional memo for the lightning invoice. Acts as a note to the recipient. */ + readonly memo?: InputMaybe; + /** Wallet ID for a USD wallet which belongs to the account of any user. */ + readonly recipientWalletId: Scalars['WalletId']['input']; +}; + +export type LnUsdInvoiceFeeProbeInput = { + readonly paymentRequest: Scalars['LnPaymentRequest']['input']; + readonly walletId: Scalars['WalletId']['input']; +}; + +export type LnurlPaymentSendInput = { + /** Amount in satoshis. */ + readonly amount: Scalars['SatAmount']['input']; + /** Lnurl string to send to. */ + readonly lnurl: Scalars['String']['input']; + /** Wallet ID to send bitcoin from. */ + readonly walletId: Scalars['WalletId']['input']; +}; + +export type MapInfo = { + readonly __typename: 'MapInfo'; + readonly coordinates: Coordinates; + readonly title: Scalars['String']['output']; +}; + +export type MapMarker = { + readonly __typename: 'MapMarker'; + readonly mapInfo: MapInfo; + readonly username: Scalars['Username']['output']; +}; + +export type Merchant = { + readonly __typename: 'Merchant'; + /** GPS coordinates for the merchant that can be used to place the related business on a map */ + readonly coordinates: Coordinates; + readonly createdAt: Scalars['Timestamp']['output']; + readonly id: Scalars['ID']['output']; + readonly title: Scalars['String']['output']; + /** The username of the merchant */ + readonly username: Scalars['Username']['output']; + /** Whether the merchant has been validated */ + readonly validated: Scalars['Boolean']['output']; +}; + +export type MerchantMapSuggestInput = { + readonly latitude: Scalars['Float']['input']; + readonly longitude: Scalars['Float']['input']; + readonly title: Scalars['String']['input']; + readonly username: Scalars['Username']['input']; +}; + +export type MerchantPayload = { + readonly __typename: 'MerchantPayload'; + readonly errors: ReadonlyArray; + readonly merchant?: Maybe; +}; + +export type MobileVersions = { + readonly __typename: 'MobileVersions'; + readonly currentSupported: Scalars['Int']['output']; + readonly minSupported: Scalars['Int']['output']; + readonly platform: Scalars['String']['output']; +}; + +export type Mutation = { + readonly __typename: 'Mutation'; + readonly accountDelete: AccountDeletePayload; + readonly accountDisableNotificationCategory: AccountUpdateNotificationSettingsPayload; + readonly accountDisableNotificationChannel: AccountUpdateNotificationSettingsPayload; + readonly accountEnableNotificationCategory: AccountUpdateNotificationSettingsPayload; + readonly accountEnableNotificationChannel: AccountUpdateNotificationSettingsPayload; + readonly accountUpdateDefaultWalletId: AccountUpdateDefaultWalletIdPayload; + readonly accountUpdateDisplayCurrency: AccountUpdateDisplayCurrencyPayload; + readonly callbackEndpointAdd: CallbackEndpointAddPayload; + readonly callbackEndpointDelete: SuccessPayload; + readonly captchaCreateChallenge: CaptchaCreateChallengePayload; + readonly captchaRequestAuthCode: SuccessPayload; + readonly deviceNotificationTokenCreate: SuccessPayload; + readonly feedbackSubmit: SuccessPayload; + /** + * Actions a payment which is internal to the ledger e.g. it does + * not use onchain/lightning. Returns payment status (success, + * failed, pending, already_paid). + */ + readonly intraLedgerPaymentSend: PaymentSendPayload; + /** + * Actions a payment which is internal to the ledger e.g. it does + * not use onchain/lightning. Returns payment status (success, + * failed, pending, already_paid). + */ + readonly intraLedgerUsdPaymentSend: PaymentSendPayload; + /** Sends a payment to a lightning address. */ + readonly lnAddressPaymentSend: PaymentSendPayload; + /** + * Returns a lightning invoice for an associated wallet. + * When invoice is paid the value will be credited to a BTC wallet. + * Expires after 'expiresIn' or 24 hours. + */ + readonly lnInvoiceCreate: LnInvoicePayload; + /** + * Returns a lightning invoice for an associated wallet. + * When invoice is paid the value will be credited to a BTC wallet. + * Expires after 'expiresIn' or 24 hours. + */ + readonly lnInvoiceCreateOnBehalfOfRecipient: LnInvoicePayload; + readonly lnInvoiceFeeProbe: SatAmountPayload; + /** + * Pay a lightning invoice using a balance from a wallet which is owned by the account of the current user. + * Provided wallet can be USD or BTC and must have sufficient balance to cover amount in lightning invoice. + * Returns payment status (success, failed, pending, already_paid). + */ + readonly lnInvoicePaymentSend: PaymentSendPayload; + /** + * Returns a lightning invoice for an associated wallet. + * Can be used to receive any supported currency value (currently USD or BTC). + * Expires after 'expiresIn' or 24 hours for BTC invoices or 5 minutes for USD invoices. + */ + readonly lnNoAmountInvoiceCreate: LnNoAmountInvoicePayload; + /** + * Returns a lightning invoice for an associated wallet. + * Can be used to receive any supported currency value (currently USD or BTC). + * Expires after 'expiresIn' or 24 hours for BTC invoices or 5 minutes for USD invoices. + */ + readonly lnNoAmountInvoiceCreateOnBehalfOfRecipient: LnNoAmountInvoicePayload; + readonly lnNoAmountInvoiceFeeProbe: SatAmountPayload; + /** + * Pay a lightning invoice using a balance from a wallet which is owned by the account of the current user. + * Provided wallet must be BTC and must have sufficient balance to cover amount specified in mutation request. + * Returns payment status (success, failed, pending, already_paid). + */ + readonly lnNoAmountInvoicePaymentSend: PaymentSendPayload; + readonly lnNoAmountUsdInvoiceFeeProbe: CentAmountPayload; + /** + * Pay a lightning invoice using a balance from a wallet which is owned by the account of the current user. + * Provided wallet must be USD and have sufficient balance to cover amount specified in mutation request. + * Returns payment status (success, failed, pending, already_paid). + */ + readonly lnNoAmountUsdInvoicePaymentSend: PaymentSendPayload; + /** + * Returns a lightning invoice denominated in satoshis for an associated wallet. + * When invoice is paid the equivalent value at invoice creation will be credited to a USD wallet. + * Expires after 'expiresIn' or 5 minutes (short expiry time because there is a USD/BTC exchange rate + * associated with the amount). + */ + readonly lnUsdInvoiceBtcDenominatedCreateOnBehalfOfRecipient: LnInvoicePayload; + /** + * Returns a lightning invoice denominated in satoshis for an associated wallet. + * When invoice is paid the equivalent value at invoice creation will be credited to a USD wallet. + * Expires after 'expiresIn' or 5 minutes (short expiry time because there is a USD/BTC exchange rate + * associated with the amount). + */ + readonly lnUsdInvoiceCreate: LnInvoicePayload; + /** + * Returns a lightning invoice denominated in satoshis for an associated wallet. + * When invoice is paid the equivalent value at invoice creation will be credited to a USD wallet. + * Expires after 'expiresIn' or 5 minutes (short expiry time because there is a USD/BTC exchange rate + * associated with the amount). + */ + readonly lnUsdInvoiceCreateOnBehalfOfRecipient: LnInvoicePayload; + readonly lnUsdInvoiceFeeProbe: SatAmountPayload; + /** Sends a payment to a lightning address. */ + readonly lnurlPaymentSend: PaymentSendPayload; + readonly merchantMapSuggest: MerchantPayload; + readonly onChainAddressCreate: OnChainAddressPayload; + readonly onChainAddressCurrent: OnChainAddressPayload; + readonly onChainPaymentSend: PaymentSendPayload; + readonly onChainPaymentSendAll: PaymentSendPayload; + readonly onChainUsdPaymentSend: PaymentSendPayload; + readonly onChainUsdPaymentSendAsBtcDenominated: PaymentSendPayload; + readonly quizClaim: QuizClaimPayload; + /** @deprecated Use quizClaim instead */ + readonly quizCompleted: QuizCompletedPayload; + /** @deprecated will be moved to AccountContact */ + readonly userContactUpdateAlias: UserContactUpdateAliasPayload; + readonly userEmailDelete: UserEmailDeletePayload; + readonly userEmailRegistrationInitiate: UserEmailRegistrationInitiatePayload; + readonly userEmailRegistrationValidate: UserEmailRegistrationValidatePayload; + readonly userLogin: AuthTokenPayload; + readonly userLoginUpgrade: UpgradePayload; + readonly userLogout: SuccessPayload; + readonly userPhoneDelete: UserPhoneDeletePayload; + readonly userPhoneRegistrationInitiate: SuccessPayload; + readonly userPhoneRegistrationValidate: UserPhoneRegistrationValidatePayload; + readonly userTotpDelete: UserTotpDeletePayload; + readonly userTotpRegistrationInitiate: UserTotpRegistrationInitiatePayload; + readonly userTotpRegistrationValidate: UserTotpRegistrationValidatePayload; + readonly userUpdateLanguage: UserUpdateLanguagePayload; + /** @deprecated Username will be moved to @Handle in Accounts. Also SetUsername naming should be used instead of UpdateUsername to reflect the idempotency of Handles */ + readonly userUpdateUsername: UserUpdateUsernamePayload; +}; + + +export type MutationAccountDisableNotificationCategoryArgs = { + input: AccountDisableNotificationCategoryInput; +}; + + +export type MutationAccountDisableNotificationChannelArgs = { + input: AccountDisableNotificationChannelInput; +}; + + +export type MutationAccountEnableNotificationCategoryArgs = { + input: AccountEnableNotificationCategoryInput; +}; + + +export type MutationAccountEnableNotificationChannelArgs = { + input: AccountEnableNotificationChannelInput; +}; + + +export type MutationAccountUpdateDefaultWalletIdArgs = { + input: AccountUpdateDefaultWalletIdInput; +}; + + +export type MutationAccountUpdateDisplayCurrencyArgs = { + input: AccountUpdateDisplayCurrencyInput; +}; + + +export type MutationCallbackEndpointAddArgs = { + input: CallbackEndpointAddInput; +}; + + +export type MutationCallbackEndpointDeleteArgs = { + input: CallbackEndpointDeleteInput; +}; + + +export type MutationCaptchaRequestAuthCodeArgs = { + input: CaptchaRequestAuthCodeInput; +}; + + +export type MutationDeviceNotificationTokenCreateArgs = { + input: DeviceNotificationTokenCreateInput; +}; + + +export type MutationFeedbackSubmitArgs = { + input: FeedbackSubmitInput; +}; + + +export type MutationIntraLedgerPaymentSendArgs = { + input: IntraLedgerPaymentSendInput; +}; + + +export type MutationIntraLedgerUsdPaymentSendArgs = { + input: IntraLedgerUsdPaymentSendInput; +}; + + +export type MutationLnAddressPaymentSendArgs = { + input: LnAddressPaymentSendInput; +}; + + +export type MutationLnInvoiceCreateArgs = { + input: LnInvoiceCreateInput; +}; + + +export type MutationLnInvoiceCreateOnBehalfOfRecipientArgs = { + input: LnInvoiceCreateOnBehalfOfRecipientInput; +}; + + +export type MutationLnInvoiceFeeProbeArgs = { + input: LnInvoiceFeeProbeInput; +}; + + +export type MutationLnInvoicePaymentSendArgs = { + input: LnInvoicePaymentInput; +}; + + +export type MutationLnNoAmountInvoiceCreateArgs = { + input: LnNoAmountInvoiceCreateInput; +}; + + +export type MutationLnNoAmountInvoiceCreateOnBehalfOfRecipientArgs = { + input: LnNoAmountInvoiceCreateOnBehalfOfRecipientInput; +}; + + +export type MutationLnNoAmountInvoiceFeeProbeArgs = { + input: LnNoAmountInvoiceFeeProbeInput; +}; + + +export type MutationLnNoAmountInvoicePaymentSendArgs = { + input: LnNoAmountInvoicePaymentInput; +}; + + +export type MutationLnNoAmountUsdInvoiceFeeProbeArgs = { + input: LnNoAmountUsdInvoiceFeeProbeInput; +}; + + +export type MutationLnNoAmountUsdInvoicePaymentSendArgs = { + input: LnNoAmountUsdInvoicePaymentInput; +}; + + +export type MutationLnUsdInvoiceBtcDenominatedCreateOnBehalfOfRecipientArgs = { + input: LnUsdInvoiceBtcDenominatedCreateOnBehalfOfRecipientInput; +}; + + +export type MutationLnUsdInvoiceCreateArgs = { + input: LnUsdInvoiceCreateInput; +}; + + +export type MutationLnUsdInvoiceCreateOnBehalfOfRecipientArgs = { + input: LnUsdInvoiceCreateOnBehalfOfRecipientInput; +}; + + +export type MutationLnUsdInvoiceFeeProbeArgs = { + input: LnUsdInvoiceFeeProbeInput; +}; + + +export type MutationLnurlPaymentSendArgs = { + input: LnurlPaymentSendInput; +}; + + +export type MutationMerchantMapSuggestArgs = { + input: MerchantMapSuggestInput; +}; + + +export type MutationOnChainAddressCreateArgs = { + input: OnChainAddressCreateInput; +}; + + +export type MutationOnChainAddressCurrentArgs = { + input: OnChainAddressCurrentInput; +}; + + +export type MutationOnChainPaymentSendArgs = { + input: OnChainPaymentSendInput; +}; + + +export type MutationOnChainPaymentSendAllArgs = { + input: OnChainPaymentSendAllInput; +}; + + +export type MutationOnChainUsdPaymentSendArgs = { + input: OnChainUsdPaymentSendInput; +}; + + +export type MutationOnChainUsdPaymentSendAsBtcDenominatedArgs = { + input: OnChainUsdPaymentSendAsBtcDenominatedInput; +}; + + +export type MutationQuizClaimArgs = { + input: QuizClaimInput; +}; + + +export type MutationQuizCompletedArgs = { + input: QuizCompletedInput; +}; + + +export type MutationUserContactUpdateAliasArgs = { + input: UserContactUpdateAliasInput; +}; + + +export type MutationUserEmailRegistrationInitiateArgs = { + input: UserEmailRegistrationInitiateInput; +}; + + +export type MutationUserEmailRegistrationValidateArgs = { + input: UserEmailRegistrationValidateInput; +}; + + +export type MutationUserLoginArgs = { + input: UserLoginInput; +}; + + +export type MutationUserLoginUpgradeArgs = { + input: UserLoginUpgradeInput; +}; + + +export type MutationUserLogoutArgs = { + input?: InputMaybe; +}; + + +export type MutationUserPhoneRegistrationInitiateArgs = { + input: UserPhoneRegistrationInitiateInput; +}; + + +export type MutationUserPhoneRegistrationValidateArgs = { + input: UserPhoneRegistrationValidateInput; +}; + + +export type MutationUserTotpRegistrationValidateArgs = { + input: UserTotpRegistrationValidateInput; +}; + + +export type MutationUserUpdateLanguageArgs = { + input: UserUpdateLanguageInput; +}; + + +export type MutationUserUpdateUsernameArgs = { + input: UserUpdateUsernameInput; +}; + +export type MyUpdatesPayload = { + readonly __typename: 'MyUpdatesPayload'; + readonly errors: ReadonlyArray; + readonly me?: Maybe; + readonly update?: Maybe; +}; + +export const Network = { + Mainnet: 'mainnet', + Regtest: 'regtest', + Signet: 'signet', + Testnet: 'testnet' +} as const; + +export type Network = typeof Network[keyof typeof Network]; +export const NotificationChannel = { + Push: 'PUSH' +} as const; + +export type NotificationChannel = typeof NotificationChannel[keyof typeof NotificationChannel]; +export type NotificationChannelSettings = { + readonly __typename: 'NotificationChannelSettings'; + readonly disabledCategories: ReadonlyArray; + readonly enabled: Scalars['Boolean']['output']; +}; + +export type NotificationSettings = { + readonly __typename: 'NotificationSettings'; + readonly push: NotificationChannelSettings; +}; + +export type OnChainAddressCreateInput = { + readonly walletId: Scalars['WalletId']['input']; +}; + +export type OnChainAddressCurrentInput = { + readonly walletId: Scalars['WalletId']['input']; +}; + +export type OnChainAddressPayload = { + readonly __typename: 'OnChainAddressPayload'; + readonly address?: Maybe; + readonly errors: ReadonlyArray; +}; + +export type OnChainPaymentSendAllInput = { + readonly address: Scalars['OnChainAddress']['input']; + readonly memo?: InputMaybe; + readonly speed?: PayoutSpeed; + readonly walletId: Scalars['WalletId']['input']; +}; + +export type OnChainPaymentSendInput = { + readonly address: Scalars['OnChainAddress']['input']; + readonly amount: Scalars['SatAmount']['input']; + readonly memo?: InputMaybe; + readonly speed?: PayoutSpeed; + readonly walletId: Scalars['WalletId']['input']; +}; + +export type OnChainTxFee = { + readonly __typename: 'OnChainTxFee'; + readonly amount: Scalars['SatAmount']['output']; +}; + +export type OnChainUpdate = { + readonly __typename: 'OnChainUpdate'; + /** @deprecated Deprecated in favor of transaction */ + readonly amount: Scalars['SatAmount']['output']; + /** @deprecated Deprecated in favor of transaction */ + readonly displayCurrencyPerSat: Scalars['Float']['output']; + readonly transaction: Transaction; + /** @deprecated Deprecated in favor of transaction */ + readonly txHash: Scalars['OnChainTxHash']['output']; + readonly txNotificationType: TxNotificationType; + /** @deprecated updated over displayCurrencyPerSat */ + readonly usdPerSat: Scalars['Float']['output']; + /** @deprecated Deprecated in favor of transaction */ + readonly walletId: Scalars['WalletId']['output']; +}; + +export type OnChainUsdPaymentSendAsBtcDenominatedInput = { + readonly address: Scalars['OnChainAddress']['input']; + readonly amount: Scalars['SatAmount']['input']; + readonly memo?: InputMaybe; + readonly speed?: PayoutSpeed; + readonly walletId: Scalars['WalletId']['input']; +}; + +export type OnChainUsdPaymentSendInput = { + readonly address: Scalars['OnChainAddress']['input']; + readonly amount: Scalars['CentAmount']['input']; + readonly memo?: InputMaybe; + readonly speed?: PayoutSpeed; + readonly walletId: Scalars['WalletId']['input']; +}; + +export type OnChainUsdTxFee = { + readonly __typename: 'OnChainUsdTxFee'; + readonly amount: Scalars['CentAmount']['output']; +}; + +export type OneDayAccountLimit = AccountLimit & { + readonly __typename: 'OneDayAccountLimit'; + /** The rolling time interval value in seconds for the current 24 hour period. */ + readonly interval?: Maybe; + /** The amount of cents remaining below the limit for the current 24 hour period. */ + readonly remainingLimit?: Maybe; + /** The current maximum limit for a given 24 hour period. */ + readonly totalLimit: Scalars['CentAmount']['output']; +}; + +/** Information about pagination in a connection. */ +export type PageInfo = { + readonly __typename: 'PageInfo'; + /** When paginating forwards, the cursor to continue. */ + readonly endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + readonly hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + readonly hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + readonly startCursor?: Maybe; +}; + +export type PaymentSendPayload = { + readonly __typename: 'PaymentSendPayload'; + readonly errors: ReadonlyArray; + readonly status?: Maybe; + readonly transaction?: Maybe; +}; + +export const PaymentSendResult = { + AlreadyPaid: 'ALREADY_PAID', + Failure: 'FAILURE', + Pending: 'PENDING', + Success: 'SUCCESS' +} as const; + +export type PaymentSendResult = typeof PaymentSendResult[keyof typeof PaymentSendResult]; +export const PayoutSpeed = { + Fast: 'FAST' +} as const; + +export type PayoutSpeed = typeof PayoutSpeed[keyof typeof PayoutSpeed]; +export const PhoneCodeChannelType = { + Sms: 'SMS', + Whatsapp: 'WHATSAPP' +} as const; + +export type PhoneCodeChannelType = typeof PhoneCodeChannelType[keyof typeof PhoneCodeChannelType]; +/** Price amount expressed in base/offset. To calculate, use: `base / 10^offset` */ +export type Price = { + readonly __typename: 'Price'; + readonly base: Scalars['SafeInt']['output']; + readonly currencyUnit: Scalars['String']['output']; + readonly formattedAmount: Scalars['String']['output']; + readonly offset: Scalars['Int']['output']; +}; + +/** The range for the X axis in the BTC price graph */ +export const PriceGraphRange = { + FiveYears: 'FIVE_YEARS', + OneDay: 'ONE_DAY', + OneMonth: 'ONE_MONTH', + OneWeek: 'ONE_WEEK', + OneYear: 'ONE_YEAR' +} as const; + +export type PriceGraphRange = typeof PriceGraphRange[keyof typeof PriceGraphRange]; +export type PriceInput = { + readonly amount: Scalars['SatAmount']['input']; + readonly amountCurrencyUnit: ExchangeCurrencyUnit; + readonly priceCurrencyUnit: ExchangeCurrencyUnit; +}; + +export type PriceInterface = { + readonly base: Scalars['SafeInt']['output']; + /** @deprecated Deprecated due to type renaming */ + readonly currencyUnit: Scalars['String']['output']; + readonly offset: Scalars['Int']['output']; +}; + +/** Price of 1 sat in base/offset. To calculate, use: `base / 10^offset` */ +export type PriceOfOneSatInMinorUnit = PriceInterface & { + readonly __typename: 'PriceOfOneSatInMinorUnit'; + readonly base: Scalars['SafeInt']['output']; + /** @deprecated Deprecated due to type renaming */ + readonly currencyUnit: Scalars['String']['output']; + readonly offset: Scalars['Int']['output']; +}; + +/** Price of 1 sat or 1 usd cent in base/offset. To calculate, use: `base / 10^offset` */ +export type PriceOfOneSettlementMinorUnitInDisplayMinorUnit = PriceInterface & { + readonly __typename: 'PriceOfOneSettlementMinorUnitInDisplayMinorUnit'; + readonly base: Scalars['SafeInt']['output']; + /** @deprecated Deprecated due to type renaming */ + readonly currencyUnit: Scalars['String']['output']; + /** @deprecated Deprecated please use `base / 10^offset` */ + readonly formattedAmount: Scalars['String']['output']; + readonly offset: Scalars['Int']['output']; +}; + +/** Price of 1 usd cent in base/offset. To calculate, use: `base / 10^offset` */ +export type PriceOfOneUsdCentInMinorUnit = PriceInterface & { + readonly __typename: 'PriceOfOneUsdCentInMinorUnit'; + readonly base: Scalars['SafeInt']['output']; + /** @deprecated Deprecated due to type renaming */ + readonly currencyUnit: Scalars['String']['output']; + readonly offset: Scalars['Int']['output']; +}; + +export type PricePayload = { + readonly __typename: 'PricePayload'; + readonly errors: ReadonlyArray; + readonly price?: Maybe; +}; + +export type PricePoint = { + readonly __typename: 'PricePoint'; + readonly price: Price; + /** Unix timestamp (number of seconds elapsed since January 1, 1970 00:00:00 UTC) */ + readonly timestamp: Scalars['Timestamp']['output']; +}; + +/** A public view of a generic wallet which stores value in one of our supported currencies. */ +export type PublicWallet = { + readonly __typename: 'PublicWallet'; + readonly currency: WalletCurrency; + readonly id: Scalars['ID']['output']; + /** @deprecated Shifting property to 'currency' */ + readonly walletCurrency: WalletCurrency; +}; + +export type Query = { + readonly __typename: 'Query'; + readonly accountDefaultWallet: PublicWallet; + readonly btcPriceList?: Maybe>>; + readonly businessMapMarkers: ReadonlyArray; + readonly currencyList: ReadonlyArray; + readonly globals?: Maybe; + readonly lnInvoicePaymentStatus: LnInvoicePaymentStatusPayload; + readonly me?: Maybe; + readonly mobileVersions?: Maybe>>; + readonly onChainTxFee: OnChainTxFee; + readonly onChainUsdTxFee: OnChainUsdTxFee; + readonly onChainUsdTxFeeAsBtcDenominated: OnChainUsdTxFee; + /** Returns 1 Sat and 1 Usd Cent price for the given currency */ + readonly realtimePrice: RealtimePrice; + /** @deprecated will be migrated to AccountDefaultWalletId */ + readonly userDefaultWalletId: Scalars['WalletId']['output']; + readonly usernameAvailable?: Maybe; +}; + + +export type QueryAccountDefaultWalletArgs = { + username: Scalars['Username']['input']; + walletCurrency?: InputMaybe; +}; + + +export type QueryBtcPriceListArgs = { + range: PriceGraphRange; +}; + + +export type QueryLnInvoicePaymentStatusArgs = { + input: LnInvoicePaymentStatusInput; +}; + + +export type QueryOnChainTxFeeArgs = { + address: Scalars['OnChainAddress']['input']; + amount: Scalars['SatAmount']['input']; + speed?: PayoutSpeed; + walletId: Scalars['WalletId']['input']; +}; + + +export type QueryOnChainUsdTxFeeArgs = { + address: Scalars['OnChainAddress']['input']; + amount: Scalars['CentAmount']['input']; + speed?: PayoutSpeed; + walletId: Scalars['WalletId']['input']; +}; + + +export type QueryOnChainUsdTxFeeAsBtcDenominatedArgs = { + address: Scalars['OnChainAddress']['input']; + amount: Scalars['SatAmount']['input']; + speed?: PayoutSpeed; + walletId: Scalars['WalletId']['input']; +}; + + +export type QueryRealtimePriceArgs = { + currency?: InputMaybe; +}; + + +export type QueryUserDefaultWalletIdArgs = { + username: Scalars['Username']['input']; +}; + + +export type QueryUsernameAvailableArgs = { + username: Scalars['Username']['input']; +}; + +export type Quiz = { + readonly __typename: 'Quiz'; + /** The reward in Satoshis for the quiz question */ + readonly amount: Scalars['SatAmount']['output']; + readonly completed: Scalars['Boolean']['output']; + readonly id: Scalars['ID']['output']; + readonly notBefore?: Maybe; +}; + +export type QuizClaimInput = { + readonly id: Scalars['ID']['input']; +}; + +export type QuizClaimPayload = { + readonly __typename: 'QuizClaimPayload'; + readonly errors: ReadonlyArray; + readonly quizzes: ReadonlyArray; +}; + +export type QuizCompletedInput = { + readonly id: Scalars['ID']['input']; +}; + +export type QuizCompletedPayload = { + readonly __typename: 'QuizCompletedPayload'; + readonly errors: ReadonlyArray; + readonly quiz?: Maybe; +}; + +export type RealtimePrice = { + readonly __typename: 'RealtimePrice'; + readonly btcSatPrice: PriceOfOneSatInMinorUnit; + readonly denominatorCurrency: Scalars['DisplayCurrency']['output']; + readonly id: Scalars['ID']['output']; + /** Unix timestamp (number of seconds elapsed since January 1, 1970 00:00:00 UTC) */ + readonly timestamp: Scalars['Timestamp']['output']; + readonly usdCentPrice: PriceOfOneUsdCentInMinorUnit; +}; + +export type RealtimePriceInput = { + readonly currency?: InputMaybe; +}; + +export type RealtimePricePayload = { + readonly __typename: 'RealtimePricePayload'; + readonly errors: ReadonlyArray; + readonly realtimePrice?: Maybe; +}; + +export type SatAmountPayload = { + readonly __typename: 'SatAmountPayload'; + readonly amount?: Maybe; + readonly errors: ReadonlyArray; +}; + +export type SettlementVia = SettlementViaIntraLedger | SettlementViaLn | SettlementViaOnChain; + +export type SettlementViaIntraLedger = { + readonly __typename: 'SettlementViaIntraLedger'; + /** Settlement destination: Could be null if the payee does not have a username */ + readonly counterPartyUsername?: Maybe; + readonly counterPartyWalletId?: Maybe; + readonly preImage?: Maybe; +}; + +export type SettlementViaLn = { + readonly __typename: 'SettlementViaLn'; + /** @deprecated Shifting property to 'preImage' to improve granularity of the LnPaymentSecret type */ + readonly paymentSecret?: Maybe; + readonly preImage?: Maybe; +}; + +export type SettlementViaOnChain = { + readonly __typename: 'SettlementViaOnChain'; + readonly arrivalInMempoolEstimatedAt?: Maybe; + readonly transactionHash?: Maybe; + readonly vout?: Maybe; +}; + +export type Subscription = { + readonly __typename: 'Subscription'; + readonly lnInvoicePaymentStatus: LnInvoicePaymentStatusPayload; + readonly myUpdates: MyUpdatesPayload; + readonly price: PricePayload; + /** Returns the price of 1 satoshi */ + readonly realtimePrice: RealtimePricePayload; +}; + + +export type SubscriptionLnInvoicePaymentStatusArgs = { + input: LnInvoicePaymentStatusInput; +}; + + +export type SubscriptionPriceArgs = { + input: PriceInput; +}; + + +export type SubscriptionRealtimePriceArgs = { + input: RealtimePriceInput; +}; + +export type SuccessPayload = { + readonly __typename: 'SuccessPayload'; + readonly errors: ReadonlyArray; + readonly success?: Maybe; +}; + +/** + * Give details about an individual transaction. + * Galoy have a smart routing system which is automatically + * settling intraledger when both the payer and payee use the same wallet + * therefore it's possible the transactions is being initiated onchain + * or with lightning but settled intraledger. + */ +export type Transaction = { + readonly __typename: 'Transaction'; + readonly createdAt: Scalars['Timestamp']['output']; + readonly direction: TxDirection; + readonly id: Scalars['ID']['output']; + /** From which protocol the payment has been initiated. */ + readonly initiationVia: InitiationVia; + readonly memo?: Maybe; + /** Amount of the settlement currency sent or received. */ + readonly settlementAmount: Scalars['SignedAmount']['output']; + /** Wallet currency for transaction. */ + readonly settlementCurrency: WalletCurrency; + readonly settlementDisplayAmount: Scalars['SignedDisplayMajorAmount']['output']; + readonly settlementDisplayCurrency: Scalars['DisplayCurrency']['output']; + readonly settlementDisplayFee: Scalars['SignedDisplayMajorAmount']['output']; + readonly settlementFee: Scalars['SignedAmount']['output']; + /** Price in WALLETCURRENCY/SETTLEMENTUNIT at time of settlement. */ + readonly settlementPrice: PriceOfOneSettlementMinorUnitInDisplayMinorUnit; + /** To which protocol the payment has settled on. */ + readonly settlementVia: SettlementVia; + readonly status: TxStatus; +}; + +/** A connection to a list of items. */ +export type TransactionConnection = { + readonly __typename: 'TransactionConnection'; + /** A list of edges. */ + readonly edges?: Maybe>; + /** Information to aid in pagination. */ + readonly pageInfo: PageInfo; +}; + +/** An edge in a connection. */ +export type TransactionEdge = { + readonly __typename: 'TransactionEdge'; + /** A cursor for use in pagination */ + readonly cursor: Scalars['String']['output']; + /** The item at the end of the edge */ + readonly node: Transaction; +}; + +export const TxDirection = { + Receive: 'RECEIVE', + Send: 'SEND' +} as const; + +export type TxDirection = typeof TxDirection[keyof typeof TxDirection]; +export const TxNotificationType = { + IntraLedgerPayment: 'IntraLedgerPayment', + IntraLedgerReceipt: 'IntraLedgerReceipt', + LigtningReceipt: 'LigtningReceipt', + OnchainPayment: 'OnchainPayment', + OnchainReceipt: 'OnchainReceipt', + OnchainReceiptPending: 'OnchainReceiptPending' +} as const; + +export type TxNotificationType = typeof TxNotificationType[keyof typeof TxNotificationType]; +export const TxStatus = { + Failure: 'FAILURE', + Pending: 'PENDING', + Success: 'SUCCESS' +} as const; + +export type TxStatus = typeof TxStatus[keyof typeof TxStatus]; +export type UpgradePayload = { + readonly __typename: 'UpgradePayload'; + readonly authToken?: Maybe; + readonly errors: ReadonlyArray; + readonly success: Scalars['Boolean']['output']; +}; + +/** A wallet belonging to an account which contains a USD balance and a list of transactions. */ +export type UsdWallet = Wallet & { + readonly __typename: 'UsdWallet'; + readonly accountId: Scalars['ID']['output']; + readonly balance: Scalars['SignedAmount']['output']; + readonly id: Scalars['ID']['output']; + readonly invoiceByPaymentHash: Invoice; + /** A list of all invoices associated with walletIds optionally passed. */ + readonly invoices?: Maybe; + /** An unconfirmed incoming onchain balance. */ + readonly pendingIncomingBalance: Scalars['SignedAmount']['output']; + readonly pendingIncomingTransactions: ReadonlyArray; + readonly pendingIncomingTransactionsByAddress: ReadonlyArray; + readonly transactionById: Transaction; + readonly transactions?: Maybe; + readonly transactionsByAddress?: Maybe; + readonly transactionsByPaymentHash: ReadonlyArray; + readonly walletCurrency: WalletCurrency; +}; + + +/** A wallet belonging to an account which contains a USD balance and a list of transactions. */ +export type UsdWalletInvoiceByPaymentHashArgs = { + paymentHash: Scalars['PaymentHash']['input']; +}; + + +/** A wallet belonging to an account which contains a USD balance and a list of transactions. */ +export type UsdWalletInvoicesArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + + +/** A wallet belonging to an account which contains a USD balance and a list of transactions. */ +export type UsdWalletPendingIncomingTransactionsByAddressArgs = { + address: Scalars['OnChainAddress']['input']; +}; + + +/** A wallet belonging to an account which contains a USD balance and a list of transactions. */ +export type UsdWalletTransactionByIdArgs = { + transactionId: Scalars['ID']['input']; +}; + + +/** A wallet belonging to an account which contains a USD balance and a list of transactions. */ +export type UsdWalletTransactionsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + + +/** A wallet belonging to an account which contains a USD balance and a list of transactions. */ +export type UsdWalletTransactionsByAddressArgs = { + address: Scalars['OnChainAddress']['input']; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + + +/** A wallet belonging to an account which contains a USD balance and a list of transactions. */ +export type UsdWalletTransactionsByPaymentHashArgs = { + paymentHash: Scalars['PaymentHash']['input']; +}; + +export type User = { + readonly __typename: 'User'; + /** + * Get single contact details. + * Can include the transactions associated with the contact. + * @deprecated will be moved to Accounts + */ + readonly contactByUsername: UserContact; + /** + * Get full list of contacts. + * Can include the transactions associated with each contact. + * @deprecated will be moved to account + */ + readonly contacts: ReadonlyArray; + readonly createdAt: Scalars['Timestamp']['output']; + readonly defaultAccount: Account; + /** Email address */ + readonly email?: Maybe; + readonly id: Scalars['ID']['output']; + /** + * Preferred language for user. + * When value is 'default' the intent is to use preferred language from OS settings. + */ + readonly language: Scalars['Language']['output']; + /** Phone number with international calling code. */ + readonly phone?: Maybe; + /** Whether TOTP is enabled for this user. */ + readonly totpEnabled: Scalars['Boolean']['output']; + /** + * Optional immutable user friendly identifier. + * @deprecated will be moved to @Handle in Account and Wallet + */ + readonly username?: Maybe; +}; + + +export type UserContactByUsernameArgs = { + username: Scalars['Username']['input']; +}; + +export type UserContact = { + readonly __typename: 'UserContact'; + /** + * Alias the user can set for this contact. + * Only the user can see the alias attached to their contact. + */ + readonly alias?: Maybe; + readonly id: Scalars['Username']['output']; + /** Paginated list of transactions sent to/from this contact. */ + readonly transactions?: Maybe; + readonly transactionsCount: Scalars['Int']['output']; + /** Actual identifier of the contact. */ + readonly username: Scalars['Username']['output']; +}; + + +export type UserContactTransactionsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + +export type UserContactUpdateAliasInput = { + readonly alias: Scalars['ContactAlias']['input']; + readonly username: Scalars['Username']['input']; +}; + +export type UserContactUpdateAliasPayload = { + readonly __typename: 'UserContactUpdateAliasPayload'; + readonly contact?: Maybe; + readonly errors: ReadonlyArray; +}; + +export type UserEmailDeletePayload = { + readonly __typename: 'UserEmailDeletePayload'; + readonly errors: ReadonlyArray; + readonly me?: Maybe; +}; + +export type UserEmailRegistrationInitiateInput = { + readonly email: Scalars['EmailAddress']['input']; +}; + +export type UserEmailRegistrationInitiatePayload = { + readonly __typename: 'UserEmailRegistrationInitiatePayload'; + readonly emailRegistrationId?: Maybe; + readonly errors: ReadonlyArray; + readonly me?: Maybe; +}; + +export type UserEmailRegistrationValidateInput = { + readonly code: Scalars['OneTimeAuthCode']['input']; + readonly emailRegistrationId: Scalars['EmailRegistrationId']['input']; +}; + +export type UserEmailRegistrationValidatePayload = { + readonly __typename: 'UserEmailRegistrationValidatePayload'; + readonly errors: ReadonlyArray; + readonly me?: Maybe; +}; + +export type UserLoginInput = { + readonly code: Scalars['OneTimeAuthCode']['input']; + readonly phone: Scalars['Phone']['input']; +}; + +export type UserLoginUpgradeInput = { + readonly code: Scalars['OneTimeAuthCode']['input']; + readonly phone: Scalars['Phone']['input']; +}; + +export type UserLogoutInput = { + readonly deviceToken: Scalars['String']['input']; +}; + +export type UserPhoneDeletePayload = { + readonly __typename: 'UserPhoneDeletePayload'; + readonly errors: ReadonlyArray; + readonly me?: Maybe; +}; + +export type UserPhoneRegistrationInitiateInput = { + readonly channel?: InputMaybe; + readonly phone: Scalars['Phone']['input']; +}; + +export type UserPhoneRegistrationValidateInput = { + readonly code: Scalars['OneTimeAuthCode']['input']; + readonly phone: Scalars['Phone']['input']; +}; + +export type UserPhoneRegistrationValidatePayload = { + readonly __typename: 'UserPhoneRegistrationValidatePayload'; + readonly errors: ReadonlyArray; + readonly me?: Maybe; +}; + +export type UserTotpDeletePayload = { + readonly __typename: 'UserTotpDeletePayload'; + readonly errors: ReadonlyArray; + readonly me?: Maybe; +}; + +export type UserTotpRegistrationInitiatePayload = { + readonly __typename: 'UserTotpRegistrationInitiatePayload'; + readonly errors: ReadonlyArray; + readonly totpRegistrationId?: Maybe; + readonly totpSecret?: Maybe; +}; + +export type UserTotpRegistrationValidateInput = { + readonly authToken?: InputMaybe; + readonly totpCode: Scalars['TotpCode']['input']; + readonly totpRegistrationId: Scalars['TotpRegistrationId']['input']; +}; + +export type UserTotpRegistrationValidatePayload = { + readonly __typename: 'UserTotpRegistrationValidatePayload'; + readonly errors: ReadonlyArray; + readonly me?: Maybe; +}; + +export type UserUpdate = IntraLedgerUpdate | LnUpdate | OnChainUpdate | Price | RealtimePrice; + +export type UserUpdateLanguageInput = { + readonly language: Scalars['Language']['input']; +}; + +export type UserUpdateLanguagePayload = { + readonly __typename: 'UserUpdateLanguagePayload'; + readonly errors: ReadonlyArray; + readonly user?: Maybe; +}; + +export type UserUpdateUsernameInput = { + readonly username: Scalars['Username']['input']; +}; + +export type UserUpdateUsernamePayload = { + readonly __typename: 'UserUpdateUsernamePayload'; + readonly errors: ReadonlyArray; + readonly user?: Maybe; +}; + +/** A generic wallet which stores value in one of our supported currencies. */ +export type Wallet = { + readonly accountId: Scalars['ID']['output']; + readonly balance: Scalars['SignedAmount']['output']; + readonly id: Scalars['ID']['output']; + readonly invoiceByPaymentHash: Invoice; + readonly invoices?: Maybe; + readonly pendingIncomingBalance: Scalars['SignedAmount']['output']; + /** + * Pending incoming OnChain transactions. When transactions + * are confirmed they will receive a new id and be found in the transactions + * list. Transactions are ordered anti-chronologically, + * ie: the newest transaction will be first + */ + readonly pendingIncomingTransactions: ReadonlyArray; + /** + * Pending incoming OnChain transactions. When transactions + * are confirmed they will receive a new id and be found in the transactions + * list. Transactions are ordered anti-chronologically, + * ie: the newest transaction will be first + */ + readonly pendingIncomingTransactionsByAddress: ReadonlyArray; + readonly transactionById: Transaction; + /** + * Transactions are ordered anti-chronologically, + * ie: the newest transaction will be first + */ + readonly transactions?: Maybe; + /** + * Transactions are ordered anti-chronologically, + * ie: the newest transaction will be first + */ + readonly transactionsByAddress?: Maybe; + /** Returns the transactions that include this paymentHash. This should be a list of size one for a received lightning payment. This can be more that one transaction for a sent lightning payment. */ + readonly transactionsByPaymentHash: ReadonlyArray; + readonly walletCurrency: WalletCurrency; +}; + + +/** A generic wallet which stores value in one of our supported currencies. */ +export type WalletInvoiceByPaymentHashArgs = { + paymentHash: Scalars['PaymentHash']['input']; +}; + + +/** A generic wallet which stores value in one of our supported currencies. */ +export type WalletInvoicesArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + + +/** A generic wallet which stores value in one of our supported currencies. */ +export type WalletPendingIncomingTransactionsByAddressArgs = { + address: Scalars['OnChainAddress']['input']; +}; + + +/** A generic wallet which stores value in one of our supported currencies. */ +export type WalletTransactionByIdArgs = { + transactionId: Scalars['ID']['input']; +}; + + +/** A generic wallet which stores value in one of our supported currencies. */ +export type WalletTransactionsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + + +/** A generic wallet which stores value in one of our supported currencies. */ +export type WalletTransactionsByAddressArgs = { + address: Scalars['OnChainAddress']['input']; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + + +/** A generic wallet which stores value in one of our supported currencies. */ +export type WalletTransactionsByPaymentHashArgs = { + paymentHash: Scalars['PaymentHash']['input']; +}; + +export const WalletCurrency = { + Btc: 'BTC', + Usd: 'USD' +} as const; + +export type WalletCurrency = typeof WalletCurrency[keyof typeof WalletCurrency]; +export type MerchantMapSuggestMutationVariables = Exact<{ + input: MerchantMapSuggestInput; +}>; + + +export type MerchantMapSuggestMutation = { readonly __typename: 'Mutation', readonly merchantMapSuggest: { readonly __typename: 'MerchantPayload', readonly errors: ReadonlyArray<{ readonly __typename: 'GraphQLApplicationError', readonly code?: string | null, readonly message: string }>, readonly merchant?: { readonly __typename: 'Merchant', readonly createdAt: number, readonly id: string, readonly title: string, readonly username: string, readonly validated: boolean, readonly coordinates: { readonly __typename: 'Coordinates', readonly latitude: number, readonly longitude: number } } | null } }; + +export type BusinessMapMarkersQueryVariables = Exact<{ [key: string]: never; }>; + + +export type BusinessMapMarkersQuery = { readonly __typename: 'Query', readonly businessMapMarkers: ReadonlyArray<{ readonly __typename: 'MapMarker', readonly username: string, readonly mapInfo: { readonly __typename: 'MapInfo', readonly title: string, readonly coordinates: { readonly __typename: 'Coordinates', readonly latitude: number, readonly longitude: number } } }> }; + + +export const MerchantMapSuggestDocument = gql` + mutation MerchantMapSuggest($input: MerchantMapSuggestInput!) { + merchantMapSuggest(input: $input) { + errors { + code + message + } + merchant { + coordinates { + latitude + longitude + } + createdAt + id + title + username + validated + } + } +} + `; +export type MerchantMapSuggestMutationFn = Apollo.MutationFunction; + +/** + * __useMerchantMapSuggestMutation__ + * + * To run a mutation, you first call `useMerchantMapSuggestMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useMerchantMapSuggestMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [merchantMapSuggestMutation, { data, loading, error }] = useMerchantMapSuggestMutation({ + * variables: { + * input: // value for 'input' + * }, + * }); + */ +export function useMerchantMapSuggestMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(MerchantMapSuggestDocument, options); + } +export type MerchantMapSuggestMutationHookResult = ReturnType; +export type MerchantMapSuggestMutationResult = Apollo.MutationResult; +export type MerchantMapSuggestMutationOptions = Apollo.BaseMutationOptions; +export const BusinessMapMarkersDocument = gql` + query BusinessMapMarkers { + businessMapMarkers { + username + mapInfo { + title + coordinates { + latitude + longitude + } + } + } +} + `; + +/** + * __useBusinessMapMarkersQuery__ + * + * To run a query within a React component, call `useBusinessMapMarkersQuery` and pass it any options that fit your needs. + * When your component renders, `useBusinessMapMarkersQuery` returns an object from Apollo Client that contains loading, error, and data properties + * you can use to render your UI. + * + * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; + * + * @example + * const { data, loading, error } = useBusinessMapMarkersQuery({ + * variables: { + * }, + * }); + */ +export function useBusinessMapMarkersQuery(baseOptions?: Apollo.QueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useQuery(BusinessMapMarkersDocument, options); + } +export function useBusinessMapMarkersLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useLazyQuery(BusinessMapMarkersDocument, options); + } +export function useBusinessMapMarkersSuspenseQuery(baseOptions?: Apollo.SuspenseQueryHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useSuspenseQuery(BusinessMapMarkersDocument, options); + } +export type BusinessMapMarkersQueryHookResult = ReturnType; +export type BusinessMapMarkersLazyQueryHookResult = ReturnType; +export type BusinessMapMarkersSuspenseQueryHookResult = ReturnType; +export type BusinessMapMarkersQueryResult = Apollo.QueryResult; \ No newline at end of file diff --git a/apps/map/services/galoy/graphql/mutation/merchant-map-suggest.ts b/apps/map/services/galoy/graphql/mutation/merchant-map-suggest.ts new file mode 100644 index 0000000000..dc14fc8bc0 --- /dev/null +++ b/apps/map/services/galoy/graphql/mutation/merchant-map-suggest.ts @@ -0,0 +1,55 @@ +import { gql } from "@apollo/client" +import { apolloClient } from "../client" +import { MerchantMapSuggestDocument, MerchantMapSuggestMutation } from "../generated" + +gql` + mutation MerchantMapSuggest($input: MerchantMapSuggestInput!) { + merchantMapSuggest(input: $input) { + errors { + code + message + } + merchant { + coordinates { + latitude + longitude + } + createdAt + id + title + username + validated + } + } + } +` + +export async function merchantMapSuggest(input: { + latitude: number + longitude: number + title: string + username: string +}): Promise { + const client = apolloClient.UnAuthed() + try { + const response = await client.mutate({ + mutation: MerchantMapSuggestDocument, + variables: { + input, + }, + }) + + if (!response?.data?.merchantMapSuggest) { + return Error("No response") + } + + return response.data.merchantMapSuggest + } catch (err) { + console.error("error while fetching MerchantMapSuggest", err) + if (err instanceof Error) { + return Error(err.message) + } else { + return Error("Unknown error") + } + } +} diff --git a/apps/map/services/galoy/graphql/queries/business-map-marker.ts b/apps/map/services/galoy/graphql/queries/business-map-marker.ts new file mode 100644 index 0000000000..c5fef4a21c --- /dev/null +++ b/apps/map/services/galoy/graphql/queries/business-map-marker.ts @@ -0,0 +1,37 @@ +import { gql } from "@apollo/client" +import { apolloClient } from "../client" +import { BusinessMapMarkersDocument, BusinessMapMarkersQuery } from "../generated" + +gql` + query BusinessMapMarkers { + businessMapMarkers { + username + mapInfo { + title + coordinates { + latitude + longitude + } + } + } + } +` + +export async function businessMapMarkers(): Promise< + BusinessMapMarkersQuery["businessMapMarkers"] | Error +> { + const client = apolloClient.UnAuthed() + try { + const response = await client.query({ + query: BusinessMapMarkersDocument, + }) + return response.data.businessMapMarkers || [] + } catch (err) { + console.error("error while fetching businessMapMarkers", err) + if (err instanceof Error) { + return Error(err.message) + } else { + return Error("Unknown error") + } + } +} diff --git a/apps/map/tailwind.config.ts b/apps/map/tailwind.config.ts new file mode 100644 index 0000000000..9823b1c69a --- /dev/null +++ b/apps/map/tailwind.config.ts @@ -0,0 +1,20 @@ +import type { Config } from "tailwindcss" + +const config: Config = { + content: [ + "./pages/**/*.{js,ts,jsx,tsx,mdx}", + "./components/**/*.{js,ts,jsx,tsx,mdx}", + "./app/**/*.{js,ts,jsx,tsx,mdx}", + ], + theme: { + extend: { + backgroundImage: { + "gradient-radial": "radial-gradient(var(--tw-gradient-stops))", + "gradient-conic": + "conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))", + }, + }, + }, + plugins: [require("tailwindcss-animate")], +} +export default config diff --git a/apps/map/tsconfig.json b/apps/map/tsconfig.json new file mode 100644 index 0000000000..1acc22260a --- /dev/null +++ b/apps/map/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/ci/apps/app-template.lib.yml b/ci/apps/app-template.lib.yml index a0fb11c501..e0cc76cd0c 100644 --- a/ci/apps/app-template.lib.yml +++ b/ci/apps/app-template.lib.yml @@ -196,6 +196,10 @@ plan: #@ "YAML_PATH": ".image.digest", #@ "CHART": "admin-panel" #@ } +#@ "map": { +#@ "YAML_PATH": ".image.digest", +#@ "CHART": "map" +#@ } #@ } name: #@ bump_image_in_chart_name(app) serial: true diff --git a/ci/apps/pipeline.yml b/ci/apps/pipeline.yml index 0e724e0f69..b420cb64af 100644 --- a/ci/apps/pipeline.yml +++ b/ci/apps/pipeline.yml @@ -12,7 +12,7 @@ #@ "bump_image_in_chart_name", #@ "bump_image_in_chart") -#@ apps = ["consent", "dashboard", "pay", "admin-panel"] +#@ apps = ["consent", "dashboard", "pay", "admin-panel", "map"] groups: - name: all diff --git a/dev/Tiltfile b/dev/Tiltfile index 2637b4c7f4..f02b9a52f8 100644 --- a/dev/Tiltfile +++ b/dev/Tiltfile @@ -7,13 +7,15 @@ CONSENT_TEST_LABEL = "consent" DASHBOARD_TEST_LABEL = "dashboard" PAY_TEST_LABEL = "pay" ADMIN_PANEL_TEST_LABEL = "admin-panel" +MAP_TEST_LABEL = "map" TEST_RESOURCES = { CORE_TEST_LABEL: "test-api", CONSENT_TEST_LABEL: "test-consent", DASHBOARD_TEST_LABEL: "test-dashboard", PAY_TEST_LABEL: "test-pay", - ADMIN_PANEL_TEST_LABEL: "test-admin-panel" + ADMIN_PANEL_TEST_LABEL: "test-admin-panel", + MAP_TEST_LABEL: "test-map" } is_ci=("ci" in sys.argv) or cfg.get("bats", False) @@ -126,6 +128,31 @@ local_resource( ], ) +map_target = "//apps/map:dev" +if is_ci: + map_target = '//apps/map:map' +map_env = { + "PORT": "3005", + "CORE_URL" : "http://localhost:4455/graphql", +} +local_resource( + "map", + labels = ["apps"], + cmd = "buck2 build {}".format(map_target), + serve_cmd = "buck2 run {}".format(map_target), + env = map_env, + serve_env = map_env, + deps = _buck2_dep_inputs(map_target), + allow_parallel = True, + resource_deps = [ + "api", + "apollo-router", + ], + links = [ + link("http://localhost:3005", "map"), + ], +) + local_resource( name='hydra-dashboard', labels = ['apps'], @@ -196,6 +223,17 @@ local_resource( ], ) +map_test_target = "//apps/map:test-integration" +local_resource( + "test-map", + labels = ["test"], + auto_init = is_ci and MAP_TEST_LABEL in cfg.get("test", []), + cmd = "buck2 test {}".format(map_test_target), + resource_deps = [ + "map", + ], +) + local_resource( name='init-test-user', labels = ['test'], diff --git a/flake.nix b/flake.nix index 7211bd9ebb..5a339e0df7 100644 --- a/flake.nix +++ b/flake.nix @@ -229,6 +229,7 @@ dashboard = nextDerivation {pkgName = "dashboard";}; pay = nextDerivation {pkgName = "pay";}; admin-panel = nextDerivation {pkgName = "admin-panel";}; + map = nextDerivation {pkgName = "map";}; api-keys = rustDerivation {pkgName = "api-keys";}; notifications = rustDerivation {pkgName = "notifications";}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1c59d1e80d..132015f20e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -439,6 +439,133 @@ importers: specifier: 5.3.3 version: 5.3.3 + apps/map: + dependencies: + '@apollo/client': + specifier: ^3.9.2 + version: 3.9.2(@types/react@18.2.31)(graphql@16.8.1)(react-dom@18.2.0)(react@18.2.0) + '@opentelemetry/api': + specifier: ^1.6.0 + version: 1.7.0 + '@opentelemetry/core': + specifier: ^1.21.0 + version: 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/exporter-trace-otlp-http': + specifier: ^0.44.0 + version: 0.44.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-graphql': + specifier: ^0.35.2 + version: 0.35.2(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-http': + specifier: ^0.44.0 + version: 0.44.0(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation-net': + specifier: ^0.32.2 + version: 0.32.5(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': + specifier: ^1.17.1 + version: 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-node': + specifier: ^0.48.0 + version: 0.48.0(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-node': + specifier: ^1.18.1 + version: 1.21.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': + specifier: ^1.17.1 + version: 1.21.0 + '@radix-ui/react-dialog': + specifier: ^1.0.5 + version: 1.0.5(@types/react-dom@18.2.14)(@types/react@18.2.31)(react-dom@18.2.0)(react@18.2.0) + '@react-google-maps/api': + specifier: ^2.19.2 + version: 2.19.2(react-dom@18.2.0)(react@18.2.0) + '@t3-oss/env-nextjs': + specifier: ^0.8.0 + version: 0.8.0(typescript@5.3.3)(zod@3.22.4) + class-variance-authority: + specifier: ^0.7.0 + version: 0.7.0 + clsx: + specifier: ^2.0.0 + version: 2.0.0 + graphql: + specifier: ^16.8.1 + version: 16.8.1 + next: + specifier: 14.1.0 + version: 14.1.0(@babel/core@7.23.9)(@opentelemetry/api@1.7.0)(react-dom@18.2.0)(react@18.2.0) + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + tailwind-merge: + specifier: ^2.1.0 + version: 2.1.0 + tailwindcss-animate: + specifier: ^1.0.7 + version: 1.0.7(tailwindcss@3.4.1) + zod: + specifier: ^3.22.4 + version: 3.22.4 + devDependencies: + '@galoy/eslint-config': + specifier: workspace:^ + version: link:../../lib/eslint-config + '@graphql-codegen/add': + specifier: ^5.0.0 + version: 5.0.0(graphql@16.8.1) + '@graphql-codegen/cli': + specifier: ^5.0.0 + version: 5.0.0(@types/node@20.11.5)(graphql@16.8.1)(typescript@5.3.3) + '@graphql-codegen/client-preset': + specifier: ^4.1.0 + version: 4.1.0(graphql@16.8.1) + '@graphql-codegen/typescript': + specifier: ^4.0.1 + version: 4.0.1(graphql@16.8.1) + '@graphql-codegen/typescript-operations': + specifier: ^4.0.1 + version: 4.0.1(graphql@16.8.1) + '@graphql-codegen/typescript-react-apollo': + specifier: ^4.1.0 + version: 4.1.0(graphql-tag@2.12.6)(graphql@16.8.1) + '@graphql-codegen/typescript-resolvers': + specifier: ^4.0.1 + version: 4.0.1(graphql@16.8.1) + '@graphql-inspector/cli': + specifier: ^4.0.3 + version: 4.0.3(@types/node@20.11.5)(graphql@16.8.1) + '@types/node': + specifier: ^20 + version: 20.11.5 + '@types/react': + specifier: 18.2.31 + version: 18.2.31 + '@types/react-dom': + specifier: 18.2.14 + version: 18.2.14 + autoprefixer: + specifier: ^10.0.1 + version: 10.4.16(postcss@8.4.32) + eslint: + specifier: ^8 + version: 8.56.0 + eslint-config-next: + specifier: 14.1.0 + version: 14.1.0(eslint@8.56.0)(typescript@5.3.3) + postcss: + specifier: ^8 + version: 8.4.32 + tailwindcss: + specifier: ^3.3.0 + version: 3.4.1 + typescript: + specifier: ^5 + version: 5.3.3 + apps/pay: dependencies: '@apollo/client': @@ -1251,7 +1378,6 @@ packages: /@alloc/quick-lru@5.2.0: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - dev: true /@ampproject/remapping@2.2.1: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} @@ -1383,6 +1509,45 @@ packages: zen-observable-ts: 1.2.5 dev: false + /@apollo/client@3.9.2(@types/react@18.2.31)(graphql@16.8.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Zw9WvXjqhpbgkvAvnj52vstOWwM0iedKWtn1hSq1cODQyoe1CF2uFwMYFI7l56BrAY9CzLi6MQA0AhxpgJgvxw==} + peerDependencies: + graphql: ^15.0.0 || ^16.0.0 + graphql-ws: ^5.5.5 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + subscriptions-transport-ws: ^0.9.0 || ^0.11.0 + peerDependenciesMeta: + graphql-ws: + optional: true + react: + optional: true + react-dom: + optional: true + subscriptions-transport-ws: + optional: true + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) + '@wry/caches': 1.0.1 + '@wry/equality': 0.5.7 + '@wry/trie': 0.5.0 + graphql: 16.8.1 + graphql-tag: 2.12.6(graphql@16.8.1) + hoist-non-react-statics: 3.3.2 + optimism: 0.18.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + rehackt: 0.0.3(@types/react@18.2.31)(react@18.2.0) + response-iterator: 0.2.6 + symbol-observable: 4.0.0 + ts-invariant: 0.10.3 + tslib: 2.6.2 + zen-observable-ts: 1.2.5 + transitivePeerDependencies: + - '@types/react' + dev: false + /@apollo/experimental-nextjs-app-support@0.5.2(@apollo/client@3.8.8)(next@14.0.4)(react@18.2.0): resolution: {integrity: sha512-qUopCHDocCBfL+XDhuPNwiWrJHf7rc75bdDBF2TxZyYwW32wo3vPPac6bGWrYy8lgkJ8K8Z5O56655WQOynFTg==} peerDependencies: @@ -2382,16 +2547,6 @@ packages: semver: 6.3.1 dev: true - /@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.19 - jsesc: 2.5.2 - dev: true - /@babel/generator@7.23.5: resolution: {integrity: sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==} engines: {node: '>=6.9.0'} @@ -3031,12 +3186,21 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.7): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.9): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.9): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -3057,6 +3221,15 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.9): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.5): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} @@ -3225,6 +3398,15 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.9): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.5): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: @@ -3242,6 +3424,15 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.5): resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} engines: {node: '>=6.9.0'} @@ -3288,6 +3479,15 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.9): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.5): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: @@ -3305,6 +3505,15 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.5): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: @@ -3322,6 +3531,15 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.9): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.5): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: @@ -3339,6 +3557,15 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.5): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: @@ -3356,6 +3583,15 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.5): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: @@ -3373,6 +3609,15 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.5): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} @@ -3411,6 +3656,16 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.9): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} engines: {node: '>=6.9.0'} @@ -3420,6 +3675,16 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.5): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} @@ -5913,6 +6178,19 @@ packages: - supports-color dev: false + /@googlemaps/js-api-loader@1.16.2: + resolution: {integrity: sha512-psGw5u0QM6humao48Hn4lrChOM2/rA43ZCm3tKK9qQsEj1/VzqkCqnvGfEOshDbBQflydfaRovbKwZMF4AyqbA==} + dependencies: + fast-deep-equal: 3.1.3 + dev: false + + /@googlemaps/markerclusterer@2.3.2: + resolution: {integrity: sha512-zb9OQP8XscZp2Npt1uQUYnGKu1miuq4DPP28JyDuFd6HV17HCEcjV9MtBi4muG/iVRXXvuHW9bRCnHbao9ITfw==} + dependencies: + fast-deep-equal: 3.1.3 + supercluster: 8.0.1 + dev: false + /@graphql-codegen/add@4.0.1(graphql@16.8.1): resolution: {integrity: sha512-A7k+9eRfrKyyNfhWEN/0eKz09R5cp4XXxUuNLQAVm/aohmVI2xdMV4lM02rTlM6Pyou3cU/v0iZnhgo6IRpqeg==} peerDependencies: @@ -5996,9 +6274,9 @@ packages: '@parcel/watcher': optional: true dependencies: - '@babel/generator': 7.23.0 - '@babel/template': 7.22.15 - '@babel/types': 7.23.0 + '@babel/generator': 7.23.6 + '@babel/template': 7.23.9 + '@babel/types': 7.23.9 '@graphql-codegen/core': 4.0.0(graphql@16.8.1) '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) '@graphql-tools/apollo-engine-loader': 8.0.0(graphql@16.8.1) @@ -6010,7 +6288,7 @@ packages: '@graphql-tools/load': 8.0.0(graphql@16.8.1) '@graphql-tools/prisma-loader': 8.0.1(@types/node@20.10.4)(graphql@16.8.1) '@graphql-tools/url-loader': 8.0.0(@types/node@20.10.4)(graphql@16.8.1) - '@graphql-tools/utils': 10.0.6(graphql@16.8.1) + '@graphql-tools/utils': 10.0.11(graphql@16.8.1) '@whatwg-node/fetch': 0.8.8 chalk: 4.1.2 cosmiconfig: 8.3.6(typescript@5.3.3) @@ -6029,7 +6307,7 @@ packages: string-env-interpolation: 1.0.1 ts-log: 2.2.5 tslib: 2.6.2 - yaml: 2.3.2 + yaml: 2.3.4 yargs: 17.7.2 transitivePeerDependencies: - '@types/node' @@ -6042,7 +6320,7 @@ packages: - utf-8-validate dev: true - /@graphql-codegen/cli@5.0.0(@types/node@20.8.10)(graphql@16.8.1)(typescript@5.2.2): + /@graphql-codegen/cli@5.0.0(@types/node@20.11.5)(graphql@16.8.1)(typescript@5.3.3): resolution: {integrity: sha512-A7J7+be/a6e+/ul2KI5sfJlpoqeqwX8EzktaKCeduyVKgOLA6W5t+NUGf6QumBDXU8PEOqXk3o3F+RAwCWOiqA==} hasBin: true peerDependencies: @@ -6053,8 +6331,64 @@ packages: optional: true dependencies: '@babel/generator': 7.23.6 - '@babel/template': 7.22.15 - '@babel/types': 7.23.6 + '@babel/template': 7.23.9 + '@babel/types': 7.23.9 + '@graphql-codegen/core': 4.0.0(graphql@16.8.1) + '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) + '@graphql-tools/apollo-engine-loader': 8.0.0(graphql@16.8.1) + '@graphql-tools/code-file-loader': 8.0.2(graphql@16.8.1) + '@graphql-tools/git-loader': 8.0.2(graphql@16.8.1) + '@graphql-tools/github-loader': 8.0.0(@types/node@20.11.5)(graphql@16.8.1) + '@graphql-tools/graphql-file-loader': 8.0.0(graphql@16.8.1) + '@graphql-tools/json-file-loader': 8.0.0(graphql@16.8.1) + '@graphql-tools/load': 8.0.0(graphql@16.8.1) + '@graphql-tools/prisma-loader': 8.0.1(@types/node@20.11.5)(graphql@16.8.1) + '@graphql-tools/url-loader': 8.0.0(@types/node@20.11.5)(graphql@16.8.1) + '@graphql-tools/utils': 10.0.11(graphql@16.8.1) + '@whatwg-node/fetch': 0.8.8 + chalk: 4.1.2 + cosmiconfig: 8.3.6(typescript@5.3.3) + debounce: 1.2.1 + detect-indent: 6.1.0 + graphql: 16.8.1 + graphql-config: 5.0.3(@types/node@20.11.5)(graphql@16.8.1)(typescript@5.3.3) + inquirer: 8.2.6 + is-glob: 4.0.3 + jiti: 1.20.0 + json-to-pretty-yaml: 1.2.2 + listr2: 4.0.5 + log-symbols: 4.1.0 + micromatch: 4.0.5 + shell-quote: 1.8.1 + string-env-interpolation: 1.0.1 + ts-log: 2.2.5 + tslib: 2.6.2 + yaml: 2.3.4 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - cosmiconfig-toml-loader + - encoding + - enquirer + - supports-color + - typescript + - utf-8-validate + dev: true + + /@graphql-codegen/cli@5.0.0(@types/node@20.8.10)(graphql@16.8.1)(typescript@5.2.2): + resolution: {integrity: sha512-A7J7+be/a6e+/ul2KI5sfJlpoqeqwX8EzktaKCeduyVKgOLA6W5t+NUGf6QumBDXU8PEOqXk3o3F+RAwCWOiqA==} + hasBin: true + peerDependencies: + '@parcel/watcher': ^2.1.0 + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + '@parcel/watcher': + optional: true + dependencies: + '@babel/generator': 7.23.6 + '@babel/template': 7.22.15 + '@babel/types': 7.23.6 '@graphql-codegen/core': 4.0.0(graphql@16.8.1) '@graphql-codegen/plugin-helpers': 5.0.1(graphql@16.8.1) '@graphql-tools/apollo-engine-loader': 8.0.0(graphql@16.8.1) @@ -6492,6 +6826,42 @@ packages: - utf-8-validate dev: true + /@graphql-inspector/cli@4.0.3(@types/node@20.11.5)(graphql@16.8.1): + resolution: {integrity: sha512-54pJ/SkFGz/qKEP2sjiCqxTG6QkWSzG4NdfKqhlinQstlyCgtbmgwgh90fUPoG6yOgZZhcsiSJXHkz255kRu4w==} + engines: {node: '>=16.0.0'} + hasBin: true + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@babel/core': 7.22.9 + '@graphql-inspector/audit-command': 4.0.3(@graphql-inspector/config@4.0.2)(@graphql-inspector/loaders@4.0.3)(graphql@16.8.1)(yargs@17.7.2) + '@graphql-inspector/code-loader': 4.0.2(@babel/core@7.22.9)(graphql@16.8.1) + '@graphql-inspector/commands': 4.0.3(@graphql-inspector/config@4.0.2)(@graphql-inspector/loaders@4.0.3)(graphql@16.8.1)(yargs@17.7.2) + '@graphql-inspector/config': 4.0.2(graphql@16.8.1) + '@graphql-inspector/coverage-command': 5.0.3(@graphql-inspector/config@4.0.2)(@graphql-inspector/loaders@4.0.3)(graphql@16.8.1)(yargs@17.7.2) + '@graphql-inspector/diff-command': 4.0.3(@graphql-inspector/config@4.0.2)(@graphql-inspector/loaders@4.0.3)(graphql@16.8.1)(yargs@17.7.2) + '@graphql-inspector/docs-command': 4.0.3(@graphql-inspector/config@4.0.2)(@graphql-inspector/loaders@4.0.3)(graphql@16.8.1)(yargs@17.7.2) + '@graphql-inspector/git-loader': 4.0.2(@babel/core@7.22.9)(graphql@16.8.1) + '@graphql-inspector/github-loader': 4.0.2(@types/node@20.11.5)(graphql@16.8.1) + '@graphql-inspector/graphql-loader': 4.0.2(graphql@16.8.1) + '@graphql-inspector/introspect-command': 4.0.3(@graphql-inspector/config@4.0.2)(@graphql-inspector/loaders@4.0.3)(graphql@16.8.1)(yargs@17.7.2) + '@graphql-inspector/json-loader': 4.0.2(graphql@16.8.1) + '@graphql-inspector/loaders': 4.0.3(@babel/core@7.23.9)(@graphql-inspector/config@4.0.2)(graphql@16.8.1) + '@graphql-inspector/serve-command': 4.0.3(@graphql-inspector/config@4.0.2)(@graphql-inspector/loaders@4.0.3)(graphql@16.8.1)(yargs@17.7.2) + '@graphql-inspector/similar-command': 4.0.3(@graphql-inspector/config@4.0.2)(@graphql-inspector/loaders@4.0.3)(graphql@16.8.1)(yargs@17.7.2) + '@graphql-inspector/url-loader': 4.0.2(@types/node@20.11.5)(graphql@16.8.1) + '@graphql-inspector/validate-command': 4.0.3(@graphql-inspector/config@4.0.2)(@graphql-inspector/loaders@4.0.3)(graphql@16.8.1)(yargs@17.7.2) + graphql: 16.8.1 + tslib: 2.6.2 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: true + /@graphql-inspector/cli@4.0.3(@types/node@20.8.10)(graphql@16.8.1): resolution: {integrity: sha512-54pJ/SkFGz/qKEP2sjiCqxTG6QkWSzG4NdfKqhlinQstlyCgtbmgwgh90fUPoG6yOgZZhcsiSJXHkz255kRu4w==} engines: {node: '>=16.0.0'} @@ -6660,6 +7030,21 @@ packages: - supports-color dev: true + /@graphql-inspector/github-loader@4.0.2(@types/node@20.11.5)(graphql@16.8.1): + resolution: {integrity: sha512-SrOUjz1RppK5Vxj8fMoCN+i+yvzIj1ZnP+mNdLZIsms9ou6u0+h8NuE/KfANR5Z1VJIQGIifMONIv2eTx4SjCQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@graphql-tools/github-loader': 8.0.0(@types/node@20.11.5)(graphql@16.8.1) + graphql: 16.8.1 + tslib: 2.6.2 + transitivePeerDependencies: + - '@types/node' + - encoding + - supports-color + dev: true + /@graphql-inspector/github-loader@4.0.2(@types/node@20.8.10)(graphql@16.8.1): resolution: {integrity: sha512-SrOUjz1RppK5Vxj8fMoCN+i+yvzIj1ZnP+mNdLZIsms9ou6u0+h8NuE/KfANR5Z1VJIQGIifMONIv2eTx4SjCQ==} engines: {node: '>=16.0.0'} @@ -6794,6 +7179,22 @@ packages: - utf-8-validate dev: true + /@graphql-inspector/url-loader@4.0.2(@types/node@20.11.5)(graphql@16.8.1): + resolution: {integrity: sha512-bor9yZ6PIW8Fc5swo8t5TeexiQS8nRySF3oF4iG8d/aYPh0e7/DYM3lGF4M7VY3lH760r3caIRXXNOnn79tBrw==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + dependencies: + '@graphql-tools/url-loader': 8.0.0(@types/node@20.11.5)(graphql@16.8.1) + graphql: 16.8.1 + tslib: 2.6.2 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - encoding + - utf-8-validate + dev: true + /@graphql-inspector/url-loader@4.0.2(@types/node@20.8.10)(graphql@16.8.1): resolution: {integrity: sha512-bor9yZ6PIW8Fc5swo8t5TeexiQS8nRySF3oF4iG8d/aYPh0e7/DYM3lGF4M7VY3lH760r3caIRXXNOnn79tBrw==} engines: {node: '>=16.0.0'} @@ -7087,6 +7488,24 @@ packages: - '@types/node' dev: true + /@graphql-tools/executor-http@1.0.3(@types/node@20.11.5)(graphql@16.8.1): + resolution: {integrity: sha512-5WZIMBevRaxMabZ8U2Ty0dTUPy/PpeYSlMNEmC/YJjKKykgSfc/AwSejx2sE4FFKZ0I2kxRKRenyoWMHRAV49Q==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 10.0.6(graphql@16.8.1) + '@repeaterjs/repeater': 3.0.4 + '@whatwg-node/fetch': 0.9.13 + extract-files: 11.0.0 + graphql: 16.8.1 + meros: 1.3.0(@types/node@20.11.5) + tslib: 2.6.2 + value-or-promise: 1.0.12 + transitivePeerDependencies: + - '@types/node' + dev: true + /@graphql-tools/executor-http@1.0.3(@types/node@20.8.10)(graphql@16.8.1): resolution: {integrity: sha512-5WZIMBevRaxMabZ8U2Ty0dTUPy/PpeYSlMNEmC/YJjKKykgSfc/AwSejx2sE4FFKZ0I2kxRKRenyoWMHRAV49Q==} engines: {node: '>=16.0.0'} @@ -7257,6 +7676,26 @@ packages: - supports-color dev: true + /@graphql-tools/github-loader@8.0.0(@types/node@20.11.5)(graphql@16.8.1): + resolution: {integrity: sha512-VuroArWKcG4yaOWzV0r19ElVIV6iH6UKDQn1MXemND0xu5TzrFme0kf3U9o0YwNo0kUYEk9CyFM0BYg4he17FA==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@ardatan/sync-fetch': 0.0.1 + '@graphql-tools/executor-http': 1.0.3(@types/node@20.11.5)(graphql@16.8.1) + '@graphql-tools/graphql-tag-pluck': 8.0.2(graphql@16.8.1) + '@graphql-tools/utils': 10.0.6(graphql@16.8.1) + '@whatwg-node/fetch': 0.9.13 + graphql: 16.8.1 + tslib: 2.6.2 + value-or-promise: 1.0.12 + transitivePeerDependencies: + - '@types/node' + - encoding + - supports-color + dev: true + /@graphql-tools/github-loader@8.0.0(@types/node@20.8.10)(graphql@16.8.1): resolution: {integrity: sha512-VuroArWKcG4yaOWzV0r19ElVIV6iH6UKDQn1MXemND0xu5TzrFme0kf3U9o0YwNo0kUYEk9CyFM0BYg4he17FA==} engines: {node: '>=16.0.0'} @@ -7599,6 +8038,39 @@ packages: - utf-8-validate dev: true + /@graphql-tools/prisma-loader@8.0.1(@types/node@20.11.5)(graphql@16.8.1): + resolution: {integrity: sha512-bl6e5sAYe35Z6fEbgKXNrqRhXlCJYeWKBkarohgYA338/SD9eEhXtg3Cedj7fut3WyRLoQFpHzfiwxKs7XrgXg==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/url-loader': 8.0.0(@types/node@20.11.5)(graphql@16.8.1) + '@graphql-tools/utils': 10.0.6(graphql@16.8.1) + '@types/js-yaml': 4.0.9 + '@types/json-stable-stringify': 1.0.34 + '@whatwg-node/fetch': 0.9.13 + chalk: 4.1.2 + debug: 4.3.4(supports-color@5.5.0) + dotenv: 16.3.1 + graphql: 16.8.1 + graphql-request: 6.1.0(graphql@16.8.1) + http-proxy-agent: 7.0.0 + https-proxy-agent: 7.0.2 + jose: 4.15.2 + js-yaml: 4.1.0 + json-stable-stringify: 1.0.2 + lodash: 4.17.21 + scuid: 1.1.0 + tslib: 2.6.2 + yaml-ast-parser: 0.0.43 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: true + /@graphql-tools/prisma-loader@8.0.1(@types/node@20.8.10)(graphql@16.8.1): resolution: {integrity: sha512-bl6e5sAYe35Z6fEbgKXNrqRhXlCJYeWKBkarohgYA338/SD9eEhXtg3Cedj7fut3WyRLoQFpHzfiwxKs7XrgXg==} engines: {node: '>=16.0.0'} @@ -7763,6 +8235,33 @@ packages: - utf-8-validate dev: true + /@graphql-tools/url-loader@8.0.0(@types/node@20.11.5)(graphql@16.8.1): + resolution: {integrity: sha512-rPc9oDzMnycvz+X+wrN3PLrhMBQkG4+sd8EzaFN6dypcssiefgWKToXtRKI8HHK68n2xEq1PyrOpkjHFJB+GwA==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@ardatan/sync-fetch': 0.0.1 + '@graphql-tools/delegate': 10.0.3(graphql@16.8.1) + '@graphql-tools/executor-graphql-ws': 1.1.0(graphql@16.8.1) + '@graphql-tools/executor-http': 1.0.3(@types/node@20.11.5)(graphql@16.8.1) + '@graphql-tools/executor-legacy-ws': 1.0.4(graphql@16.8.1) + '@graphql-tools/utils': 10.0.11(graphql@16.8.1) + '@graphql-tools/wrap': 10.0.1(graphql@16.8.1) + '@types/ws': 8.5.10 + '@whatwg-node/fetch': 0.9.13 + graphql: 16.8.1 + isomorphic-ws: 5.0.0(ws@8.16.0) + tslib: 2.6.2 + value-or-promise: 1.0.12 + ws: 8.16.0 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - encoding + - utf-8-validate + dev: true + /@graphql-tools/url-loader@8.0.0(@types/node@20.8.10)(graphql@16.8.1): resolution: {integrity: sha512-rPc9oDzMnycvz+X+wrN3PLrhMBQkG4+sd8EzaFN6dypcssiefgWKToXtRKI8HHK68n2xEq1PyrOpkjHFJB+GwA==} engines: {node: '>=16.0.0'} @@ -7929,7 +8428,7 @@ packages: engines: {node: ^8.13.0 || >=10.10.0} dependencies: '@grpc/proto-loader': 0.7.10 - '@types/node': 20.8.10 + '@types/node': 20.11.5 dev: false /@grpc/grpc-js@1.9.14: @@ -8168,7 +8667,7 @@ packages: resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jridgewell/trace-mapping': 0.3.20 + '@jridgewell/trace-mapping': 0.3.22 callsites: 3.1.0 graceful-fs: 4.2.11 dev: true @@ -8269,13 +8768,6 @@ packages: /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - /@jridgewell/trace-mapping@0.3.19: - resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - /@jridgewell/trace-mapping@0.3.20: resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} dependencies: @@ -8695,6 +9187,12 @@ packages: glob: 7.1.7 dev: true + /@next/eslint-plugin-next@14.1.0: + resolution: {integrity: sha512-x4FavbNEeXx/baD/zC/SdrvkjSby8nBn8KcCREqk6UuwvwoAPZmaV8TFCAuo/cpovBRTIY67mHhe86MQQm/68Q==} + dependencies: + glob: 10.3.10 + dev: true + /@next/swc-darwin-arm64@13.5.6: resolution: {integrity: sha512-5nvXMzKtZfvcu4BhtV0KH1oGv4XEW+B+jOfmBdpFI3C7FrB/MfujRpWYSBBO64+qbW8pkZiSyQv9eiwnn5VIQA==} engines: {node: '>= 10'} @@ -9051,12 +9549,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==} @@ -9064,12 +9560,18 @@ packages: dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.16.0 - dev: true /@one-ini/wasm@0.1.1: resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} dev: true + /@opentelemetry/api-logs@0.44.0: + resolution: {integrity: sha512-OctojdKGmXHKAJa4/Ml+Nf7MD9jtYXvZyP64xTh0pNTmtgaTdWW3FURri2DdB/+l7YxRy0tYYZS3/tYEM1pj3w==} + engines: {node: '>=14'} + dependencies: + '@opentelemetry/api': 1.7.0 + dev: false + /@opentelemetry/api-logs@0.45.1: resolution: {integrity: sha512-zVGq/k70l+kB/Wuv3O/zhptP2hvDhEbhDu9EtHde1iWZJf3FedeYS/nWVcMBkkyPAjS/JKNk86WN4CBQLGUuOw==} engines: {node: '>=14'} @@ -9123,6 +9625,16 @@ packages: '@opentelemetry/api': 1.7.0 dev: false + /@opentelemetry/core@1.17.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-I6LrZvl1FF97FQXPR0iieWQmKnGxYtMbWA1GrAXnLUR+B1Hn2m8KqQNEIlZAucyv00GBgpWkpllmULmZfG8P3g==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.7.0' + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/semantic-conventions': 1.17.1 + dev: false + /@opentelemetry/core@1.18.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-kvnUqezHMhsQvdsnhnqTNfAJs3ox/isB0SVrM1dhVFw7SsB7TstuVa6fgWnN2GdPyilIFLUvvbTZoVRmx6eiRg==} engines: {node: '>=14'} @@ -9183,6 +9695,20 @@ packages: '@opentelemetry/sdk-trace-base': 1.21.0(@opentelemetry/api@1.7.0) dev: false + /@opentelemetry/exporter-trace-otlp-http@0.44.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-RkorGE6wf6PF5OjMUGBnbUDyaVgmN+vL7OgClJJUTxqbE7WqgbW8dkU04O+1mcB1znXZ1Aej1uDm0pS+eW/upA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.17.1(@opentelemetry/api@1.7.0) + '@opentelemetry/otlp-exporter-base': 0.44.0(@opentelemetry/api@1.7.0) + '@opentelemetry/otlp-transformer': 0.44.0(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.17.1(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-base': 1.17.1(@opentelemetry/api@1.7.0) + dev: false + /@opentelemetry/exporter-trace-otlp-http@0.45.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-a6CGqSG66n5R1mghzLMzyzn3iGap1b0v+0PjKFjfYuwLtpHQBxh2PHxItu+m2mXSwnM4R0GJlk9oUW5sQkCE0w==} engines: {node: '>=14'} @@ -9281,6 +9807,18 @@ packages: '@opentelemetry/semantic-conventions': 1.21.0 dev: false + /@opentelemetry/instrumentation-graphql@0.35.2(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-lJv7BbHFK0ExwogdQMtVHfnWhCBMDQEz8KYvhShXfRPiSStU5aVwa3TmT0O00KiJFpATSKJNZMv1iZNHbF6z1g==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/instrumentation': 0.44.0(@opentelemetry/api@1.7.0) + transitivePeerDependencies: + - supports-color + dev: false + /@opentelemetry/instrumentation-graphql@0.36.0(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-H5nezZCV4HUjmPi4o2QlFXGzvldZiJ7hAEldy+37qMmm5PaqLmFW4w084/C+4IdPoxm4gJRtI8vkXJQJqqyktQ==} engines: {node: '>=14'} @@ -9330,6 +9868,21 @@ packages: - supports-color dev: false + /@opentelemetry/instrumentation-http@0.44.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-Nlvj3Y2n9q6uIcQq9f33HbcB4Dr62erSwYA37+vkorYnzI2j9PhxKitocRTZnbYsrymYmQJW9mdq/IAfbtVnNg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.17.1(@opentelemetry/api@1.7.0) + '@opentelemetry/instrumentation': 0.44.0(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.17.1 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + dev: false + /@opentelemetry/instrumentation-http@0.45.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-ph7kv38Lipg/ggvoNJrwc3RCceLnTkVZwRbE5iu6w7fGsMjjc9jwlSmaOXKxUJjIimil2hL1qBm8xg2lmOVwxg==} engines: {node: '>=14'} @@ -9384,7 +9937,7 @@ packages: '@opentelemetry/api': 1.7.0 '@opentelemetry/instrumentation': 0.46.0(@opentelemetry/api@1.7.0) '@opentelemetry/redis-common': 0.36.1 - '@opentelemetry/semantic-conventions': 1.20.0 + '@opentelemetry/semantic-conventions': 1.21.0 '@types/ioredis4': /@types/ioredis@4.28.10 transitivePeerDependencies: - supports-color @@ -9399,7 +9952,7 @@ packages: '@opentelemetry/api': 1.7.0 '@opentelemetry/instrumentation': 0.46.0(@opentelemetry/api@1.7.0) '@opentelemetry/sdk-metrics': 1.20.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.20.0 + '@opentelemetry/semantic-conventions': 1.21.0 transitivePeerDependencies: - supports-color dev: false @@ -9412,7 +9965,7 @@ packages: dependencies: '@opentelemetry/api': 1.7.0 '@opentelemetry/instrumentation': 0.45.1(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.18.1 + '@opentelemetry/semantic-conventions': 1.21.0 transitivePeerDependencies: - supports-color dev: false @@ -9425,7 +9978,7 @@ packages: dependencies: '@opentelemetry/api': 1.7.0 '@opentelemetry/instrumentation': 0.46.0(@opentelemetry/api@1.7.0) - '@opentelemetry/semantic-conventions': 1.20.0 + '@opentelemetry/semantic-conventions': 1.21.0 transitivePeerDependencies: - supports-color dev: false @@ -9443,6 +9996,22 @@ packages: - supports-color dev: false + /@opentelemetry/instrumentation@0.44.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-B6OxJTRRCceAhhnPDBshyQO7K07/ltX3quOLu0icEvPK9QZ7r9P1y0RQX8O5DxB4vTv4URRkxkg+aFU/plNtQw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@types/shimmer': 1.0.5 + import-in-the-middle: 1.4.2 + require-in-the-middle: 7.2.0 + semver: 7.6.0 + shimmer: 1.2.1 + transitivePeerDependencies: + - supports-color + dev: false + /@opentelemetry/instrumentation@0.45.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-V1Cr0g8hSg35lpW3G/GYVZurrhHrQZJdmP68WyJ83f1FDn3iru+/Vnlto9kiOSm7PHhW+pZGdb9Fbv+mkQ31CA==} engines: {node: '>=14'} @@ -9507,6 +10076,16 @@ packages: - supports-color dev: false + /@opentelemetry/otlp-exporter-base@0.44.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-DKQqRrfVMe96aSLZiCgIesLcMLfnWH8d4bTpLB1JbU+SAQJ7nVCAfS9U36mjFCVhvNDD7gwfCNrxqFMCHq6FUw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.17.1(@opentelemetry/api@1.7.0) + dev: false + /@opentelemetry/otlp-exporter-base@0.45.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-Jvd6x8EwWGKEPWF4tkP4LpTPXiIkkafMNMvMJUfJd5DyNAftL1vAz+48jmi3URL2LMPkGryrvWPz8Tdu917gQw==} engines: {node: '>=14'} @@ -9587,6 +10166,21 @@ packages: protobufjs: 7.2.5 dev: false + /@opentelemetry/otlp-transformer@0.44.0(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-1/KC+aHM1oGEsXyNy7QoxpvErxGdzt26bg9VHyNb4TDILkUFdwrnywnxPc6lXZ6h/8T8Mt718UWOKjNHC514kQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.7.0' + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/api-logs': 0.44.0 + '@opentelemetry/core': 1.17.1(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.17.1(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-logs': 0.44.0(@opentelemetry/api-logs@0.44.0)(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-metrics': 1.17.1(@opentelemetry/api@1.7.0) + '@opentelemetry/sdk-trace-base': 1.17.1(@opentelemetry/api@1.7.0) + dev: false + /@opentelemetry/otlp-transformer@0.45.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-FhIHgfC0b0XtoBrS5ISfva939yWffNl47ypXR8I7Ru+dunlySpmf2TLocKHYLHGcWiuoeSNO5O4dZCmSKOtpXw==} engines: {node: '>=14'} @@ -9697,6 +10291,17 @@ packages: engines: {node: '>=14'} dev: false + /@opentelemetry/resources@1.17.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-M2e5emqg5I7qRKqlzKx0ROkcPyF8PbcSaWEdsm72od9txP7Z/Pl8PDYOyu80xWvbHAWk5mDxOF6v3vNdifzclA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.7.0' + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.17.1(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.17.1 + dev: false + /@opentelemetry/resources@1.18.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-JjbcQLYMttXcIabflLRuaw5oof5gToYV9fuXbcsoOeQ0BlbwUn6DAZi++PNsSz2jjPeASfDls10iaO/8BRIPRA==} engines: {node: '>=14'} @@ -9730,6 +10335,19 @@ packages: '@opentelemetry/semantic-conventions': 1.21.0 dev: false + /@opentelemetry/sdk-logs@0.44.0(@opentelemetry/api-logs@0.44.0)(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-UN3ofh9Jj54gIgrSXNRWAoaH6iPvrrjed5YAtqO9cW65U+5QPzk1Rv95vjAcY9VTrmMWvuqgEK1CYObG6Hu4OQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.4.0 <1.7.0' + '@opentelemetry/api-logs': '>=0.39.1' + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/api-logs': 0.44.0 + '@opentelemetry/core': 1.17.1(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.17.1(@opentelemetry/api@1.7.0) + dev: false + /@opentelemetry/sdk-logs@0.45.1(@opentelemetry/api-logs@0.45.1)(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-z0RRgW4LeKEKnhXS4F/HnqB6+7gsy63YK47F4XAJYHs4s1KKg8XnQ2RkbuL31i/a9nXkylttYtvsT50CGr487g==} engines: {node: '>=14'} @@ -9769,6 +10387,18 @@ packages: '@opentelemetry/resources': 1.21.0(@opentelemetry/api@1.7.0) dev: false + /@opentelemetry/sdk-metrics@1.17.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-eHdpsMCKhKhwznxvEfls8Wv3y4ZBWkkXlD3m7vtHIiWBqsMHspWSfie1s07mM45i/bBCf6YBMgz17FUxIXwmZA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.7.0' + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.17.1(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.17.1(@opentelemetry/api@1.7.0) + lodash.merge: 4.6.2 + dev: false + /@opentelemetry/sdk-metrics@1.18.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-TEFgeNFhdULBYiCoHbz31Y4PDsfjjxRp8Wmdp6ybLQZPqMNEb+dRq+XN8Xw3ivIgTaf9gYsomgV5ensX99RuEQ==} engines: {node: '>=14'} @@ -9853,6 +10483,18 @@ packages: - supports-color dev: false + /@opentelemetry/sdk-trace-base@1.17.1(@opentelemetry/api@1.7.0): + resolution: {integrity: sha512-pfSJJSjZj5jkCJUQZicSpzN8Iz9UKMryPWikZRGObPnJo6cUSoKkjZh6BM3j+D47G4olMBN+YZKYqkFM1L6zNA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.7.0' + dependencies: + '@opentelemetry/api': 1.7.0 + '@opentelemetry/core': 1.17.1(@opentelemetry/api@1.7.0) + '@opentelemetry/resources': 1.17.1(@opentelemetry/api@1.7.0) + '@opentelemetry/semantic-conventions': 1.17.1 + dev: false + /@opentelemetry/sdk-trace-base@1.18.1(@opentelemetry/api@1.7.0): resolution: {integrity: sha512-tRHfDxN5dO+nop78EWJpzZwHsN1ewrZRVVwo03VJa3JQZxToRDH29/+MB24+yoa+IArerdr7INFJiX/iN4gjqg==} engines: {node: '>=14'} @@ -9934,6 +10576,11 @@ packages: semver: 7.6.0 dev: false + /@opentelemetry/semantic-conventions@1.17.1: + resolution: {integrity: sha512-xbR2U+2YjauIuo42qmE8XyJK6dYeRMLJuOlUP5SO4auET4VtOHOzgkRVOq+Ik18N+Xf3YPcqJs9dZMiDddz1eQ==} + engines: {node: '>=14'} + dev: false + /@opentelemetry/semantic-conventions@1.18.1: resolution: {integrity: sha512-+NLGHr6VZwcgE/2lw8zDIufOCGnzsA5CbQIMleXZTrgkBd0TanCX+MiDYJ1TOS4KL/Tqk0nFRxawnaYr6pkZkA==} engines: {node: '>=14'} @@ -10267,7 +10914,6 @@ packages: resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} dependencies: '@babel/runtime': 7.23.7 - dev: true /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} @@ -10314,6 +10960,20 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true + /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.31)(react@18.2.0): + resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@types/react': 18.2.31 + react: 18.2.0 + dev: false + /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} peerDependencies: @@ -10327,6 +10987,20 @@ packages: '@types/react': 18.2.45 react: 18.2.0 + /@radix-ui/react-context@1.0.1(@types/react@18.2.31)(react@18.2.0): + resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@types/react': 18.2.31 + react: 18.2.0 + dev: false + /@radix-ui/react-context@1.0.1(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} peerDependencies: @@ -10341,6 +11015,40 @@ packages: react: 18.2.0 dev: true + /@radix-ui/react-dialog@1.0.5(@types/react-dom@18.2.14)(@types/react@18.2.31)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.31)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.31)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.14)(@types/react@18.2.31)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.31)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.31)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.31)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.31)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.14)(@types/react@18.2.31)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.31)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.31)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.31)(react@18.2.0) + '@types/react': 18.2.31 + '@types/react-dom': 18.2.14 + aria-hidden: 1.2.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.31)(react@18.2.0) + dev: false + /@radix-ui/react-direction@1.0.1(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} peerDependencies: @@ -10380,6 +11088,45 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true + /@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.2.14)(@types/react@18.2.31)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.31)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.31)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.31)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.31)(react@18.2.0) + '@types/react': 18.2.31 + '@types/react-dom': 18.2.14 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.31)(react@18.2.0): + resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@types/react': 18.2.31 + react: 18.2.0 + dev: false + /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} peerDependencies: @@ -10417,6 +11164,44 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true + /@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.31)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.31)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.31)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.31)(react@18.2.0) + '@types/react': 18.2.31 + '@types/react-dom': 18.2.14 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-id@1.0.1(@types/react@18.2.31)(react@18.2.0): + resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.31)(react@18.2.0) + '@types/react': 18.2.31 + react: 18.2.0 + dev: false + /@radix-ui/react-id@1.0.1(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} peerDependencies: @@ -10427,13 +11212,85 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.7 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0) - '@types/react': 18.2.45 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + react: 18.2.0 + dev: true + + /@radix-ui/react-popper@1.1.2(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@floating-ui/react-dom': 2.0.4(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/rect': 1.0.1 + '@types/react': 18.2.45 + '@types/react-dom': 18.2.17 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@radix-ui/react-portal@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.17 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.14)(@types/react@18.2.31)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.31)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.31 + '@types/react-dom': 18.2.14 react: 18.2.0 - dev: true + react-dom: 18.2.0(react@18.2.0) + dev: false - /@radix-ui/react-popper@1.1.2(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==} + /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.14)(@types/react@18.2.31)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -10446,24 +11303,16 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.7 - '@floating-ui/react-dom': 2.0.4(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.45)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.45)(react@18.2.0) - '@radix-ui/rect': 1.0.1 - '@types/react': 18.2.45 - '@types/react-dom': 18.2.17 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.31)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.31)(react@18.2.0) + '@types/react': 18.2.31 + '@types/react-dom': 18.2.14 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: true + dev: false - /@radix-ui/react-portal@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA==} + /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.14)(@types/react@18.2.31)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -10476,12 +11325,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.7 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.45 - '@types/react-dom': 18.2.17 + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.31)(react@18.2.0) + '@types/react': 18.2.31 + '@types/react-dom': 18.2.14 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: true + dev: false /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} @@ -10595,6 +11444,21 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true + /@radix-ui/react-slot@1.0.2(@types/react@18.2.31)(react@18.2.0): + resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.5 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.31)(react@18.2.0) + '@types/react': 18.2.31 + react: 18.2.0 + dev: false + /@radix-ui/react-slot@1.0.2(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} peerDependencies: @@ -10686,6 +11550,20 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true + /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.31)(react@18.2.0): + resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@types/react': 18.2.31 + react: 18.2.0 + dev: false + /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} peerDependencies: @@ -10700,6 +11578,21 @@ packages: react: 18.2.0 dev: true + /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.31)(react@18.2.0): + resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.31)(react@18.2.0) + '@types/react': 18.2.31 + react: 18.2.0 + dev: false + /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} peerDependencies: @@ -10715,6 +11608,21 @@ packages: react: 18.2.0 dev: true + /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.31)(react@18.2.0): + resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.31)(react@18.2.0) + '@types/react': 18.2.31 + react: 18.2.0 + dev: false + /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} peerDependencies: @@ -10730,6 +11638,20 @@ packages: react: 18.2.0 dev: true + /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.31)(react@18.2.0): + resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.7 + '@types/react': 18.2.31 + react: 18.2.0 + dev: false + /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} peerDependencies: @@ -10815,6 +11737,30 @@ packages: '@babel/runtime': 7.23.7 dev: true + /@react-google-maps/api@2.19.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Vt57XWzCKfsUjKOmFUl2erVVfOePkPK5OigF/f+q7UuV/Nm9KDDy1PMFBx+wNahEqOd6a32BxfsykEhBnbU9wQ==} + peerDependencies: + react: ^16.8 || ^17 || ^18 + react-dom: ^16.8 || ^17 || ^18 + dependencies: + '@googlemaps/js-api-loader': 1.16.2 + '@googlemaps/markerclusterer': 2.3.2 + '@react-google-maps/infobox': 2.19.2 + '@react-google-maps/marker-clusterer': 2.19.2 + '@types/google.maps': 3.53.5 + invariant: 2.2.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-google-maps/infobox@2.19.2: + resolution: {integrity: sha512-6wvBqeJsQ/eFSvoxg+9VoncQvNoVCdmxzxRpLvmjPD+nNC6mHM0vJH1xSqaKijkMrfLJT0nfkTGpovrF896jwg==} + dev: false + + /@react-google-maps/marker-clusterer@2.19.2: + resolution: {integrity: sha512-x9ibmsP0ZVqzyCo1Pitbw+4b6iEXRw/r1TCy3vOUR3eKrzWLnHYZMR325BkZW2r8fnuWE/V3Fp4QZOP9qYORCw==} + dev: false + /@repeaterjs/repeater@3.0.4: resolution: {integrity: sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==} dev: true @@ -11664,7 +12610,7 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@storybook/channels': 7.6.3 '@storybook/client-logger': 7.6.3 '@storybook/core-common': 7.6.3 @@ -11676,7 +12622,7 @@ packages: '@swc/core': 1.3.105 '@types/node': 18.19.8 '@types/semver': 7.5.6 - babel-loader: 9.1.3(@babel/core@7.23.7)(webpack@5.89.0) + babel-loader: 9.1.3(@babel/core@7.23.9)(webpack@5.89.0) browser-assert: 1.2.1 case-sensitive-paths-webpack-plugin: 2.4.0 constants-browserify: 1.0.0 @@ -12760,6 +13706,19 @@ packages: zod: 3.22.4 dev: false + /@t3-oss/env-core@0.8.0(typescript@5.3.3)(zod@3.22.4): + resolution: {integrity: sha512-Tc1pg0KH/tJeI0Z1s/Isp1VsGDj1N03ZAYFV8GjWgMxytF/ve0Dv+opjmTapHICRv8qiB1Y/fsTjkWNMpKPRCQ==} + peerDependencies: + typescript: '>=5.0.0' + zod: ^3.0.0 + peerDependenciesMeta: + typescript: + optional: true + dependencies: + typescript: 5.3.3 + zod: 3.22.4 + dev: false + /@t3-oss/env-nextjs@0.6.1(typescript@5.2.2)(zod@3.22.4): resolution: {integrity: sha512-z1dIC++Vxj9kmzX5nSPfcrCSkszy3dTEPC4Ssx7Ap5AqR3c2Qa7S0xf8axn6coy7D/vCXDAAnHYnCMDhtcY3SQ==} peerDependencies: @@ -12799,6 +13758,20 @@ packages: zod: 3.22.4 dev: false + /@t3-oss/env-nextjs@0.8.0(typescript@5.3.3)(zod@3.22.4): + resolution: {integrity: sha512-bJyoE8of4QmqZN7a49iLJAbUq4graScb9ezXzvnuIVr9JP43C093vmy55hT1uZL533CwiPz8zo1INwyAS6qnHw==} + peerDependencies: + typescript: '>=5.0.0' + zod: ^3.0.0 + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@t3-oss/env-core': 0.8.0(typescript@5.3.3)(zod@3.22.4) + typescript: 5.3.3 + zod: 3.22.4 + dev: false + /@testing-library/dom@9.3.3: resolution: {integrity: sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==} engines: {node: '>=14'} @@ -13065,6 +14038,10 @@ packages: resolution: {integrity: sha512-40um9QqwHjRS92qnOaDpL7RmDK15NuZYo9HihiJRbYkMQZlWnuH8AdvbMy8/o6lgLmKbDUKa+OALCltHdbOTpQ==} dev: true + /@types/google.maps@3.53.5: + resolution: {integrity: sha512-HoRq4Te8J6krH7hj+TfdYepqegoKZCj3kkaK5gf+ySFSHLvyqYkDvkrtbcVJXQ6QBphQ0h1TF7p4J6sOh4r/zg==} + dev: false + /@types/graceful-fs@4.1.7: resolution: {integrity: sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==} dependencies: @@ -13322,6 +14299,7 @@ packages: resolution: {integrity: sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==} dependencies: undici-types: 5.26.5 + dev: true /@types/node@8.10.66: resolution: {integrity: sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==} @@ -13392,7 +14370,6 @@ packages: resolution: {integrity: sha512-V835xgdSVmyQmI1KLV2BEIUgqEuinxp9O4G6g3FqO/SqLac049E53aysv0oEFD2kHfejeKU+ZqL2bcFWj9gLAQ==} dependencies: '@types/react': 18.2.48 - dev: true /@types/react-dom@18.2.17: resolution: {integrity: sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==} @@ -13436,7 +14413,6 @@ packages: '@types/prop-types': 15.7.11 '@types/scheduler': 0.16.8 csstype: 3.1.3 - dev: true /@types/react@18.2.45: resolution: {integrity: sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==} @@ -13886,6 +14862,27 @@ packages: - supports-color dev: true + /@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} + 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.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.4(supports-color@5.5.0) + eslint: 8.56.0 + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/scope-manager@5.62.0: resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -14195,6 +15192,28 @@ packages: - supports-color dev: true + /@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3): + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.4(supports-color@5.5.0) + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.3 + semver: 7.6.0 + ts-api-utils: 1.2.1(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/utils@5.62.0(eslint@8.54.0)(typescript@5.2.2): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -14880,7 +15899,6 @@ packages: /any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - dev: true /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} @@ -14888,7 +15906,6 @@ packages: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - dev: true /app-module-path@2.2.0: resolution: {integrity: sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ==} @@ -14923,7 +15940,6 @@ packages: /arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - dev: true /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -14939,7 +15955,6 @@ packages: engines: {node: '>=10'} dependencies: tslib: 2.6.2 - dev: true /aria-query@5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} @@ -15185,8 +16200,8 @@ packages: peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.22.2 - caniuse-lite: 1.0.30001572 + browserslist: 4.22.3 + caniuse-lite: 1.0.30001585 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -15291,17 +16306,17 @@ packages: '@babel/core': 7.23.7 dev: true - /babel-jest@29.7.0(@babel/core@7.23.7): + /babel-jest@29.7.0(@babel/core@7.23.9): resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@jest/transform': 29.7.0 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.23.7) + babel-preset-jest: 29.6.3(@babel/core@7.23.9) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -15309,14 +16324,14 @@ packages: - supports-color dev: true - /babel-loader@9.1.3(@babel/core@7.23.7)(webpack@5.89.0): + /babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.89.0): resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} engines: {node: '>= 14.15.0'} peerDependencies: '@babel/core': ^7.12.0 webpack: '>=5' dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 find-cache-dir: 4.0.0 schema-utils: 4.2.0 webpack: 5.89.0(@swc/core@1.3.105)(esbuild@0.18.20)(webpack-cli@5.1.4) @@ -15343,8 +16358,8 @@ packages: resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/template': 7.22.15 - '@babel/types': 7.23.6 + '@babel/template': 7.23.9 + '@babel/types': 7.23.9 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.4 dev: true @@ -15434,24 +16449,24 @@ packages: resolution: {integrity: sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==} dev: true - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.7): + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.9): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.7 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.7) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.7) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.7) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.7) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.7) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.7) + '@babel/core': 7.23.9 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.9) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.9) dev: true /babel-preset-fbjs@3.4.0(@babel/core@7.23.7): @@ -15489,15 +16504,15 @@ packages: babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 dev: true - /babel-preset-jest@29.6.3(@babel/core@7.23.7): + /babel-preset-jest@29.6.3(@babel/core@7.23.9): resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.7) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.9) dev: true /babel-preset-react-app@10.0.1: @@ -15536,7 +16551,6 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true /base-x@3.0.9: resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} @@ -15608,7 +16622,6 @@ packages: /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} - dev: true /bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} @@ -15866,7 +16879,6 @@ 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==} @@ -15879,7 +16891,6 @@ packages: engines: {node: '>=8'} dependencies: fill-range: 7.0.1 - dev: true /brorand@1.1.0: resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} @@ -16087,7 +17098,6 @@ packages: /camelcase-css@2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} - dev: true /camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} @@ -16108,13 +17118,8 @@ packages: /caniuse-lite@1.0.30001572: resolution: {integrity: sha512-1Pbh5FLmn5y4+QhNyJE9j3/7dK44dGB83/ZMjv/qJk86TvDbjk0LosiZo0i0WB0Vx607qMX9jYrn1VLHCkN4rw==} - /caniuse-lite@1.0.30001583: - resolution: {integrity: sha512-acWTYaha8xfhA/Du/z4sNZjHUWjkiuoAi2LM+T/aL+kemKQgPT1xBb/YKjlQ0Qo8gvbHsGNplrEJ+9G3gL7i4Q==} - dev: false - /caniuse-lite@1.0.30001585: resolution: {integrity: sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q==} - dev: true /capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} @@ -16285,7 +17290,6 @@ packages: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.3 - dev: true /chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} @@ -16529,7 +17533,6 @@ packages: /commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} - dev: true /commander@6.2.1: resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} @@ -16586,7 +17589,6 @@ packages: /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: true /concat-stream@1.6.2: resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} @@ -16997,7 +17999,6 @@ packages: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true - dev: true /csso@5.0.5: resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} @@ -17455,7 +18456,6 @@ packages: /detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - dev: true /detect-package-manager@2.0.1: resolution: {integrity: sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==} @@ -17641,7 +18641,6 @@ packages: /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - dev: true /diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} @@ -17657,7 +18656,6 @@ packages: /dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - dev: true /doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} @@ -18268,7 +19266,32 @@ packages: eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.19.1)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.19.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-jsx-a11y: 6.8.0(eslint@8.56.0) + eslint-plugin-react: 7.33.2(eslint@8.56.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.56.0) + typescript: 5.3.3 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-config-next@14.1.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-SBX2ed7DoRFXC6CQSLc/SbLY9Ut6HxNB2wPTcoIWjUMd7aF7O/SIE7111L8FdZ9TXsNV4pulUDnfthpyPtbFUg==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@next/eslint-plugin-next': 14.1.0 + '@rushstack/eslint-patch': 1.5.1 + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.56.0) eslint-plugin-react: 7.33.2(eslint@8.56.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.56.0) @@ -18341,9 +19364,32 @@ packages: dependencies: debug: 4.3.4(supports-color@5.5.0) enhanced-resolve: 5.15.0 - eslint: 8.52.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.19.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.52.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.52.0) + eslint: 8.52.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.19.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.52.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.52.0) + fast-glob: 3.3.2 + 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-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.19.1)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.54.0): + resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + dependencies: + debug: 4.3.4(supports-color@5.5.0) + enhanced-resolve: 5.15.0 + eslint: 8.54.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.19.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.54.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.19.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.54.0) fast-glob: 3.3.2 get-tsconfig: 4.7.2 is-core-module: 2.13.1 @@ -18355,7 +19401,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.19.1)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.54.0): + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.19.1)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0): resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -18364,9 +19410,9 @@ packages: dependencies: debug: 4.3.4(supports-color@5.5.0) enhanced-resolve: 5.15.0 - eslint: 8.54.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.19.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.54.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.19.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.54.0) + eslint: 8.56.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.19.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) fast-glob: 3.3.2 get-tsconfig: 4.7.2 is-core-module: 2.13.1 @@ -18378,7 +19424,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.19.1)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0): + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0): resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -18388,8 +19434,8 @@ packages: debug: 4.3.4(supports-color@5.5.0) enhanced-resolve: 5.15.0 eslint: 8.56.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.19.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.19.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) fast-glob: 3.3.2 get-tsconfig: 4.7.2 is-core-module: 2.13.1 @@ -18549,6 +19595,36 @@ packages: - supports-color dev: true + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.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.21.0(eslint@8.56.0)(typescript@5.3.3) + debug: 3.2.7(supports-color@8.1.1) + eslint: 8.56.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0) + transitivePeerDependencies: + - supports-color + dev: true + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint@8.52.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} @@ -18698,7 +19774,7 @@ packages: - supports-color dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.19.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.19.1)(eslint@8.56.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -18733,7 +19809,7 @@ packages: - supports-color dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.19.1)(eslint@8.56.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -18743,7 +19819,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.19.1(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 @@ -18752,7 +19828,7 @@ packages: doctrine: 2.1.0 eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.19.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -19606,7 +20682,6 @@ packages: glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.5 - dev: true /fast-json-parse@1.0.3: resolution: {integrity: sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==} @@ -19675,7 +20750,6 @@ packages: resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==} dependencies: reusify: 1.0.4 - dev: true /faye-websocket@0.10.0: resolution: {integrity: sha512-Xhj93RXbMSq8urNCUq4p9l0P6hnySJ/7YNRhYNug0bLOuii7pKO7xQFb5mx9xZXWCar88pLPb805PvUkwrLZpQ==} @@ -19831,7 +20905,6 @@ packages: engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - dev: true /finalhandler@1.1.2: resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} @@ -20213,14 +21286,12 @@ packages: /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: true optional: true /function-bind@1.1.2: @@ -20331,7 +21402,6 @@ packages: /get-nonce@1.0.1: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} - dev: true /get-npm-tarball-url@2.1.0: resolution: {integrity: sha512-ro+DiMu5DXgRBabqXupW38h7WPZ9+Ad8UjwhvsmmN8w1sU7ab0nzAXvVZ4kqYg57OrqomRtJvepX5/xvFKNtjA==} @@ -20456,14 +21526,12 @@ packages: engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 - dev: true /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==} @@ -20499,7 +21567,6 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: true /glob@7.1.7: resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} @@ -20797,6 +21864,36 @@ packages: - utf-8-validate dev: true + /graphql-config@5.0.3(@types/node@20.11.5)(graphql@16.8.1)(typescript@5.3.3): + resolution: {integrity: sha512-BNGZaoxIBkv9yy6Y7omvsaBUHOzfFcII3UN++tpH8MGOKFPFkCPZuwx09ggANMt8FgyWP1Od8SWPmrUEZca4NQ==} + engines: {node: '>= 16.0.0'} + peerDependencies: + cosmiconfig-toml-loader: ^1.0.0 + graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + cosmiconfig-toml-loader: + optional: true + dependencies: + '@graphql-tools/graphql-file-loader': 8.0.0(graphql@16.8.1) + '@graphql-tools/json-file-loader': 8.0.0(graphql@16.8.1) + '@graphql-tools/load': 8.0.0(graphql@16.8.1) + '@graphql-tools/merge': 9.0.0(graphql@16.8.1) + '@graphql-tools/url-loader': 8.0.0(@types/node@20.11.5)(graphql@16.8.1) + '@graphql-tools/utils': 10.0.6(graphql@16.8.1) + cosmiconfig: 8.3.6(typescript@5.3.3) + graphql: 16.8.1 + jiti: 1.20.0 + minimatch: 4.2.3 + string-env-interpolation: 1.0.1 + tslib: 2.6.2 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - encoding + - typescript + - utf-8-validate + dev: true + /graphql-config@5.0.3(@types/node@20.8.10)(graphql@16.8.1)(typescript@5.2.2): resolution: {integrity: sha512-BNGZaoxIBkv9yy6Y7omvsaBUHOzfFcII3UN++tpH8MGOKFPFkCPZuwx09ggANMt8FgyWP1Od8SWPmrUEZca4NQ==} engines: {node: '>= 16.0.0'} @@ -21707,7 +22804,6 @@ packages: dependencies: once: 1.4.0 wrappy: 1.0.2 - dev: true /inherits@2.0.1: resolution: {integrity: sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==} @@ -21894,7 +22990,6 @@ packages: engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 - dev: true /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} @@ -21945,7 +23040,6 @@ packages: /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - dev: true /is-finalizationregistry@1.0.2: resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} @@ -21973,7 +23067,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - dev: true /is-gzip@1.0.0: resolution: {integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==} @@ -22035,7 +23128,6 @@ packages: /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - dev: true /is-obj@1.0.1: resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} @@ -22295,8 +23387,8 @@ packages: resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.23.7 - '@babel/parser': 7.23.6 + '@babel/core': 7.23.9 + '@babel/parser': 7.23.9 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 7.6.0 @@ -22479,11 +23571,11 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 '@types/node': 20.11.5 - babel-jest: 29.7.0(@babel/core@7.23.7) + babel-jest: 29.7.0(@babel/core@7.23.9) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -22519,11 +23611,11 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 '@types/node': 20.8.10 - babel-jest: 29.7.0(@babel/core@7.23.7) + babel-jest: 29.7.0(@babel/core@7.23.9) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -22799,15 +23891,15 @@ packages: resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/generator': 7.23.6 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.7) - '@babel/types': 7.23.6 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.9) + '@babel/types': 7.23.9 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.7) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.9) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -22949,7 +24041,6 @@ packages: /jiti@1.20.0: resolution: {integrity: sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==} hasBin: true - dev: true /jose@4.15.2: resolution: {integrity: sha512-IY73F228OXRl9ar3jJagh7Vnuhj/GzBunPiZP13K0lOl7Am9SoWW3kEzq3MCllJMTtZqHTiDXQvoRd4U95aU6A==} @@ -23293,6 +24384,10 @@ packages: engines: {node: '>=12.0.0'} dev: false + /kdbush@4.0.2: + resolution: {integrity: sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==} + dev: false + /keyv@3.0.0: resolution: {integrity: sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==} dependencies: @@ -23481,7 +24576,6 @@ packages: /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} - dev: true /lilconfig@3.0.0: resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} @@ -24079,7 +25173,6 @@ packages: /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - dev: true /merkle-lib@2.0.10: resolution: {integrity: sha512-XrNQvUbn1DL5hKNe46Ccs+Tu3/PYOlrcZILuGUhb95oKBPjc/nmIC8D462PQkipVDGKRvwhn+QFg2cCdIvmDJA==} @@ -24109,6 +25202,18 @@ packages: '@types/node': 20.10.4 dev: true + /meros@1.3.0(@types/node@20.11.5): + resolution: {integrity: sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w==} + engines: {node: '>=13'} + peerDependencies: + '@types/node': '>=13' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@types/node': 20.11.5 + dev: true + /meros@1.3.0(@types/node@20.8.10): resolution: {integrity: sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w==} engines: {node: '>=13'} @@ -24140,7 +25245,6 @@ packages: dependencies: braces: 3.0.2 picomatch: 2.3.1 - dev: true /migrate-mongo@11.0.0(mongodb@6.3.0): resolution: {integrity: sha512-GB/gHzUwp/fL1w6ksNGihTyb+cSrm6NbVLlz1OSkQKaLlzAXMwH7iKK2ZS7W5v+I8vXiY2rL58WTUZSAL6QR+A==} @@ -24234,7 +25338,6 @@ packages: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - dev: true /minimatch@4.2.3: resolution: {integrity: sha512-lIUdtK5hdofgCTu3aT0sOaHsYR37viUuIc0rwnnDXImbwFRcumyLMeZaM0t0I/fgxS6s6JMfu0rLD1Wz9pv1ng==} @@ -24497,7 +25600,6 @@ packages: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 - dev: true /nan@2.18.0: resolution: {integrity: sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==} @@ -24516,7 +25618,6 @@ packages: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - dev: true /nanolru@1.0.0: resolution: {integrity: sha512-GyQkE8M32pULhQk7Sko5raoIbPalAk90ICG+An4fq6fCsFHsP6fB2K46WGXVdoJpy4SGMnZ/EKbo123fZJomWg==} @@ -24755,7 +25856,7 @@ packages: '@opentelemetry/api': 1.7.0 '@swc/helpers': 0.5.2 busboy: 1.6.0 - caniuse-lite: 1.0.30001583 + caniuse-lite: 1.0.30001585 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.2.0 @@ -24972,7 +26073,6 @@ packages: /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - dev: true /normalize-range@0.1.2: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} @@ -25485,7 +26585,6 @@ packages: /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==} @@ -25625,12 +26724,10 @@ packages: /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - dev: true /pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} - dev: true /pify@3.0.0: resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} @@ -25713,7 +26810,6 @@ packages: /pirates@4.0.6: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} - dev: true /pkg-dir@3.0.0: resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} @@ -25813,7 +26909,6 @@ packages: postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - dev: true /postcss-js@4.0.1(postcss@8.4.32): resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} @@ -25823,7 +26918,6 @@ packages: dependencies: camelcase-css: 2.0.1 postcss: 8.4.32 - dev: true /postcss-load-config@4.0.1(postcss@8.4.32): resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} @@ -25840,7 +26934,6 @@ packages: lilconfig: 2.1.0 postcss: 8.4.32 yaml: 2.3.4 - dev: true /postcss-load-config@5.0.2(postcss@8.4.31): resolution: {integrity: sha512-Q8QR3FYbqOKa0bnC1UQ2bFq9/ulHX5Bi34muzitMr8aDtUelO5xKeJEYC/5smE0jNE9zdB/NBnOwXKexELbRlw==} @@ -25972,7 +27065,6 @@ packages: dependencies: postcss: 8.4.32 postcss-selector-parser: 6.0.13 - dev: true /postcss-reporter@7.0.5(postcss@8.4.31): resolution: {integrity: sha512-glWg7VZBilooZGOFPhN9msJ3FQs19Hie7l5a/eE6WglzYqVeH3ong3ShFcp9kDWJT1g2Y/wd59cocf9XxBtkWA==} @@ -25991,11 +27083,9 @@ packages: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - dev: true /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - dev: true /postcss-values-parser@2.0.1: resolution: {integrity: sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==} @@ -26041,7 +27131,6 @@ packages: nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.0.2 - dev: true /postgres-array@2.0.0: resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} @@ -26482,7 +27571,6 @@ packages: /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true /queue-tick@1.0.1: resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} @@ -26658,9 +27746,9 @@ packages: resolution: {integrity: sha512-rCz0HBIT0LWbIM+///LfRrJoTKftIzzwsYDf0ns5KwaEjejMHQRtphcns+IXFHDNY9pnz6G8l/JbbI6pD4EAIA==} engines: {node: '>=16.14.0'} dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/traverse': 7.23.7 - '@babel/types': 7.23.6 + '@babel/types': 7.23.9 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.4 '@types/doctrine': 0.0.9 @@ -26777,6 +27865,22 @@ packages: engines: {node: '>=0.10.0'} dev: true + /react-remove-scroll-bar@2.3.4(@types/react@18.2.31)(react@18.2.0): + resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.31 + react: 18.2.0 + react-style-singleton: 2.2.1(@types/react@18.2.31)(react@18.2.0) + tslib: 2.6.2 + dev: false + /react-remove-scroll-bar@2.3.4(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} engines: {node: '>=10'} @@ -26793,6 +27897,25 @@ packages: tslib: 2.6.2 dev: true + /react-remove-scroll@2.5.5(@types/react@18.2.31)(react@18.2.0): + resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.31 + react: 18.2.0 + react-remove-scroll-bar: 2.3.4(@types/react@18.2.31)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.31)(react@18.2.0) + tslib: 2.6.2 + use-callback-ref: 1.3.0(@types/react@18.2.31)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.31)(react@18.2.0) + dev: false + /react-remove-scroll@2.5.5(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} engines: {node: '>=10'} @@ -26812,6 +27935,23 @@ packages: use-sidecar: 1.1.2(@types/react@18.2.45)(react@18.2.0) dev: true + /react-style-singleton@2.2.1(@types/react@18.2.31)(react@18.2.0): + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.31 + get-nonce: 1.0.1 + invariant: 2.2.4 + react: 18.2.0 + tslib: 2.6.2 + dev: false + /react-style-singleton@2.2.1(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} @@ -26874,7 +28014,6 @@ packages: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} dependencies: pify: 2.3.0 - dev: true /read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} @@ -26930,7 +28069,6 @@ packages: engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 - dev: true /real-require@0.2.0: resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} @@ -27058,6 +28196,21 @@ packages: dependencies: jsesc: 0.5.0 + /rehackt@0.0.3(@types/react@18.2.31)(react@18.2.0): + resolution: {integrity: sha512-aBRHudKhOWwsTvCbSoinzq+Lej/7R8e8UoPvLZo5HirZIIBLGAgdG7SL9QpdcBoQ7+3QYPi3lRLknAzXBlhZ7g==} + peerDependencies: + '@types/react': '*' + react: '*' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + dependencies: + '@types/react': 18.2.31 + react: 18.2.0 + dev: false + /relateurl@0.2.7: resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} engines: {node: '>= 0.10'} @@ -27263,7 +28416,6 @@ packages: /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true /rfdc@1.3.0: resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} @@ -27306,7 +28458,6 @@ packages: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - dev: true /rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} @@ -27390,7 +28541,7 @@ packages: engines: {node: '>=14.0.0'} hasBin: true dependencies: - chokidar: 3.5.3 + chokidar: 3.6.0 immutable: 4.3.4 source-map-js: 1.0.2 dev: true @@ -28313,7 +29464,12 @@ packages: mz: 2.7.0 pirates: 4.0.6 ts-interface-checker: 0.1.13 - dev: true + + /supercluster@8.0.1: + resolution: {integrity: sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==} + dependencies: + kdbush: 4.0.2 + dev: false /superjson@1.13.3: resolution: {integrity: sha512-mJiVjfd2vokfDxsQPOwJ/PtanO87LhpYY88ubI5dUB1Ab58Txbyje3+jpm+/83R/fevaq/107NNhtYBLuoTrFg==} @@ -28448,7 +29604,15 @@ packages: /tailwind-merge@2.1.0: resolution: {integrity: sha512-l11VvI4nSwW7MtLSLYT4ldidDEUwQAMWuSHk7l4zcXZDgnCRa0V3OdCwFfM7DCzakVXMNRwAeje9maFFXT71dQ==} dependencies: - '@babel/runtime': 7.23.5 + '@babel/runtime': 7.23.7 + dev: false + + /tailwindcss-animate@1.0.7(tailwindcss@3.4.1): + resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + dependencies: + tailwindcss: 3.4.1 dev: false /tailwindcss@3.4.1: @@ -28480,7 +29644,6 @@ packages: sucrase: 3.34.0 transitivePeerDependencies: - ts-node - dev: true /tapable@1.1.3: resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} @@ -28726,13 +29889,11 @@ packages: engines: {node: '>=0.8'} dependencies: thenify: 3.3.1 - dev: true /thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} dependencies: any-promise: 1.3.0 - dev: true /thirty-two@1.0.2: resolution: {integrity: sha512-OEI0IWCe+Dw46019YLl6V10Us5bi574EvlJEOcAkB29IzQ/mYD1A6RyNHLjZPiHCmuodxvgF6U+vZO1L15lxVA==} @@ -28861,7 +30022,6 @@ packages: engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - dev: true /tocbot@4.23.0: resolution: {integrity: sha512-5DWuSZXsqG894mkGb8ZsQt9myyQyVxE50AiGRZ0obV0BVUTVkaZmc9jbgpknaAAPUm4FIrzGkEseD6FuQJYJDQ==} @@ -28951,6 +30111,15 @@ packages: typescript: 5.2.2 dev: true + /ts-api-utils@1.2.1(typescript@5.3.3): + resolution: {integrity: sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.3.3 + dev: true + /ts-dedent@2.2.0: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} @@ -28963,7 +30132,6 @@ packages: /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - dev: true /ts-invariant@0.10.3: resolution: {integrity: sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==} @@ -29541,6 +30709,21 @@ packages: resolution: {integrity: sha512-WHN8KDQblxd32odxeIgo83rdVDE2bvdkb86it7bMhYZwWKJz0+O0RK/eZiHYnM+zgt/U7hAHOlCQGfjjvSkw2g==} dev: true + /use-callback-ref@1.3.0(@types/react@18.2.31)(react@18.2.0): + resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.31 + react: 18.2.0 + tslib: 2.6.2 + dev: false + /use-callback-ref@1.3.0(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} engines: {node: '>=10'} @@ -29587,6 +30770,22 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true + /use-sidecar@1.1.2(@types/react@18.2.31)(react@18.2.0): + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.31 + detect-node-es: 1.1.0 + react: 18.2.0 + tslib: 2.6.2 + dev: false + /use-sidecar@1.1.2(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} @@ -29654,7 +30853,7 @@ packages: resolution: {integrity: sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==} engines: {node: '>=10.12.0'} dependencies: - '@jridgewell/trace-mapping': 0.3.20 + '@jridgewell/trace-mapping': 0.3.22 '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 2.0.0 dev: true @@ -30242,15 +31441,9 @@ packages: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - /yaml@2.3.2: - resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==} - engines: {node: '>= 14'} - dev: true - /yaml@2.3.4: resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} engines: {node: '>= 14'} - dev: true /yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 900f078d1d..348a533c53 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -5,6 +5,7 @@ packages: - apps/dashboard - apps/admin-panel - apps/pay + - apps/map - lib/eslint-config - lib/gt3-server-node-express-sdk - lib/galoy-components