diff --git a/.env.example b/.env.example
index cf8e312..64d04a5 100644
--- a/.env.example
+++ b/.env.example
@@ -2,33 +2,31 @@
# Put concrete values into app-specific env files.
BOOKRA_APP_ENV=staging
-BOOKRA_APP_URL=https://app.bookra.example
BOOKRA_API_URL=https://api.bookra.example
-BOOKRA_NEON_AUTH_URL=https://ep-mute-water-alem1v8u.neonauth.c-3.eu-central-1.aws.neon.tech/neondb/auth
+BOOKRA_FRONTEND_URL=https://app.bookra.example
+BOOKRA_NEON_AUTH_URL=https://ep-example.neonauth.region.aws.neon.tech/neondb/auth
-# Stripe billing (preferred)
-BOOKRA_STRIPE_SECRET_KEY=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
+# Stripe billing (the only billing provider)
+BOOKRA_STRIPE_API_KEY=sk_test_xxx
BOOKRA_STRIPE_WEBHOOK_SECRET=whsec_xxx
# Stripe Monthly Prices
-BOOKRA_STRIPE_STARTER_CZK_MONTHLY_PRICE_ID=price_1TV6Z6GrjyNQaOSGZFcmltqI
-BOOKRA_STRIPE_STARTER_USD_MONTHLY_PRICE_ID=price_1TV6cAGrjyNQaOSGXBhOq3Dk
-BOOKRA_STRIPE_PRO_CZK_MONTHLY_PRICE_ID=price_1TV6ZZGrjyNQaOSGqWENnjDD
-BOOKRA_STRIPE_PRO_USD_MONTHLY_PRICE_ID=price_1TV6dXGrjyNQaOSGeWzJlg2n
-BOOKRA_STRIPE_BUSINESS_CZK_MONTHLY_PRICE_ID=price_1TV6bgGrjyNQaOSGqzGTM68E
-BOOKRA_STRIPE_BUSINESS_USD_MONTHLY_PRICE_ID=price_1TV6dpGrjyNQaOSGCqKO42Oi
+BOOKRA_STRIPE_STARTER_CZK_MONTHLY_PRICE_ID=price_xxx
+BOOKRA_STRIPE_STARTER_USD_MONTHLY_PRICE_ID=price_xxx
+BOOKRA_STRIPE_PRO_CZK_MONTHLY_PRICE_ID=price_xxx
+BOOKRA_STRIPE_PRO_USD_MONTHLY_PRICE_ID=price_xxx
+BOOKRA_STRIPE_BUSINESS_CZK_MONTHLY_PRICE_ID=price_xxx
+BOOKRA_STRIPE_BUSINESS_USD_MONTHLY_PRICE_ID=price_xxx
-# Stripe Yearly Prices (17% discount)
-BOOKRA_STRIPE_STARTER_CZK_YEARLY_PRICE_ID=price_1TVAlqGrjyNQaOSGNiZQ5tEx
-BOOKRA_STRIPE_STARTER_USD_YEARLY_PRICE_ID=price_1TVAnSGrjyNQaOSGTHQHrgv3
-BOOKRA_STRIPE_PRO_CZK_YEARLY_PRICE_ID=price_1TVAmVGrjyNQaOSGWDgWqYvb
-BOOKRA_STRIPE_PRO_USD_YEARLY_PRICE_ID=price_1TVAnjGrjyNQaOSGvAANw64k
-BOOKRA_STRIPE_BUSINESS_CZK_YEARLY_PRICE_ID=price_1TVAmsGrjyNQaOSGL7Sl5cCd
-BOOKRA_STRIPE_BUSINESS_USD_YEARLY_PRICE_ID=price_1TVAo7GrjyNQaOSGB8LSCOua
+# Stripe Yearly Prices
+BOOKRA_STRIPE_STARTER_CZK_YEARLY_PRICE_ID=price_xxx
+BOOKRA_STRIPE_STARTER_USD_YEARLY_PRICE_ID=price_xxx
+BOOKRA_STRIPE_PRO_CZK_YEARLY_PRICE_ID=price_xxx
+BOOKRA_STRIPE_PRO_USD_YEARLY_PRICE_ID=price_xxx
+BOOKRA_STRIPE_BUSINESS_CZK_YEARLY_PRICE_ID=price_xxx
+BOOKRA_STRIPE_BUSINESS_USD_YEARLY_PRICE_ID=price_xxx
-# Stripe SMS prices — one per market/currency (create as standard prices, not metered)
-# These are used for monthly aggregate billing (invoice item at month end)
-# Czech: 1.50 CZK per SMS | US: ~$0.065 per SMS | EUR: ~€0.060 | GBP: ~£0.050 | PLN: ~0.27zł
+# Stripe SMS prices — one per currency (standard prices, not metered)
BOOKRA_STRIPE_SMS_CZK_PRICE_ID=price_xxx
BOOKRA_STRIPE_SMS_USD_PRICE_ID=price_xxx
BOOKRA_STRIPE_SMS_EUR_PRICE_ID=
@@ -39,35 +37,6 @@ BOOKRA_STRIPE_SMS_PLN_PRICE_ID=
BOOKRA_SMSMANAGER_API_KEY=your_smsmanager_api_key
BOOKRA_SMSMANAGER_BASE_URL=https://api.smsmngr.com/v2
-# Legacy price IDs (fallback)
-BOOKRA_STRIPE_STARTER_CZK_PRICE_ID=price_1TV6Z6GrjyNQaOSGZFcmltqI
-BOOKRA_STRIPE_STARTER_USD_PRICE_ID=price_1TV6cAGrjyNQaOSGXBhOq3Dk
-BOOKRA_STRIPE_PRO_CZK_PRICE_ID=price_1TV6ZZGrjyNQaOSGqWENnjDD
-BOOKRA_STRIPE_PRO_USD_PRICE_ID=price_1TV6dXGrjyNQaOSGeWzJlg2n
-BOOKRA_STRIPE_BUSINESS_CZK_PRICE_ID=price_1TV6bgGrjyNQaOSGqzGTM68E
-BOOKRA_STRIPE_BUSINESS_USD_PRICE_ID=price_1TV6dpGrjyNQaOSGCqKO42Oi
-
-VITE_STRIPE_PUBLISHABLE_KEY=pk_live_51TV6GOGrjyNQaOSGddY1BS14H63e1uYgZUgPe25WhP7yMxmZxMprN3U3scnsmKGBmREzHLrhJlVSEiErimNwVtuR00TRAcHaJi
-
# Admin credentials (for platform management)
BOOKRA_ADMIN_EMAIL=admin@example.com
-BOOKRA_ADMIN_KEY=your-secure-admin-key-here
-
-# Paddle billing (fallback)
-BOOKRA_PADDLE_ENV=sandbox
-BOOKRA_PADDLE_API_KEY=pdl_sdbx_api_key
-BOOKRA_PADDLE_WEBHOOK_SECRET=pdl_ntfset_secret
-BOOKRA_PADDLE_STARTER_CZK_PRICE_ID=pri_starter_czk_123
-BOOKRA_PADDLE_STARTER_USD_PRICE_ID=pri_starter_usd_123
-BOOKRA_PADDLE_PRO_CZK_PRICE_ID=pri_pro_czk_123
-BOOKRA_PADDLE_PRO_USD_PRICE_ID=pri_pro_usd_123
-BOOKRA_PADDLE_BUSINESS_CZK_PRICE_ID=pri_business_czk_123
-BOOKRA_PADDLE_BUSINESS_USD_PRICE_ID=pri_business_usd_123
-VITE_PADDLE_CLIENT_TOKEN=test_paddle_client_token
-
-BOOKRA_SMTP_HOST=smtp.example.com
-BOOKRA_UMAMI_API_URL=https://umami.example.com
-
-# Sentry (optional)
-VITE_SENTRY_DSN=https://462fb8597035778961e2e06c48c7c7fd@o4511360379191296.ingest.de.sentry.io/4511360406454352
-BOOKRA_SENTRY_DSN=https://462fb8597035778961e2e06c48c7c7fd@o4511360379191296.ingest.de.sentry.io/4511360406454352
+BOOKRA_ADMIN_KEY=replace-with-secure-random-key
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 0d406f3..d94d039 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -48,7 +48,6 @@ jobs:
matrix:
app:
- apps/backend
- - apps/auth-service
defaults:
run:
working-directory: ${{ matrix.app }}
@@ -83,8 +82,6 @@ jobs:
service:
- name: backend
context: apps/backend
- - name: auth-service
- context: apps/auth-service
steps:
- name: Checkout
uses: actions/checkout@v5
diff --git a/.gitignore b/.gitignore
index 67a12dd..6080f85 100644
--- a/.gitignore
+++ b/.gitignore
@@ -77,4 +77,11 @@ playwright/.cache/
# Desloppify
desloppify-out/
.desloppify/
-.opencode
\ No newline at end of file
+.opencode
+# Local deploy env files (contain live secrets — never commit)
+*.env
+!*.env.example
+
+# Analysis output
+graphify-out/
+output/
diff --git a/AGENTS.md b/AGENTS.md
index 3ca1196..26a3b2f 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -9,7 +9,7 @@
## Database
- Uses PostgreSQL via Neon (pooled URL for app, direct URL for migrations)
- Migrations with Goose: `npm run db:migrate:up`
-- SQLC for typed queries: `npm run db:generate`
+- Handwritten pgx repositories (sqlc tooling removed); migrations: `npm run db:migrate:up`
## SMS Feature
diff --git a/FRONTEND_ISSUES.md b/FRONTEND_ISSUES.md
index c5c6ee1..5341793 100644
--- a/FRONTEND_ISSUES.md
+++ b/FRONTEND_ISSUES.md
@@ -27,3 +27,15 @@
- Many dashboard inline i18n ternaries remain (~280). Systematic extraction to `i18n.t()` keys is an ongoing task.
- Registration cannot be fully customer-tested locally until Neon Auth environment variables are configured.
+
+## Fixed This Session (platform audit pass)
+
+- Billing checkout sends `planCode`/`currency`/`billingInterval` and reads `checkoutUrl` (was `{interval}`/`url` — broken end-to-end). Plan selector added to the billing page.
+- Billing page now reads normalized backend fields (`status`, `planCode`, `trialDays`, `maxBookingsMonth`).
+- Zones page rewired to real catalog APIs: locations CRUD, blocked days CRUD, working-hours persistence — all three tabs now functional.
+- Customers page loads `GET /v1/catalog/customers` instead of hardcoded mock rows (demo mode keeps sample data).
+- Settings email-template editor now loads saved templates via `GET /v1/tenants/email-templates` and saves with `isEnabled`.
+- Dead code removed: `dashboard-route.tsx`, `dashboard-route.tsx.backup`, `lib/paddle.ts`, `lib/stripe.ts`, `@paddle/paddle-js`, `@stripe/stripe-js`.
+- Demo bootstrap slug aligned with backend demo tenant (`studio-atelier`).
+- Paddle mentions replaced by Stripe in legal + i18n copy.
+- `@neondatabase/neon-js` bumped to 0.7.0-beta — `npm audit` now reports 0 vulnerabilities.
diff --git a/README.md b/README.md
index 2b32121..da023d6 100644
--- a/README.md
+++ b/README.md
@@ -1,18 +1,17 @@
# Bookra
-Remote-first booking SaaS scaffold aligned to the `tdvorak-fullstack` profile with these overrides:
+Remote-first booking SaaS aligned to the `tdvorak-fullstack` profile with these overrides:
- frontend on Vercel
- backend on Railway
- Neon Postgres + Neon Auth
-- Paddle billing
+- Stripe billing (checkout, customer portal, webhooks, SMS usage invoices)
- no Docker-based local runtime
## Workspace
- `apps/frontend` SolidJS frontend
- `apps/backend` Go API
-- `apps/auth-service` auth + internal admin service
- `packages/api-client` generated TypeScript client/types from OpenAPI
- `packages/shared-types` shared frontend constants and helpers
@@ -36,14 +35,17 @@ Both apps expect remote services:
- Neon Postgres
- Neon Auth
-- Paddle
-
-Optional extra service:
-
-- `apps/auth-service` for standalone auth/admin workflows
+- Stripe
See `.env.example`, `apps/frontend/.env.example`, and `apps/backend/.env.example`.
+### Demo mode
+
+Set `BOOKRA_DEMO_MODE=true` to run the backend with an in-memory repository and
+pre-populated demo data — no database, Neon Auth, or Stripe required. All
+requests are authenticated as the `demo-owner` principal. Pair with
+`VITE_BOOKRA_DEMO_MODE=true` on the frontend.
+
## CI/CD
- GitHub Actions CI lives in [`.github/workflows/ci.yml`](/home/tdvorak/Desktop/PROG+HTML/Bookra/.github/workflows/ci.yml:1)
@@ -52,13 +54,27 @@ See `.env.example`, `apps/frontend/.env.example`, and `apps/backend/.env.example
## Backend database commands
```bash
-npm run db:generate
npm run db:migrate:status
npm run db:migrate:up
```
`db:migrate:*` expects `BOOKRA_DATABASE_DIRECT_URL` to be exported in the shell.
+The API client types are regenerated from the OpenAPI spec:
+
+```bash
+npm run generate:api-client
+```
+
+## Verification
+
+```bash
+npm run verify
+```
+
+Runs API-client generation, frontend typecheck, backend tests, and both builds.
+Run this before pushing.
+
## Brand Colors
Bookra uses a sophisticated color system designed for modern booking interfaces with support for both light and dark themes.
@@ -90,7 +106,7 @@ Bookra uses a sophisticated color system designed for modern booking interfaces
### Shadow System
- **Shadow XS** (`--shadow-xs`): 0 1px 2px 0 rgba(0, 0, 0, 0.05)
-- **Shadow SM** (`--shadow-sm`): 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)
+- **Shadow SM** (`--shadow-sm`): 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.06)
- **Shadow MD** (`--shadow-md`): 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)
- **Shadow LG** (`--shadow-lg`): 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)
- **Shadow XL** (`--shadow-xl`): 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)
diff --git a/apps/backend/.env.example b/apps/backend/.env.example
index d86842c..61af88e 100644
--- a/apps/backend/.env.example
+++ b/apps/backend/.env.example
@@ -5,7 +5,7 @@
# - frontend signs users in with Neon Auth
# - backend verifies Neon Auth JWTs
# - backend serves booking + billing APIs
-# - Paddle handles SaaS billing + customer portal
+# - Stripe handles SaaS billing + customer portal
# ============================================
BOOKRA_APP_ENV=staging
@@ -37,33 +37,47 @@ BOOKRA_DATABASE_DIRECT_URL=postgres://user:password@ep-example.region.aws.neon.t
# AUTHENTICATION (Required when DEMO_MODE=false)
# --------------------------------------------
# Neon Auth base URL for JWKS verification.
-BOOKRA_NEON_AUTH_URL=https://ep-mute-water-alem1v8u.neonauth.c-3.eu-central-1.aws.neon.tech/neondb/auth
-# Optional emergency/local fallback for non-Neon JWT verification.
-# Leave blank in normal Neon Auth setup.
+BOOKRA_NEON_AUTH_URL=https://ep-example.neonauth.region.aws.neon.tech/neondb/auth
+# Local JWT fallback secret for the password-auth endpoints (/v1/auth/*).
+# Required when DEMO_MODE=false if you use local auth.
BOOKRA_AUTH_JWT_SECRET=
# --------------------------------------------
# INTERNAL SERVICES
# --------------------------------------------
# Job runner key for internal API endpoints (reminders, notifications)
-BOOKRA_JOB_RUNNER_KEY=job_runner_secret_123
+BOOKRA_JOB_RUNNER_KEY=replace-with-secure-random-key
# --------------------------------------------
-# PADDLE BILLING (Required for live checkout/webhooks)
+# STRIPE BILLING (Required for live checkout/webhooks)
# --------------------------------------------
-# BOOKRA_PADDLE_ENV must be "sandbox" or "live".
-# API key: Paddle dashboard -> Developer tools -> Authentication.
-# Webhook secret: Paddle dashboard -> Notification settings -> destination secret key.
-# Price IDs: Paddle dashboard -> Catalog -> Product price IDs.
-BOOKRA_PADDLE_ENV=sandbox
-BOOKRA_PADDLE_API_KEY=
-BOOKRA_PADDLE_WEBHOOK_SECRET=
-BOOKRA_PADDLE_STARTER_CZK_PRICE_ID=
-BOOKRA_PADDLE_STARTER_USD_PRICE_ID=
-BOOKRA_PADDLE_PRO_CZK_PRICE_ID=
-BOOKRA_PADDLE_PRO_USD_PRICE_ID=
-BOOKRA_PADDLE_BUSINESS_CZK_PRICE_ID=
-BOOKRA_PADDLE_BUSINESS_USD_PRICE_ID=
+# Secret API key + webhook signing secret from the Stripe dashboard.
+# Price IDs: Stripe dashboard -> Product catalog -> Price IDs.
+BOOKRA_STRIPE_API_KEY=sk_test_xxx
+BOOKRA_STRIPE_WEBHOOK_SECRET=whsec_xxx
+
+# Monthly subscription price IDs
+BOOKRA_STRIPE_STARTER_CZK_MONTHLY_PRICE_ID=price_xxx
+BOOKRA_STRIPE_STARTER_USD_MONTHLY_PRICE_ID=price_xxx
+BOOKRA_STRIPE_PRO_CZK_MONTHLY_PRICE_ID=price_xxx
+BOOKRA_STRIPE_PRO_USD_MONTHLY_PRICE_ID=price_xxx
+BOOKRA_STRIPE_BUSINESS_CZK_MONTHLY_PRICE_ID=price_xxx
+BOOKRA_STRIPE_BUSINESS_USD_MONTHLY_PRICE_ID=price_xxx
+
+# Yearly subscription price IDs
+BOOKRA_STRIPE_STARTER_CZK_YEARLY_PRICE_ID=price_xxx
+BOOKRA_STRIPE_STARTER_USD_YEARLY_PRICE_ID=price_xxx
+BOOKRA_STRIPE_PRO_CZK_YEARLY_PRICE_ID=price_xxx
+BOOKRA_STRIPE_PRO_USD_YEARLY_PRICE_ID=price_xxx
+BOOKRA_STRIPE_BUSINESS_CZK_YEARLY_PRICE_ID=price_xxx
+BOOKRA_STRIPE_BUSINESS_USD_YEARLY_PRICE_ID=price_xxx
+
+# SMS usage prices (standard prices — usage is aggregated monthly into invoices)
+BOOKRA_STRIPE_SMS_CZK_PRICE_ID=price_xxx
+BOOKRA_STRIPE_SMS_USD_PRICE_ID=price_xxx
+BOOKRA_STRIPE_SMS_EUR_PRICE_ID=
+BOOKRA_STRIPE_SMS_GBP_PRICE_ID=
+BOOKRA_STRIPE_SMS_PLN_PRICE_ID=
# --------------------------------------------
# EMAIL (Optional)
@@ -75,8 +89,25 @@ BOOKRA_SMTP_PORT=587
BOOKRA_SMTP_USERNAME=
BOOKRA_SMTP_PASSWORD=
+# --------------------------------------------
+# SMS Manager.cz (Optional — SMS add-on)
+# --------------------------------------------
+BOOKRA_SMSMANAGER_API_KEY=
+BOOKRA_SMSMANAGER_BASE_URL=https://api.smsmngr.com/v2
+
# --------------------------------------------
# ANALYTICS (Optional)
# --------------------------------------------
BOOKRA_UMAMI_API_URL=
BOOKRA_UMAMI_API_KEY=
+
+# --------------------------------------------
+# MONITORING (Optional)
+# --------------------------------------------
+BOOKRA_SENTRY_DSN=
+
+# --------------------------------------------
+# ADMIN (Optional — platform admin API)
+# --------------------------------------------
+BOOKRA_ADMIN_EMAIL=
+BOOKRA_ADMIN_KEY=
diff --git a/apps/backend/README.md b/apps/backend/README.md
index a5de229..470fe0b 100644
--- a/apps/backend/README.md
+++ b/apps/backend/README.md
@@ -1,13 +1,13 @@
# Bookra Backend
-Go + Gin API for Bookra, designed for Railway deployment with Neon Auth, Neon Postgres, and Paddle billing.
+Go + Gin API for Bookra, designed for Railway deployment with Neon Auth, Neon Postgres, and Stripe billing.
## Commands
```bash
go run ./cmd/api
go build ./...
-npm run db:generate
+go test ./...
npm run db:migrate:status
npm run db:migrate:up
```
@@ -18,57 +18,64 @@ npm run db:migrate:up
- `BOOKRA_DATABASE_URL` Neon pooled connection
- `BOOKRA_DATABASE_DIRECT_URL` Neon direct connection for migrations/admin tasks
- `BOOKRA_NEON_AUTH_URL` Neon Auth base URL used for JWKS verification
-- `BOOKRA_AUTH_JWT_SECRET` optional local JWT fallback when not using Neon Auth
-- `BOOKRA_JOB_RUNNER_KEY` shared secret for remote reminder dispatch calls
+- `BOOKRA_AUTH_JWT_SECRET` local JWT secret for the password-auth endpoints
+- `BOOKRA_JOB_RUNNER_KEY` shared secret for remote job-runner calls
- `BOOKRA_EMAIL_FROM` sender identity for email reminders
-- `BOOKRA_PADDLE_ENV` billing environment: `sandbox` or `live`
-- `BOOKRA_PADDLE_API_KEY` Paddle API key
-- `BOOKRA_PADDLE_WEBHOOK_SECRET` Paddle notification destination secret
-- `BOOKRA_PADDLE_{STARTER,PRO,BUSINESS}_{CZK,USD}_PRICE_ID` Paddle price IDs
+- `BOOKRA_SMTP_*` optional SMTP transport for email delivery
+- `BOOKRA_STRIPE_API_KEY` Stripe secret API key
+- `BOOKRA_STRIPE_WEBHOOK_SECRET` Stripe webhook signing secret
+- `BOOKRA_STRIPE_{STARTER,PRO,BUSINESS}_{CZK,USD}_{MONTHLY,YEARLY}_PRICE_ID` Stripe price IDs
+- `BOOKRA_STRIPE_SMS_{CZK,USD,...}_PRICE_ID` Stripe SMS usage price IDs
+- `BOOKRA_SMSMANAGER_API_KEY` optional SMS Manager.cz key
- `BOOKRA_UMAMI_API_URL` and `BOOKRA_UMAMI_API_KEY` optional analytics integration
+- `BOOKRA_ADMIN_EMAIL` and `BOOKRA_ADMIN_KEY` optional platform admin API credentials
+- `BOOKRA_SENTRY_DSN` optional error monitoring
+
+See `.env.example` for the full list.
## Notes
- Auth verification is isolated in `internal/auth`.
- OpenAPI lives in `openapi/bookra.openapi.yaml`.
-- SQL migrations live in `migrations/`.
-- `sqlc.yaml` is wired through `npm run db:generate`.
+- SQL migrations live in `migrations/` (goose).
+- Repositories are handwritten pgx in `internal/db/`; there is no generated query layer.
- Goose migrations are wired through `npm run db:migrate:*` and use the Neon direct connection URL.
-- Reminder dispatch now runs through `POST /v1/internal/jobs/reminders/dispatch` with `X-Bookra-Job-Key`.
+- Reminder dispatch runs through `POST /v1/internal/jobs/reminders/dispatch` with `X-Bookra-Job-Key`.
+- `BOOKRA_DEMO_MODE=true` swaps the repository for deterministic in-memory demo data and authenticates all requests as `demo-owner`.
## Production Auth
-Bookra production auth should use Neon Auth directly:
+Bookra production auth uses Neon Auth directly:
- frontend uses `VITE_NEON_AUTH_URL`
- backend verifies Neon JWTs with `BOOKRA_NEON_AUTH_URL`
-- auth-service may stay deployed for standalone auth/admin workflows, but backend billing and app APIs do not depend on it
Trusted redirect domains in Neon Auth should include your frontend origin such as `https://bookra.eu`, plus local dev origins when needed.
-## Paddle Setup
+## Stripe Setup
-Get these values from Paddle dashboard:
+Get these values from the Stripe dashboard:
-- `BOOKRA_PADDLE_ENV`: `sandbox` for testing, `live` for production
-- `BOOKRA_PADDLE_API_KEY`: Developer tools -> Authentication
-- `BOOKRA_PADDLE_WEBHOOK_SECRET`: Notification settings -> destination secret key
-- `BOOKRA_PADDLE_*_PRICE_ID`: Catalog -> each SaaS plan recurring price ID
+- `BOOKRA_STRIPE_API_KEY`: Developers -> API keys -> secret key
+- `BOOKRA_STRIPE_WEBHOOK_SECRET`: Developers -> Webhooks -> destination signing secret
+- `BOOKRA_STRIPE_*_PRICE_ID`: Product catalog -> recurring price IDs
-Create one recurring price per plan/currency you support:
+Create one recurring price per plan/currency/interval you support:
-- `starter` `czk`
-- `starter` `usd`
-- `pro` `czk`
-- `pro` `usd`
-- `business` `czk`
-- `business` `usd`
+- `starter` / `pro` / `business` × `czk` / `usd` × `monthly` / `yearly`
-Set your webhook destination to:
+Set the webhook destination to:
```text
-POST /v1/webhooks/paddle
-POST /api/paddle_webhook
+POST /v1/webhooks/stripe
```
-Use Paddle webhook simulator for event testing.
+Subscribe to at least: `checkout.session.completed`, `customer.subscription.created`,
+`customer.subscription.updated`, `customer.subscription.deleted`,
+`invoice.payment_succeeded`, `invoice.payment_failed`.
+
+For local testing:
+
+```bash
+stripe listen --forward-to http://localhost:8080/v1/webhooks/stripe
+```
diff --git a/apps/backend/cmd/api/main.go b/apps/backend/cmd/api/main.go
index d0e449e..a921b3c 100644
--- a/apps/backend/cmd/api/main.go
+++ b/apps/backend/cmd/api/main.go
@@ -25,8 +25,8 @@ func initSentry(cfg config.Config) {
Dsn: cfg.SentryDSN,
Environment: cfg.Environment,
Release: "bookra@1.0.0",
- // Set TracesSampleRate to 1.0 to capture 100% of transactions for testing
- TracesSampleRate: 1.0,
+ // 10% trace sampling keeps production volumes sane.
+ TracesSampleRate: 0.1,
})
if err != nil {
log.Fatalf("Sentry initialization failed: %v", err)
diff --git a/apps/backend/go.mod b/apps/backend/go.mod
index b7fdbc1..51210da 100644
--- a/apps/backend/go.mod
+++ b/apps/backend/go.mod
@@ -4,13 +4,14 @@ go 1.26.2
require (
github.com/MicahParks/keyfunc/v3 v3.8.0
- github.com/PaddleHQ/paddle-go-sdk/v5 v5.2.0
+ github.com/getsentry/sentry-go v0.46.2
github.com/gin-contrib/cors v1.7.7
github.com/gin-gonic/gin v1.12.0
github.com/golang-jwt/jwt/v5 v5.3.1
github.com/google/uuid v1.6.0
github.com/jackc/pgx/v5 v5.9.1
github.com/stripe/stripe-go/v81 v81.0.0
+ golang.org/x/crypto v0.48.0
golang.org/x/time v0.9.0
)
@@ -21,16 +22,12 @@ require (
github.com/bytedance/sonic/loader v0.5.0 // indirect
github.com/cloudwego/base64x v0.1.6 // indirect
github.com/gabriel-vasile/mimetype v1.4.12 // indirect
- github.com/getsentry/sentry-go v0.46.2 // indirect
- github.com/ggicci/httpin v0.20.3 // indirect
- github.com/ggicci/owl v0.8.2 // indirect
github.com/gin-contrib/sse v1.1.0 // indirect
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
github.com/go-playground/validator/v10 v10.30.1 // indirect
github.com/goccy/go-json v0.10.5 // indirect
github.com/goccy/go-yaml v1.19.2 // indirect
- github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
github.com/jackc/pgpassfile v1.0.0 // indirect
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
github.com/jackc/puddle/v2 v2.2.2 // indirect
@@ -47,7 +44,6 @@ require (
github.com/ugorji/go/codec v1.3.1 // indirect
go.mongodb.org/mongo-driver/v2 v2.5.0 // indirect
golang.org/x/arch v0.23.0 // indirect
- golang.org/x/crypto v0.48.0 // indirect
golang.org/x/net v0.51.0 // indirect
golang.org/x/sync v0.20.0 // indirect
golang.org/x/sys v0.41.0 // indirect
diff --git a/apps/backend/go.sum b/apps/backend/go.sum
index 0a48db5..229defa 100644
--- a/apps/backend/go.sum
+++ b/apps/backend/go.sum
@@ -2,8 +2,6 @@ github.com/MicahParks/jwkset v0.11.0 h1:yc0zG+jCvZpWgFDFmvs8/8jqqVBG9oyIbmBtmjOh
github.com/MicahParks/jwkset v0.11.0/go.mod h1:U2oRhRaLgDCLjtpGL2GseNKGmZtLs/3O7p+OZaL5vo0=
github.com/MicahParks/keyfunc/v3 v3.8.0 h1:Hx2dgIjAXGk9slakM6rV9BOeaWDPEXXZ4Us8guNBfds=
github.com/MicahParks/keyfunc/v3 v3.8.0/go.mod h1:z66bkCviwqfg2YUp+Jcc/xRE9IXLcMq6DrgV/+Htru0=
-github.com/PaddleHQ/paddle-go-sdk/v5 v5.2.0 h1:HJabVGWEsDyogj1Ib/ZGcMcP9Vc/e2tqIDYx0xZA+qI=
-github.com/PaddleHQ/paddle-go-sdk/v5 v5.2.0/go.mod h1:nlFfZYf7MovyHTE67+u7BARbMiBdMMLXGuQMbCVm9ss=
github.com/bytedance/gopkg v0.1.3 h1:TPBSwH8RsouGCBcMBktLt1AymVo2TVsBVCY4b6TnZ/M=
github.com/bytedance/gopkg v0.1.3/go.mod h1:576VvJ+eJgyCzdjS+c4+77QF3p7ubbtiKARP3TxducM=
github.com/bytedance/sonic v1.15.0 h1:/PXeWFaR5ElNcVE84U0dOHjiMHQOwNIx3K4ymzh/uSE=
@@ -19,16 +17,14 @@ github.com/gabriel-vasile/mimetype v1.4.12 h1:e9hWvmLYvtp846tLHam2o++qitpguFiYCK
github.com/gabriel-vasile/mimetype v1.4.12/go.mod h1:d+9Oxyo1wTzWdyVUPMmXFvp4F9tea18J8ufA774AB3s=
github.com/getsentry/sentry-go v0.46.2 h1:1jhYwrKGa3sIpo/y5iDNXS5wDoT7I1KNzMHrnK6ojns=
github.com/getsentry/sentry-go v0.46.2/go.mod h1:evVbw2qotNUdYG8KxXbAdjOQWWvWIwKxpjdZZIvcIPw=
-github.com/ggicci/httpin v0.20.3 h1:qy93bUsF/eGbX8WJfXEjB3bjgUrv7MKZ3qVWR73DIGY=
-github.com/ggicci/httpin v0.20.3/go.mod h1:ppHGT8xt99mRnDUuehLLWl2RAVLKG+VGn48GjK5xaLA=
-github.com/ggicci/owl v0.8.2 h1:og+lhqpzSMPDdEB+NJfzoAJARP7qCG3f8uUC3xvGukA=
-github.com/ggicci/owl v0.8.2/go.mod h1:PHRD57u41vFN5UtFz2SF79yTVoM3HlWpjMiE+ZU2dj4=
github.com/gin-contrib/cors v1.7.7 h1:Oh9joP463x7Mw72vhvJ61YQm8ODh9b04YR7vsOErD0Q=
github.com/gin-contrib/cors v1.7.7/go.mod h1:K5tW0RkzJtWSiOdikXloy8VEZlgdVNpHNw8FpjUPNrE=
github.com/gin-contrib/sse v1.1.0 h1:n0w2GMuUpWDVp7qSpvze6fAu9iRxJY4Hmj6AmBOU05w=
github.com/gin-contrib/sse v1.1.0/go.mod h1:hxRZ5gVpWMT7Z0B0gSNYqqsSCNIJMjzvm6fqCz9vjwM=
github.com/gin-gonic/gin v1.12.0 h1:b3YAbrZtnf8N//yjKeU2+MQsh2mY5htkZidOM7O0wG8=
github.com/gin-gonic/gin v1.12.0/go.mod h1:VxccKfsSllpKshkBWgVgRniFFAzFb9csfngsqANjnLc=
+github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
+github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
@@ -48,8 +44,6 @@ github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
-github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo=
@@ -60,8 +54,6 @@ github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo
github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
-github.com/justinas/alice v1.2.0 h1:+MHSA/vccVCF4Uq37S42jwlkvI2Xzl7zTPCN5BnZNVo=
-github.com/justinas/alice v1.2.0/go.mod h1:fN5HRH/reO/zrUflLfTN43t3vXvKzvZIENsNEe7i7qA=
github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y=
github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=
@@ -75,6 +67,10 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
+github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4=
+github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
+github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/quic-go/qpack v0.6.0 h1:g7W+BMYynC1LbYLSqRt8PBg5Tgwxn214ZZR34VIOjz8=
@@ -101,6 +97,8 @@ github.com/ugorji/go/codec v1.3.1 h1:waO7eEiFDwidsBN6agj1vJQ4AG7lh2yqXyOXqhgQuyY
github.com/ugorji/go/codec v1.3.1/go.mod h1:pRBVtBSKl77K30Bv8R2P+cLSGaTtex6fsA2Wjqmfxj4=
go.mongodb.org/mongo-driver/v2 v2.5.0 h1:yXUhImUjjAInNcpTcAlPHiT7bIXhshCTL3jVBkF3xaE=
go.mongodb.org/mongo-driver/v2 v2.5.0/go.mod h1:yOI9kBsufol30iFsl1slpdq1I0eHPzybRWdyYUs8K/0=
+go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
+go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
go.uber.org/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y=
go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU=
golang.org/x/arch v0.23.0 h1:lKF64A2jF6Zd8L0knGltUnegD62JMFBiCPBmQpToHhg=
diff --git a/apps/backend/internal/admin/service.go b/apps/backend/internal/admin/service.go
index 4789d42..3617fb7 100644
--- a/apps/backend/internal/admin/service.go
+++ b/apps/backend/internal/admin/service.go
@@ -6,8 +6,8 @@ import (
"errors"
"net/http"
"strings"
- "time"
+ "bookra/apps/backend/internal/auth"
"bookra/apps/backend/internal/db"
"bookra/apps/backend/internal/domain"
@@ -21,9 +21,9 @@ var (
)
type Service struct {
- repo db.Repository
- adminEmail string
- adminKey string
+ repo db.Repository
+ adminEmail string
+ adminKey string
}
func NewService(repo db.Repository, adminEmail, adminKey string) *Service {
@@ -52,20 +52,39 @@ func (s *Service) ValidateAdminLogin(email, key string) bool {
return emailMatch && keyMatch
}
-// RequireAdmin is middleware that checks for admin authentication
-// It supports two modes:
-// 1. Admin credentials via X-Admin-Email and X-Admin-Key headers (for API access)
-// 2. Session-based auth where the user has role "admin" or "superadmin"
-func RequireAdmin(adminSvc *Service, authSvc interface{ IsAdmin(ctx context.Context, userID string) (bool, error) }) gin.HandlerFunc {
+const adminActorKey = "adminActor"
+
+// ActorFromContext returns the admin identity recorded by RequireAdmin.
+func ActorFromContext(c *gin.Context) string {
+ value, ok := c.Get(adminActorKey)
+ if !ok {
+ return ""
+ }
+ actor, _ := value.(string)
+ return actor
+}
+
+// RequireAdmin is middleware that checks for admin authentication.
+// It supports three modes:
+// 1. Admin credentials via X-Admin-Email and X-Admin-Key headers (for API access)
+// 2. Bearer tokens verified against the auth verifier, where the token subject
+// maps to a user with role "admin" or "superadmin"
+// 3. Demo mode, where the demo owner is treated as admin
+func RequireAdmin(adminSvc *Service, verifier *auth.Verifier, repo db.Repository, demoMode bool) gin.HandlerFunc {
return func(c *gin.Context) {
+ if demoMode {
+ c.Set(adminActorKey, auth.DemoPrincipal.Subject)
+ c.Next()
+ return
+ }
+
// Check for admin header credentials (direct admin login)
adminEmail := c.GetHeader("X-Admin-Email")
adminKey := c.GetHeader("X-Admin-Key")
- if adminEmail != "" && adminKey != "" {
+ if adminEmail != "" || adminKey != "" {
if adminSvc.ValidateAdminLogin(adminEmail, adminKey) {
- c.Set("isAdmin", true)
- c.Set("adminMode", "credentials")
+ c.Set(adminActorKey, adminEmail)
c.Next()
return
}
@@ -74,31 +93,39 @@ func RequireAdmin(adminSvc *Service, authSvc interface{ IsAdmin(ctx context.Cont
}
// Check for Bearer token with admin role
- auth := c.GetHeader("Authorization")
- if auth != "" && strings.HasPrefix(auth, "Bearer ") {
- // The auth middleware should have already validated the token
- // and set the user info in context
- userID, exists := c.Get("userID")
- if !exists {
- c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"error": "unauthorized"})
- return
- }
-
- isAdmin, err := authSvc.IsAdmin(c.Request.Context(), userID.(string))
- if err != nil {
- c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": "failed to check admin status"})
- return
- }
-
- if isAdmin {
- c.Set("isAdmin", true)
- c.Set("adminMode", "session")
- c.Next()
- return
- }
+ tokenString, ok := strings.CutPrefix(c.GetHeader("Authorization"), "Bearer ")
+ if !ok || strings.TrimSpace(tokenString) == "" {
+ c.AbortWithStatusJSON(http.StatusForbidden, gin.H{"error": "admin access required"})
+ return
+ }
+ if verifier == nil || !verifier.Enabled() {
+ c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"error": "auth_not_configured"})
+ return
}
- c.AbortWithStatusJSON(http.StatusForbidden, gin.H{"error": "admin access required"})
+ claims, err := verifier.Verify(strings.TrimSpace(tokenString))
+ if err != nil {
+ c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"error": "invalid_token"})
+ return
+ }
+ subject, _ := claims["sub"].(string)
+ if strings.TrimSpace(subject) == "" {
+ c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"error": "invalid_token_subject"})
+ return
+ }
+
+ isAdmin, err := repo.IsAdminSubject(c.Request.Context(), subject)
+ if err != nil {
+ c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"error": "failed to check admin status"})
+ return
+ }
+ if !isAdmin {
+ c.AbortWithStatusJSON(http.StatusForbidden, gin.H{"error": "admin access required"})
+ return
+ }
+
+ c.Set(adminActorKey, subject)
+ c.Next()
}
}
@@ -110,11 +137,11 @@ func (s *Service) GetDashboardStats(ctx context.Context) (domain.AdminDashboardS
}
return domain.AdminDashboardStats{
- TotalTenants: stats.TotalTenants,
- TotalUsers: stats.TotalUsers,
- ActiveSubscriptions: stats.ActiveSubscriptions,
- TrialSubscriptions: stats.TrialSubscriptions,
- BookingsThisMonth: stats.BookingsThisMonth,
+ TotalTenants: stats.TotalTenants,
+ TotalUsers: stats.TotalUsers,
+ ActiveSubscriptions: stats.ActiveSubscriptions,
+ TrialSubscriptions: stats.TrialSubscriptions,
+ BookingsThisMonth: stats.BookingsThisMonth,
RevenueThisMonthCents: stats.RevenueThisMonth,
}, nil
}
@@ -144,12 +171,12 @@ func (s *Service) ListTenants(ctx context.Context, page, pageSize int) (domain.A
for i, t := range tenants {
result.Tenants[i] = domain.AdminTenant{
- ID: t.ID,
- Slug: t.Slug,
- Name: t.Name,
- PlanCode: t.PlanCode,
+ ID: t.ID,
+ Slug: t.Slug,
+ Name: t.Name,
+ PlanCode: t.PlanCode,
SubscriptionStatus: t.SubscriptionStatus,
- BillingProvider: t.BillingProvider,
+ BillingProvider: t.BillingProvider,
}
}
@@ -198,8 +225,8 @@ func (s *Service) ListUsers(ctx context.Context, page, pageSize int) (domain.Adm
func (s *Service) UpdateUserRole(ctx context.Context, adminUserID, targetUserID, newRole string, ip, userAgent string) error {
// Validate role
validRoles := map[string]bool{
- "user": true,
- "admin": true,
+ "user": true,
+ "admin": true,
"superadmin": true,
}
if !validRoles[newRole] {
@@ -224,20 +251,9 @@ func (s *Service) UpdateUserRole(ctx context.Context, adminUserID, targetUserID,
})
}
-// SyncTenantSubscription manually syncs a tenant's subscription from Stripe
-func (s *Service) SyncTenantSubscription(ctx context.Context, tenantID string) error {
- // This will be called from the billing service
- return nil
-}
-
func stringPtrToStr(s *string) string {
if s == nil {
return ""
}
return *s
}
-
-func init() {
- // Ensure time package is imported
- _ = time.Now()
-}
diff --git a/apps/backend/internal/admin/service_test.go b/apps/backend/internal/admin/service_test.go
new file mode 100644
index 0000000..ded6391
--- /dev/null
+++ b/apps/backend/internal/admin/service_test.go
@@ -0,0 +1,117 @@
+package admin
+
+import (
+ "net/http"
+ "net/http/httptest"
+ "testing"
+
+ "bookra/apps/backend/internal/auth"
+ "bookra/apps/backend/internal/db"
+
+ "github.com/gin-gonic/gin"
+)
+
+func newTestRouter(t *testing.T, adminSvc *Service, verifier *auth.Verifier, repo db.Repository, demoMode bool) *gin.Engine {
+ t.Helper()
+ gin.SetMode(gin.TestMode)
+ r := gin.New()
+ r.Use(RequireAdmin(adminSvc, verifier, repo, demoMode))
+ r.GET("/v1/admin/stats", func(c *gin.Context) {
+ c.JSON(http.StatusOK, gin.H{"actor": ActorFromContext(c)})
+ })
+ return r
+}
+
+func request(t *testing.T, r *gin.Engine, headers map[string]string) *httptest.ResponseRecorder {
+ t.Helper()
+ req := httptest.NewRequest(http.MethodGet, "/v1/admin/stats", nil)
+ for k, v := range headers {
+ req.Header.Set(k, v)
+ }
+ w := httptest.NewRecorder()
+ r.ServeHTTP(w, req)
+ return w
+}
+
+func TestRequireAdminRejectsUnauthenticated(t *testing.T) {
+ repo := db.NewMemoryRepository()
+ svc := NewService(repo, "admin@example.com", "secret-key")
+ verifier, _ := auth.NewVerifier("", "jwt-secret")
+ defer verifier.Close()
+ r := newTestRouter(t, svc, verifier, repo, false)
+
+ if w := request(t, r, nil); w.Code != http.StatusForbidden {
+ t.Fatalf("expected 403, got %d", w.Code)
+ }
+}
+
+func TestRequireAdminRejectsInvalidHeaderCreds(t *testing.T) {
+ repo := db.NewMemoryRepository()
+ svc := NewService(repo, "admin@example.com", "secret-key")
+ verifier, _ := auth.NewVerifier("", "jwt-secret")
+ defer verifier.Close()
+ r := newTestRouter(t, svc, verifier, repo, false)
+
+ w := request(t, r, map[string]string{
+ "X-Admin-Email": "admin@example.com",
+ "X-Admin-Key": "wrong-key",
+ })
+ if w.Code != http.StatusUnauthorized {
+ t.Fatalf("expected 401, got %d", w.Code)
+ }
+}
+
+func TestRequireAdminAcceptsHeaderCreds(t *testing.T) {
+ repo := db.NewMemoryRepository()
+ svc := NewService(repo, "admin@example.com", "secret-key")
+ verifier, _ := auth.NewVerifier("", "jwt-secret")
+ defer verifier.Close()
+ r := newTestRouter(t, svc, verifier, repo, false)
+
+ w := request(t, r, map[string]string{
+ "X-Admin-Email": "admin@example.com",
+ "X-Admin-Key": "secret-key",
+ })
+ if w.Code != http.StatusOK {
+ t.Fatalf("expected 200, got %d", w.Code)
+ }
+}
+
+func TestRequireAdminVerifiesBearerTokenAndRole(t *testing.T) {
+ repo := db.NewMemoryRepository()
+ secret := "jwt-secret"
+ svc := NewService(repo, "admin@example.com", "secret-key")
+ verifier, _ := auth.NewVerifier("", secret)
+ defer verifier.Close()
+ r := newTestRouter(t, svc, verifier, repo, false)
+
+ // A locally issued token for a non-admin subject must be rejected even though
+ // the token itself is valid.
+ authSvc := auth.NewService(repo, secret)
+ _, tokens, err := authSvc.RegisterWithPassword(t.Context(), "user@example.com", "password123", "Regular User")
+ if err != nil {
+ t.Fatalf("register: %v", err)
+ }
+ w := request(t, r, map[string]string{"Authorization": "Bearer " + tokens.AccessToken})
+ if w.Code != http.StatusForbidden {
+ t.Fatalf("expected 403 for non-admin subject, got %d", w.Code)
+ }
+
+ // A forged bearer string must be rejected outright.
+ w = request(t, r, map[string]string{"Authorization": "Bearer not-a-token"})
+ if w.Code != http.StatusUnauthorized {
+ t.Fatalf("expected 401 for invalid token, got %d", w.Code)
+ }
+}
+
+func TestRequireAdminDemoMode(t *testing.T) {
+ repo := db.NewMemoryRepository()
+ svc := NewService(repo, "", "")
+ verifier, _ := auth.NewVerifier("", "jwt-secret")
+ defer verifier.Close()
+ r := newTestRouter(t, svc, verifier, repo, true)
+
+ if w := request(t, r, nil); w.Code != http.StatusOK {
+ t.Fatalf("expected 200 in demo mode, got %d", w.Code)
+ }
+}
diff --git a/apps/backend/internal/api/server.go b/apps/backend/internal/api/server.go
index eedd199..9a4fbc4 100644
--- a/apps/backend/internal/api/server.go
+++ b/apps/backend/internal/api/server.go
@@ -49,8 +49,8 @@ func NewServer(cfg config.Config, pools *db.Pools) (*Server, error) {
repository := db.NewRepository(pools, cfg.DemoMode)
notificationService := notifications.NewService(cfg, repository)
- bookingService := bookings.NewService(repository, notificationService)
- customerBookingService := bookings.NewCustomerService(repository, notificationService)
+ bookingService := bookings.NewService(repository, notificationService, cfg.FrontendURL)
+ customerBookingService := bookings.NewCustomerService(repository, notificationService, cfg.FrontendURL)
tenantService := tenancy.NewService(repository)
billingService := billing.NewService(cfg, repository)
catalogService := catalog.NewService(repository, billingService, notificationService)
@@ -73,9 +73,10 @@ func NewServer(cfg config.Config, pools *db.Pools) (*Server, error) {
server.router.Use(gin.Logger(), gin.Recovery(), cors.New(cors.Config{
AllowOrigins: allowedOrigins(cfg),
- AllowHeaders: []string{"Authorization", "Content-Type"},
- AllowMethods: []string{"GET", "POST", "OPTIONS"},
+ AllowHeaders: []string{"Authorization", "Content-Type", "X-Admin-Email", "X-Admin-Key"},
+ AllowMethods: []string{"GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"},
AllowCredentials: true,
+ MaxAge: 12 * time.Hour,
}), httpx.SecurityHeaders())
server.router.GET("/healthz", func(c *gin.Context) {
@@ -86,24 +87,24 @@ func NewServer(cfg config.Config, pools *db.Pools) (*Server, error) {
})
})
- // Test endpoint for Sentry
- server.router.GET("/debug/sentry", func(c *gin.Context) {
- sentry.CaptureMessage("Test message from Bookra API")
- c.JSON(http.StatusOK, gin.H{"status": "sent", "message": "Test error sent to Sentry"})
- })
-
- // Test endpoint for billing
- server.router.GET("/debug/billing-test", func(c *gin.Context) {
- if billingService != nil {
- c.JSON(http.StatusOK, gin.H{
- "status": "ok",
- "billingService": "initialized",
- "message": "Billing service is working",
- })
- } else {
- c.JSON(http.StatusOK, gin.H{"status": "ok", "billingService": "not initialized"})
- }
- })
+ if cfg.Environment == "development" || cfg.Environment == "test" {
+ // Test endpoints, only exposed outside production
+ server.router.GET("/debug/sentry", func(c *gin.Context) {
+ sentry.CaptureMessage("Test message from Bookra API")
+ c.JSON(http.StatusOK, gin.H{"status": "sent", "message": "Test error sent to Sentry"})
+ })
+ server.router.GET("/debug/billing-test", func(c *gin.Context) {
+ if billingService != nil {
+ c.JSON(http.StatusOK, gin.H{
+ "status": "ok",
+ "billingService": "initialized",
+ "message": "Billing service is working",
+ })
+ } else {
+ c.JSON(http.StatusOK, gin.H{"status": "ok", "billingService": "not initialized"})
+ }
+ })
+ }
server.router.GET("/v1/meta/config", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
@@ -119,6 +120,7 @@ func NewServer(cfg config.Config, pools *db.Pools) (*Server, error) {
// AUTH API
// ============================================
authGroup := server.router.Group("/v1/auth")
+ authGroup.Use(publicRateLimiter.Middleware())
{
authGroup.POST("/register", func(c *gin.Context) {
var request struct {
@@ -255,7 +257,7 @@ func NewServer(cfg config.Config, pools *db.Pools) (*Server, error) {
// ADMIN API
// ============================================
adminGroup := server.router.Group("/v1/admin")
- adminGroup.Use(admin.RequireAdmin(adminService, authService))
+ adminGroup.Use(admin.RequireAdmin(adminService, verifier, repository, cfg.DemoMode))
{
adminGroup.GET("/stats", func(c *gin.Context) {
stats, err := adminService.GetDashboardStats(c.Request.Context())
@@ -294,10 +296,9 @@ func NewServer(cfg config.Config, pools *db.Pools) (*Server, error) {
c.JSON(http.StatusBadRequest, gin.H{"error": "invalid_request"})
return
}
- adminUserID, _ := c.Get("userID")
err := adminService.UpdateUserRole(
c.Request.Context(),
- adminUserID.(string),
+ admin.ActorFromContext(c),
c.Param("userID"),
request.Role,
c.ClientIP(),
@@ -433,6 +434,45 @@ func NewServer(cfg config.Config, pools *db.Pools) (*Server, error) {
c.JSON(http.StatusCreated, response)
})
+ protected.PUT("/tenants/brand", func(c *gin.Context) {
+ var request domain.UpdateBrandRequest
+ if err := c.ShouldBindJSON(&request); err != nil {
+ c.JSON(http.StatusBadRequest, gin.H{"error": "invalid_request"})
+ return
+ }
+ response, err := tenantService.UpdateBrand(c.Request.Context(), auth.PrincipalFromContext(c), request)
+ if err != nil {
+ c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
+ return
+ }
+ c.JSON(http.StatusOK, response)
+ })
+ protected.GET("/tenants/email-templates", func(c *gin.Context) {
+ response, err := tenantService.ListEmailTemplates(c.Request.Context(), auth.PrincipalFromContext(c))
+ if err != nil {
+ c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
+ return
+ }
+ c.JSON(http.StatusOK, gin.H{"templates": response})
+ })
+ protected.PUT("/tenants/email-template", func(c *gin.Context) {
+ var request domain.UpdateEmailTemplateRequest
+ if err := c.ShouldBindJSON(&request); err != nil {
+ c.JSON(http.StatusBadRequest, gin.H{"error": "invalid_request"})
+ return
+ }
+ response, err := tenantService.UpdateEmailTemplate(c.Request.Context(), auth.PrincipalFromContext(c), request)
+ if err != nil {
+ status := http.StatusInternalServerError
+ if errors.Is(err, tenancy.ErrInvalidOnboarding) {
+ status = http.StatusBadRequest
+ }
+ c.JSON(status, gin.H{"error": err.Error()})
+ return
+ }
+ c.JSON(http.StatusOK, response)
+ })
+
// ============================================
// CATALOG API - Locations / Zones
// ============================================
@@ -501,6 +541,29 @@ func NewServer(cfg config.Config, pools *db.Pools) (*Server, error) {
c.JSON(http.StatusOK, gin.H{"status": "deleted"})
})
+ protected.POST("/catalog/bookings", func(c *gin.Context) {
+ var request domain.DashboardBookingRequest
+ if err := c.ShouldBindJSON(&request); err != nil {
+ c.JSON(http.StatusBadRequest, gin.H{"error": "invalid_request"})
+ return
+ }
+ response, err := catalogService.CreateBooking(c.Request.Context(), auth.PrincipalFromContext(c), request)
+ if err != nil {
+ status := http.StatusInternalServerError
+ switch {
+ case errors.Is(err, catalog.ErrTenantMembership):
+ status = http.StatusNotFound
+ case errors.Is(err, catalog.ErrInvalidBooking):
+ status = http.StatusBadRequest
+ case errors.Is(err, catalog.ErrBookingConflict):
+ status = http.StatusConflict
+ }
+ c.JSON(status, gin.H{"error": err.Error()})
+ return
+ }
+ c.JSON(http.StatusCreated, response)
+ })
+
// ============================================
// CATALOG API - Blocked Days
// ============================================
@@ -691,8 +754,11 @@ func NewServer(cfg config.Config, pools *db.Pools) (*Server, error) {
response, err := customerBookingService.GetBookingByReference(c.Request.Context(), c.Param("reference"), token)
if err != nil {
status := http.StatusInternalServerError
- if errors.Is(err, bookings.ErrBookingNotFound) {
+ switch {
+ case errors.Is(err, bookings.ErrBookingNotFound):
status = http.StatusNotFound
+ case errors.Is(err, bookings.ErrUnauthorized):
+ status = http.StatusForbidden
}
c.JSON(status, gin.H{"error": err.Error()})
return
@@ -712,10 +778,14 @@ func NewServer(cfg config.Config, pools *db.Pools) (*Server, error) {
switch {
case errors.Is(err, bookings.ErrBookingNotFound):
status = http.StatusNotFound
+ case errors.Is(err, bookings.ErrUnauthorized):
+ status = http.StatusForbidden
case errors.Is(err, bookings.ErrBookingCancelled):
status = http.StatusConflict
case errors.Is(err, bookings.ErrInvalidReschedule):
status = http.StatusBadRequest
+ case errors.Is(err, bookings.ErrBookingConflict):
+ status = http.StatusConflict
}
c.JSON(status, gin.H{"error": err.Error()})
return
@@ -730,6 +800,8 @@ func NewServer(cfg config.Config, pools *db.Pools) (*Server, error) {
switch {
case errors.Is(err, bookings.ErrBookingNotFound):
status = http.StatusNotFound
+ case errors.Is(err, bookings.ErrUnauthorized):
+ status = http.StatusForbidden
case errors.Is(err, bookings.ErrBookingCancelled):
status = http.StatusConflict
}
@@ -766,7 +838,7 @@ func NewServer(cfg config.Config, pools *db.Pools) (*Server, error) {
if errors.Is(err, billing.ErrBillingPlanUnsupported) {
status = http.StatusBadRequest
}
- if errors.Is(err, billing.ErrPaddleNotConfigured) {
+ if errors.Is(err, billing.ErrStripeNotConfigured) {
status = http.StatusServiceUnavailable
}
c.JSON(status, gin.H{"error": err.Error()})
@@ -781,7 +853,7 @@ func NewServer(cfg config.Config, pools *db.Pools) (*Server, error) {
if errors.Is(err, billing.ErrBillingMembership) {
status = http.StatusNotFound
}
- if errors.Is(err, billing.ErrPaddleNotConfigured) {
+ if errors.Is(err, billing.ErrStripeNotConfigured) {
status = http.StatusServiceUnavailable
}
c.JSON(status, gin.H{"error": err.Error()})
@@ -798,7 +870,7 @@ func NewServer(cfg config.Config, pools *db.Pools) (*Server, error) {
status = http.StatusNotFound
case errors.Is(err, billing.ErrBillingCustomerMissing):
status = http.StatusBadRequest
- case errors.Is(err, billing.ErrPaddleNotConfigured):
+ case errors.Is(err, billing.ErrStripeNotConfigured):
status = http.StatusServiceUnavailable
}
c.JSON(status, gin.H{"error": err.Error()})
@@ -942,13 +1014,6 @@ func NewServer(cfg config.Config, pools *db.Pools) (*Server, error) {
c.JSON(http.StatusOK, response)
})
- server.router.POST("/v1/webhooks/paddle", func(c *gin.Context) {
- if err := billingService.HandleWebhook(c.Request.Context(), c.Request); err != nil {
- c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
- return
- }
- c.JSON(http.StatusOK, gin.H{"status": "accepted"})
- })
server.router.POST("/v1/webhooks/stripe", func(c *gin.Context) {
if err := billingService.HandleStripeWebhook(c.Request.Context(), c.Request); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
@@ -956,13 +1021,6 @@ func NewServer(cfg config.Config, pools *db.Pools) (*Server, error) {
}
c.JSON(http.StatusOK, gin.H{"status": "accepted"})
})
- server.router.POST("/api/paddle_webhook", func(c *gin.Context) {
- if err := billingService.HandleWebhook(c.Request.Context(), c.Request); err != nil {
- c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
- return
- }
- c.JSON(http.StatusOK, gin.H{"status": "accepted"})
- })
server.router.POST("/v1/internal/jobs/reminders/dispatch", func(c *gin.Context) {
if !authorizeJobRunner(c, cfg) {
diff --git a/apps/backend/internal/auth/neon.go b/apps/backend/internal/auth/neon.go
index a0ab849..92bfc4a 100644
--- a/apps/backend/internal/auth/neon.go
+++ b/apps/backend/internal/auth/neon.go
@@ -65,29 +65,42 @@ func (v *Verifier) Close() {
}
}
+func (v *Verifier) verifyLocal(tokenString string) (jwt.MapClaims, error) {
+ token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
+ if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
+ return nil, fmt.Errorf("unexpected signing method: %v", token.Header["alg"])
+ }
+ return v.localSecret, nil
+ }, jwt.WithIssuer("bookra-auth"), jwt.WithAudience("bookra"), jwt.WithLeeway(15*time.Second))
+ if err != nil {
+ return nil, err
+ }
+ claims, ok := token.Claims.(jwt.MapClaims)
+ if !ok || !token.Valid {
+ return nil, errors.New("invalid token claims")
+ }
+ if tokenType, _ := claims["type"].(string); tokenType != "access" {
+ return nil, errors.New("invalid token type")
+ }
+ return claims, nil
+}
+
func (v *Verifier) Verify(tokenString string) (jwt.MapClaims, error) {
if !v.enabled {
return nil, errors.New("neon auth verifier is disabled")
}
- if len(v.localSecret) > 0 && v.jwks == nil {
- token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
- if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
- return nil, fmt.Errorf("unexpected signing method: %v", token.Header["alg"])
- }
- return v.localSecret, nil
- }, jwt.WithIssuer("bookra-auth"), jwt.WithAudience("bookra"), jwt.WithLeeway(15*time.Second))
- if err != nil {
+ if len(v.localSecret) > 0 {
+ claims, err := v.verifyLocal(tokenString)
+ if err == nil {
+ return claims, nil
+ }
+ if v.jwks == nil {
return nil, err
}
- claims, ok := token.Claims.(jwt.MapClaims)
- if !ok || !token.Valid {
- return nil, errors.New("invalid token claims")
- }
- if tokenType, _ := claims["type"].(string); tokenType != "access" {
- return nil, errors.New("invalid token type")
- }
- return claims, nil
+ }
+ if v.jwks == nil {
+ return nil, errors.New("no token verification mechanism configured")
}
token, err := jwt.Parse(tokenString, v.jwks.Keyfunc,
diff --git a/apps/backend/internal/auth/service.go b/apps/backend/internal/auth/service.go
index 8c0b60f..40f4098 100644
--- a/apps/backend/internal/auth/service.go
+++ b/apps/backend/internal/auth/service.go
@@ -20,6 +20,8 @@ const (
refreshTokenTTL = 30 * 24 * time.Hour
magicLinkTTL = 15 * time.Minute
passwordResetTTL = 30 * time.Minute
+ tokenIssuer = "bookra-auth"
+ tokenAudience = "bookra"
)
var (
@@ -227,7 +229,7 @@ func (s *Service) ValidateToken(tokenString string) (*Claims, error) {
return nil, fmt.Errorf("unexpected signing method: %v", token.Header["alg"])
}
return s.jwtSecret, nil
- })
+ }, jwt.WithIssuer(tokenIssuer), jwt.WithAudience(tokenAudience))
if err != nil {
return nil, err
@@ -266,6 +268,8 @@ func (s *Service) generateTokenPair(userID, email, name, role string) (*TokenPai
Role: role,
Type: "access",
RegisteredClaims: jwt.RegisteredClaims{
+ Issuer: tokenIssuer,
+ Audience: jwt.ClaimStrings{tokenAudience},
ExpiresAt: jwt.NewNumericDate(now.Add(accessTokenTTL)),
IssuedAt: jwt.NewNumericDate(now),
NotBefore: jwt.NewNumericDate(now),
@@ -285,6 +289,8 @@ func (s *Service) generateTokenPair(userID, email, name, role string) (*TokenPai
Role: role,
Type: "refresh",
RegisteredClaims: jwt.RegisteredClaims{
+ Issuer: tokenIssuer,
+ Audience: jwt.ClaimStrings{tokenAudience},
ExpiresAt: jwt.NewNumericDate(now.Add(refreshTokenTTL)),
IssuedAt: jwt.NewNumericDate(now),
NotBefore: jwt.NewNumericDate(now),
diff --git a/apps/backend/internal/auth/service_test.go b/apps/backend/internal/auth/service_test.go
new file mode 100644
index 0000000..1297c0e
--- /dev/null
+++ b/apps/backend/internal/auth/service_test.go
@@ -0,0 +1,69 @@
+package auth
+
+import (
+ "context"
+ "testing"
+
+ "bookra/apps/backend/internal/db"
+)
+
+func TestLocalTokensVerifyWithIssuerAndAudience(t *testing.T) {
+ repo := db.NewMemoryRepository()
+ secret := "test-secret-that-is-long-enough"
+ svc := NewService(repo, secret)
+
+ _, tokens, err := svc.RegisterWithPassword(context.Background(), "user@example.com", "password123", "Test User")
+ if err != nil {
+ t.Fatalf("register: %v", err)
+ }
+
+ verifier, err := NewVerifier("", secret)
+ if err != nil {
+ t.Fatalf("create verifier: %v", err)
+ }
+ defer verifier.Close()
+
+ claims, err := verifier.Verify(tokens.AccessToken)
+ if err != nil {
+ t.Fatalf("verify access token: %v", err)
+ }
+ if iss, _ := claims["iss"].(string); iss != tokenIssuer {
+ t.Fatalf("expected issuer %s, got %v", tokenIssuer, claims["iss"])
+ }
+ if sub, _ := claims["sub"].(string); sub == "" {
+ t.Fatal("expected non-empty sub")
+ }
+}
+
+func TestLocalVerifierRejectsTamperedAndWrongTypeTokens(t *testing.T) {
+ repo := db.NewMemoryRepository()
+ secret := "test-secret-that-is-long-enough"
+ svc := NewService(repo, secret)
+
+ _, tokens, err := svc.RegisterWithPassword(context.Background(), "user@example.com", "password123", "Test User")
+ if err != nil {
+ t.Fatalf("register: %v", err)
+ }
+
+ verifier, err := NewVerifier("", secret)
+ if err != nil {
+ t.Fatalf("create verifier: %v", err)
+ }
+ defer verifier.Close()
+
+ // Refresh tokens carry type=refresh and must not authenticate API calls.
+ if _, err := verifier.Verify(tokens.RefreshToken); err == nil {
+ t.Fatal("expected refresh token to be rejected as access token")
+ }
+
+ // Token signed with a different secret must fail.
+ other := NewService(repo, "different-secret")
+ otherUser, otherTokens, err := other.RegisterWithPassword(context.Background(), "other@example.com", "password123", "Other")
+ if err != nil {
+ t.Fatalf("register other: %v", err)
+ }
+ _ = otherUser
+ if _, err := verifier.Verify(otherTokens.AccessToken); err == nil {
+ t.Fatal("expected token signed with a different secret to be rejected")
+ }
+}
diff --git a/apps/backend/internal/billing/service.go b/apps/backend/internal/billing/service.go
index 107d91d..9c3b45e 100644
--- a/apps/backend/internal/billing/service.go
+++ b/apps/backend/internal/billing/service.go
@@ -16,7 +16,6 @@ import (
"bookra/apps/backend/internal/domain"
"bookra/apps/backend/internal/shared"
- paddle "github.com/PaddleHQ/paddle-go-sdk/v5"
"github.com/jackc/pgx/v5"
"github.com/stripe/stripe-go/v81"
portalsession "github.com/stripe/stripe-go/v81/billingportal/session"
@@ -30,28 +29,11 @@ var (
ErrBillingMembership = errors.New("billing membership not found")
ErrBillingPlanUnsupported = errors.New("billing plan is not configured")
ErrBillingCustomerMissing = errors.New("billing customer is not available")
- ErrPaddleNotConfigured = errors.New("paddle is not configured")
- ErrPaddleSignatureMissing = errors.New("paddle signature is missing")
- ErrPaddleWebhookMissing = errors.New("paddle webhook secret is not configured")
ErrStripeNotConfigured = errors.New("stripe is not configured")
ErrStripeSignatureMissing = errors.New("stripe signature is missing")
ErrStripeWebhookMissing = errors.New("stripe webhook secret is not configured")
)
-var allowedPaddleWebhookEvents = []string{
- "subscription.created",
- "subscription.updated",
- "subscription.activated",
- "subscription.canceled",
- "subscription.paused",
- "subscription.resumed",
- "subscription.trialing",
- "transaction.completed",
- "transaction.updated",
- "transaction.payment_failed",
- "transaction.past_due",
-}
-
var allowedStripeWebhookEvents = []stripe.EventType{
stripe.EventTypeCheckoutSessionCompleted,
stripe.EventTypeCustomerSubscriptionCreated,
@@ -64,48 +46,15 @@ var allowedStripeWebhookEvents = []stripe.EventType{
}
type Service struct {
- cfg config.Config
- repo db.Repository
- client *paddle.SDK
- verifier *paddle.WebhookVerifier
- stripeEnabled bool
-}
-
-type webhookEnvelope struct {
- EventID string `json:"event_id"`
- EventType string `json:"event_type"`
- Data struct {
- ID string `json:"id"`
- CustomerID string `json:"customer_id"`
- SubscriptionID string `json:"subscription_id"`
- CustomData map[string]any `json:"custom_data"`
- } `json:"data"`
+ cfg config.Config
+ repo db.Repository
}
func NewService(cfg config.Config, repo db.Repository) *Service {
- service := &Service{cfg: cfg, repo: repo}
-
- // Initialize Paddle client
- if strings.TrimSpace(cfg.PaddleAPIKey) != "" {
- var client *paddle.SDK
- var err error
- if cfg.PaddleEnvironment == "live" {
- client, err = paddle.New(cfg.PaddleAPIKey, paddle.WithBaseURL(paddle.ProductionBaseURL))
- } else {
- client, err = paddle.NewSandbox(cfg.PaddleAPIKey)
- }
- if err == nil {
- service.client = client
- }
- }
-
- // Initialize Stripe
if strings.TrimSpace(cfg.StripeAPIKey) != "" {
stripe.Key = cfg.StripeAPIKey
- service.stripeEnabled = true
}
-
- return service
+ return &Service{cfg: cfg, repo: repo}
}
// GetEntitlements returns the plan entitlements for a tenant (used by other services for limit enforcement)
@@ -122,7 +71,7 @@ func (s *Service) GetEntitlements(ctx context.Context, tenantID string) (domain.
}
func (s *Service) GetSubscription(ctx context.Context, principal domain.Principal) (domain.SubscriptionSnapshot, error) {
- membership, err := s.repo.GetTenantMembershipByUserID(ctx, principal.Subject)
+ membership, err := s.repo.GetTenantMembershipBySubject(ctx, principal.Subject)
if err != nil {
if errors.Is(err, pgx.ErrNoRows) {
return domain.SubscriptionSnapshot{}, ErrBillingMembership
@@ -135,7 +84,7 @@ func (s *Service) GetSubscription(ctx context.Context, principal domain.Principa
if errors.Is(err, pgx.ErrNoRows) {
return toSnapshot(membership.Tenant, db.BillingSnapshotRecord{
TenantID: membership.Tenant.ID,
- BillingProvider: s.cfg.BillingProvider(),
+ BillingProvider: "stripe",
Status: firstNonEmpty(membership.Tenant.SubscriptionStatus, "inactive"),
PlanCode: shared.NormalizePlanCode(membership.Tenant.PlanCode),
Currency: "czk",
@@ -148,26 +97,23 @@ func (s *Service) GetSubscription(ctx context.Context, principal domain.Principa
}
func (s *Service) CreateCheckoutSession(ctx context.Context, principal domain.Principal, planCode string, currency string, billingInterval string) (domain.CheckoutLaunchResponse, error) {
- membership, err := s.repo.GetTenantMembershipByUserID(ctx, principal.Subject)
+ membership, err := s.repo.GetTenantMembershipBySubject(ctx, principal.Subject)
if err != nil {
if errors.Is(err, pgx.ErrNoRows) {
return domain.CheckoutLaunchResponse{}, ErrBillingMembership
}
return domain.CheckoutLaunchResponse{}, err
}
+ if !s.cfg.StripeConfigured() {
+ return domain.CheckoutLaunchResponse{}, ErrStripeNotConfigured
+ }
// Default to monthly if not specified
if billingInterval == "" {
billingInterval = "monthly"
}
- // Prefer Stripe if configured
- if s.cfg.StripeConfigured() {
- return s.createStripeCheckoutSession(ctx, principal, membership, planCode, currency, billingInterval)
- }
-
- // Fall back to Paddle
- return s.createPaddleCheckoutSession(ctx, principal, membership, planCode, currency)
+ return s.createStripeCheckoutSession(ctx, principal, membership, planCode, currency, billingInterval)
}
func (s *Service) createStripeCheckoutSession(ctx context.Context, principal domain.Principal, membership db.TenantMembershipRecord, planCode string, currency string, billingInterval string) (domain.CheckoutLaunchResponse, error) {
@@ -191,7 +137,7 @@ func (s *Service) createStripeCheckoutSession(ctx context.Context, principal dom
return domain.CheckoutLaunchResponse{}, fmt.Errorf("failed to create stripe customer: %w", err)
}
customerID = cust.ID
- if err := s.repo.UpdateTenantBillingCustomerID(ctx, membership.Tenant.ID, customerID); err != nil {
+ if err := s.repo.UpdateTenantBillingCustomerID(ctx, membership.Tenant.ID, "stripe", customerID); err != nil {
return domain.CheckoutLaunchResponse{}, err
}
}
@@ -241,35 +187,8 @@ func (s *Service) createStripeCheckoutSession(ctx context.Context, principal dom
}, nil
}
-func (s *Service) createPaddleCheckoutSession(ctx context.Context, principal domain.Principal, membership db.TenantMembershipRecord, planCode string, currency string) (domain.CheckoutLaunchResponse, error) {
- priceID, resolvedPlanCode, resolvedCurrency := s.paddlePriceForPlan(planCode, currency)
- if priceID == "" {
- return domain.CheckoutLaunchResponse{}, ErrBillingPlanUnsupported
- }
- if !checkoutAvailable(s.cfg, resolvedPlanCode) {
- return domain.CheckoutLaunchResponse{}, ErrPaddleNotConfigured
- }
-
- return domain.CheckoutLaunchResponse{
- PriceID: priceID,
- CustomerID: derefString(membership.Tenant.BillingCustomerID),
- CustomerEmail: strings.TrimSpace(principal.Email),
- SuccessRedirectURL: strings.TrimRight(s.cfg.FrontendURL, "/") + "/dashboard?billing=success",
- CancelRedirectURL: strings.TrimRight(s.cfg.FrontendURL, "/") + "/dashboard?billing=cancelled",
- CustomData: map[string]string{
- "tenantId": membership.Tenant.ID,
- "tenantSlug": membership.Tenant.Slug,
- "userId": principal.Subject,
- "userEmail": strings.TrimSpace(principal.Email),
- "planCode": resolvedPlanCode,
- "currency": resolvedCurrency,
- "source": "bookra-dashboard",
- },
- }, nil
-}
-
func (s *Service) Refresh(ctx context.Context, principal domain.Principal) (domain.SubscriptionSnapshot, error) {
- membership, err := s.repo.GetTenantMembershipByUserID(ctx, principal.Subject)
+ membership, err := s.repo.GetTenantMembershipBySubject(ctx, principal.Subject)
if err != nil {
if errors.Is(err, pgx.ErrNoRows) {
return domain.SubscriptionSnapshot{}, ErrBillingMembership
@@ -281,36 +200,26 @@ func (s *Service) Refresh(ctx context.Context, principal domain.Principal) (doma
if customerID == "" {
return toSnapshot(membership.Tenant, db.BillingSnapshotRecord{
TenantID: membership.Tenant.ID,
- BillingProvider: s.cfg.BillingProvider(),
+ BillingProvider: "stripe",
Status: "inactive",
PlanCode: shared.NormalizePlanCode(membership.Tenant.PlanCode),
Currency: "czk",
}, s.cfg), nil
}
- // Prefer Stripe if configured
- if s.cfg.StripeConfigured() {
- record, err := s.syncStripeDataToKV(ctx, membership.Tenant, customerID)
- if err != nil {
- return domain.SubscriptionSnapshot{}, err
- }
- return toSnapshot(membership.Tenant, record, s.cfg), nil
+ if !s.cfg.StripeConfigured() {
+ return domain.SubscriptionSnapshot{}, ErrStripeNotConfigured
}
- // Fall back to Paddle
- if s.client == nil {
- return domain.SubscriptionSnapshot{}, ErrPaddleNotConfigured
- }
- record, err := s.syncPaddleData(ctx, membership.Tenant, customerID)
+ record, err := s.syncStripeDataToKV(ctx, membership.Tenant, customerID)
if err != nil {
return domain.SubscriptionSnapshot{}, err
}
-
return toSnapshot(membership.Tenant, record, s.cfg), nil
}
func (s *Service) CreatePortalSession(ctx context.Context, principal domain.Principal) (domain.PortalSessionResponse, error) {
- membership, err := s.repo.GetTenantMembershipByUserID(ctx, principal.Subject)
+ membership, err := s.repo.GetTenantMembershipBySubject(ctx, principal.Subject)
if err != nil {
if errors.Is(err, pgx.ErrNoRows) {
return domain.PortalSessionResponse{}, ErrBillingMembership
@@ -322,14 +231,11 @@ func (s *Service) CreatePortalSession(ctx context.Context, principal domain.Prin
if customerID == "" {
return domain.PortalSessionResponse{}, ErrBillingCustomerMissing
}
-
- // Prefer Stripe if configured
- if s.cfg.StripeConfigured() {
- return s.createStripePortalSession(customerID)
+ if !s.cfg.StripeConfigured() {
+ return domain.PortalSessionResponse{}, ErrStripeNotConfigured
}
- // Fall back to Paddle
- return s.createPaddlePortalSession(ctx, membership, customerID)
+ return s.createStripePortalSession(customerID)
}
func (s *Service) createStripePortalSession(customerID string) (domain.PortalSessionResponse, error) {
@@ -344,51 +250,6 @@ func (s *Service) createStripePortalSession(customerID string) (domain.PortalSes
return domain.PortalSessionResponse{URL: sess.URL}, nil
}
-func (s *Service) createPaddlePortalSession(ctx context.Context, membership db.TenantMembershipRecord, customerID string) (domain.PortalSessionResponse, error) {
- if s.client == nil {
- return domain.PortalSessionResponse{}, ErrPaddleNotConfigured
- }
-
- request := &paddle.CreateCustomerPortalSessionRequest{CustomerID: customerID}
- if subscriptionID := derefString(membership.Tenant.BillingSubscription); subscriptionID != "" {
- request.SubscriptionIDs = []string{subscriptionID}
- }
-
- sess, err := s.client.CreateCustomerPortalSession(ctx, request)
- if err != nil {
- return domain.PortalSessionResponse{}, err
- }
-
- url := strings.TrimSpace(sess.URLs.General.Overview)
- if url == "" && len(sess.URLs.Subscriptions) > 0 {
- url = firstNonEmpty(
- sess.URLs.Subscriptions[0].UpdateSubscriptionPaymentMethod,
- sess.URLs.Subscriptions[0].CancelSubscription,
- )
- }
- if url == "" {
- return domain.PortalSessionResponse{}, ErrBillingCustomerMissing
- }
-
- return domain.PortalSessionResponse{URL: url}, nil
-}
-
-func (s *Service) HandleWebhook(ctx context.Context, req *http.Request) error {
- // Detect provider based on signature header
- stripeSig := req.Header.Get("Stripe-Signature")
- paddleSig := req.Header.Get("Paddle-Signature")
-
- if stripeSig != "" {
- return s.handleStripeWebhook(ctx, req)
- }
-
- if paddleSig != "" {
- return s.handlePaddleWebhook(ctx, req)
- }
-
- return errors.New("missing webhook signature header")
-}
-
func (s *Service) HandleStripeWebhook(ctx context.Context, req *http.Request) error {
return s.handleStripeWebhook(ctx, req)
}
@@ -397,6 +258,9 @@ func (s *Service) handleStripeWebhook(ctx context.Context, req *http.Request) er
if s.cfg.StripeWebhookKey == "" {
return ErrStripeWebhookMissing
}
+ if strings.TrimSpace(req.Header.Get("Stripe-Signature")) == "" {
+ return ErrStripeSignatureMissing
+ }
body, err := io.ReadAll(req.Body)
if err != nil {
@@ -433,7 +297,7 @@ func (s *Service) handleStripeWebhook(ctx context.Context, req *http.Request) er
return err
}
if customerID != "" && derefString(tenant.BillingCustomerID) == "" {
- if err := s.repo.UpdateTenantBillingCustomerID(ctx, tenant.ID, customerID); err != nil {
+ if err := s.repo.UpdateTenantBillingCustomerID(ctx, tenant.ID, "stripe", customerID); err != nil {
return err
}
tenant.BillingCustomerID = &customerID
@@ -476,141 +340,6 @@ func (s *Service) handleStripeWebhook(ctx context.Context, req *http.Request) er
return err
}
-func (s *Service) handlePaddleWebhook(ctx context.Context, req *http.Request) error {
- if s.verifier == nil {
- return ErrPaddleWebhookMissing
- }
- if strings.TrimSpace(req.Header.Get("Paddle-Signature")) == "" {
- return ErrPaddleSignatureMissing
- }
-
- ok, err := s.verifier.Verify(req)
- if err != nil {
- return err
- }
- if !ok {
- return errors.New("invalid paddle webhook signature")
- }
-
- payload, err := io.ReadAll(req.Body)
- if err != nil {
- return err
- }
-
- var event webhookEnvelope
- if err := json.Unmarshal(payload, &event); err != nil {
- return err
- }
- if !slices.Contains(allowedPaddleWebhookEvents, event.EventType) {
- return nil
- }
-
- tenant, customerID, err := s.resolveWebhookTenant(ctx, event)
- if err != nil {
- if errors.Is(err, pgx.ErrNoRows) {
- return nil
- }
- return err
- }
- if tenant.ID == "" {
- return nil
- }
-
- inserted, err := s.repo.RecordBillingEvent(ctx, tenant.ID, "paddle", event.EventID, event.EventType, payload)
- if err != nil || !inserted {
- return err
- }
-
- if customerID != "" && derefString(tenant.BillingCustomerID) == "" {
- if err := s.repo.UpdateTenantBillingCustomerID(ctx, tenant.ID, customerID); err != nil {
- return err
- }
- tenant.BillingCustomerID = &customerID
- }
-
- customerID = firstNonEmpty(customerID, derefString(tenant.BillingCustomerID))
- if customerID == "" || s.client == nil {
- return nil
- }
-
- _, err = s.syncPaddleData(ctx, tenant, customerID)
- return err
-}
-
-func (s *Service) resolveWebhookTenant(ctx context.Context, event webhookEnvelope) (db.TenantRecord, string, error) {
- customerID := strings.TrimSpace(event.Data.CustomerID)
- if tenantID := customDataString(event.Data.CustomData, "tenantId"); tenantID != "" {
- tenant, err := s.repo.GetTenantByID(ctx, tenantID)
- return tenant, customerID, err
- }
- if customerID != "" {
- tenant, err := s.repo.GetTenantByBillingCustomerID(ctx, customerID)
- return tenant, customerID, err
- }
- return db.TenantRecord{}, customerID, pgx.ErrNoRows
-}
-
-func (s *Service) syncPaddleData(ctx context.Context, tenant db.TenantRecord, customerID string) (db.BillingSnapshotRecord, error) {
- if s.client == nil {
- return db.BillingSnapshotRecord{}, ErrPaddleNotConfigured
- }
-
- subscriptions, err := s.client.ListSubscriptions(ctx, &paddle.ListSubscriptionsRequest{
- CustomerID: []string{customerID},
- })
- if err != nil {
- return db.BillingSnapshotRecord{}, err
- }
-
- var selected *paddle.Subscription
- if err := subscriptions.Iter(ctx, func(subscription *paddle.Subscription) (bool, error) {
- if subscription == nil {
- return true, nil
- }
- if selected == nil || subscriptionRank(subscription) > subscriptionRank(selected) {
- selected = subscription
- }
- return true, nil
- }); err != nil {
- return db.BillingSnapshotRecord{}, err
- }
-
- now := time.Now().UTC()
- record := db.BillingSnapshotRecord{
- TenantID: tenant.ID,
- BillingProvider: "paddle",
- BillingCustomerID: customerID,
- BillingSubscriptionID: "",
- Status: "inactive",
- PlanCode: shared.NormalizePlanCode(tenant.PlanCode),
- Currency: "czk",
- PriceID: "",
- LastSyncedAt: &now,
- }
-
- if selected != nil {
- record.BillingSubscriptionID = selected.ID
- record.Status = normalizeSubscriptionStatus(string(selected.Status))
- record.Currency = normalizeCurrency(string(selected.CurrencyCode))
- record.CancelAtPeriodEnd = selected.ScheduledChange != nil && string(selected.ScheduledChange.Action) == "cancel"
- record.CurrentPeriodStart = parseRFC3339Ptr(timePeriodStart(selected.CurrentBillingPeriod))
- record.CurrentPeriodEnd = parseRFC3339Ptr(timePeriodEnd(selected.CurrentBillingPeriod))
- if len(selected.Items) > 0 {
- record.PriceID = selected.Items[0].Price.ID
- record.PlanCode = s.paddlePlanCodeForPrice(record.PriceID, tenant.PlanCode)
- }
- }
-
- if err := s.repo.UpsertSubscriptionSnapshot(ctx, record); err != nil {
- return db.BillingSnapshotRecord{}, err
- }
- if err := s.repo.UpdateTenantBillingState(ctx, tenant.ID, record.PlanCode, record.Status, record.BillingSubscriptionID); err != nil {
- return db.BillingSnapshotRecord{}, err
- }
-
- return record, nil
-}
-
// syncStripeDataToKV is the core sync function following the KV sync model.
// It fetches full subscription state from Stripe and stores it in the database.
// This function is called after checkout success and on every relevant webhook event.
@@ -669,7 +398,7 @@ func (s *Service) syncStripeDataToKV(ctx context.Context, tenant db.TenantRecord
if err := s.repo.UpsertSubscriptionSnapshot(ctx, record); err != nil {
return db.BillingSnapshotRecord{}, err
}
- if err := s.repo.UpdateTenantBillingState(ctx, tenant.ID, record.PlanCode, record.Status, record.BillingSubscriptionID); err != nil {
+ if err := s.repo.UpdateTenantBillingState(ctx, tenant.ID, "stripe", record.PlanCode, record.Status, record.BillingSubscriptionID); err != nil {
return db.BillingSnapshotRecord{}, err
}
@@ -732,11 +461,7 @@ func toSnapshot(tenant db.TenantRecord, record db.BillingSnapshotRecord, cfg con
}
customerID := firstNonEmpty(record.BillingCustomerID, derefString(tenant.BillingCustomerID))
- provider := firstNonEmpty(record.BillingProvider, tenant.BillingProvider, cfg.BillingProvider())
-
- syncAvailable := cfg.BillingConfigured()
- portalAvailable := cfg.BillingConfigured() && customerID != ""
- checkoutAvailable := billingCheckoutAvailable(cfg, record.PlanCode)
+ provider := firstNonEmpty(record.BillingProvider, tenant.BillingProvider, "stripe")
return domain.SubscriptionSnapshot{
TenantID: tenant.ID,
@@ -761,9 +486,9 @@ func toSnapshot(tenant db.TenantRecord, record db.BillingSnapshotRecord, cfg con
return 0
}(),
LastSyncedAt: record.LastSyncedAt,
- CheckoutURLAvailable: checkoutAvailable,
- SyncAvailable: syncAvailable,
- PortalAvailable: portalAvailable,
+ CheckoutURLAvailable: billingCheckoutAvailable(cfg, record.PlanCode),
+ SyncAvailable: cfg.StripeConfigured(),
+ PortalAvailable: cfg.StripeConfigured() && customerID != "",
}
}
@@ -812,17 +537,6 @@ func entitlementsForPlan(planCode string) domain.PlanEntitlements {
}
}
-func (s *Service) paddlePlanCodeForPrice(priceID string, fallback string) string {
- for planCode, currencies := range s.cfg.PaddlePriceMatrix {
- for _, configuredPriceID := range currencies {
- if configuredPriceID != "" && configuredPriceID == priceID {
- return shared.NormalizePlanCode(planCode)
- }
- }
- }
- return shared.NormalizePlanCode(fallback)
-}
-
func (s *Service) stripePlanCodeForPrice(priceID string, fallback string) string {
for planCode, currencies := range s.cfg.StripePriceMatrix {
for _, configuredPriceID := range currencies {
@@ -834,23 +548,6 @@ func (s *Service) stripePlanCodeForPrice(priceID string, fallback string) string
return shared.NormalizePlanCode(fallback)
}
-func (s *Service) paddlePriceForPlan(planCode string, currency string) (string, string, string) {
- resolvedPlan := shared.NormalizePlanCode(strings.TrimSpace(planCode))
- if resolvedPlan == "" {
- resolvedPlan = "pro"
- }
- resolvedCurrency := normalizeCurrency(currency)
- if priceID := s.cfg.PaddlePriceMatrix[resolvedPlan][resolvedCurrency]; priceID != "" {
- return priceID, resolvedPlan, resolvedCurrency
- }
- if resolvedCurrency != "czk" {
- if priceID := s.cfg.PaddlePriceMatrix[resolvedPlan]["czk"]; priceID != "" {
- return priceID, resolvedPlan, "czk"
- }
- }
- return s.cfg.PaddlePriceMatrix[resolvedPlan]["usd"], resolvedPlan, "usd"
-}
-
func (s *Service) stripePriceForPlan(planCode string, currency string, billingInterval string) (string, string, string) {
resolvedPlan := shared.NormalizePlanCode(strings.TrimSpace(planCode))
if resolvedPlan == "" {
@@ -893,23 +590,6 @@ func (s *Service) stripePriceForPlan(planCode string, currency string, billingIn
return s.cfg.StripePriceMatrix[resolvedPlan][resolvedPlan+":czk"], resolvedPlan, "czk"
}
-func subscriptionRank(subscription *paddle.Subscription) int {
- switch subscription.Status {
- case paddle.SubscriptionStatusActive:
- return 6
- case paddle.SubscriptionStatusTrialing:
- return 5
- case paddle.SubscriptionStatusPastDue:
- return 4
- case paddle.SubscriptionStatusPaused:
- return 3
- case paddle.SubscriptionStatusCanceled:
- return 2
- default:
- return 1
- }
-}
-
func displayPricesForPlan(planCode string) []domain.PlanDisplayPrice {
switch shared.NormalizePlanCode(planCode) {
case "starter":
@@ -944,21 +624,12 @@ func normalizeCurrency(currency string) string {
}
}
-func normalizeSubscriptionStatus(status string) string {
- switch strings.TrimSpace(strings.ToLower(status)) {
- case "active", "trialing", "past_due", "paused", "canceled":
- return strings.TrimSpace(strings.ToLower(status))
- default:
- return "inactive"
- }
-}
-
-func checkoutAvailable(cfg config.Config, planCode string) bool {
- if !cfg.PaddleConfigured() || !cfg.PaddleWebhookConfigured() {
+func billingCheckoutAvailable(cfg config.Config, planCode string) bool {
+ if !cfg.StripeConfigured() || !cfg.StripeWebhookConfigured() {
return false
}
planCode = shared.NormalizePlanCode(planCode)
- for _, priceID := range cfg.PaddlePriceMatrix[planCode] {
+ for _, priceID := range cfg.StripePriceMatrix[planCode] {
if strings.TrimSpace(priceID) != "" {
return true
}
@@ -966,72 +637,6 @@ func checkoutAvailable(cfg config.Config, planCode string) bool {
return false
}
-func billingCheckoutAvailable(cfg config.Config, planCode string) bool {
- planCode = shared.NormalizePlanCode(planCode)
-
- // Prefer Stripe
- if cfg.StripeConfigured() && cfg.StripeWebhookConfigured() {
- for _, priceID := range cfg.StripePriceMatrix[planCode] {
- if strings.TrimSpace(priceID) != "" {
- return true
- }
- }
- }
-
- // Fall back to Paddle
- if cfg.PaddleConfigured() && cfg.PaddleWebhookConfigured() {
- for _, priceID := range cfg.PaddlePriceMatrix[planCode] {
- if strings.TrimSpace(priceID) != "" {
- return true
- }
- }
- }
-
- return false
-}
-
-func customDataString(data map[string]any, key string) string {
- if data == nil {
- return ""
- }
- value, ok := data[key]
- if !ok {
- return ""
- }
- switch typed := value.(type) {
- case string:
- return strings.TrimSpace(typed)
- default:
- return ""
- }
-}
-
-func parseRFC3339Ptr(value string) *time.Time {
- if strings.TrimSpace(value) == "" {
- return nil
- }
- parsed, err := time.Parse(time.RFC3339, value)
- if err != nil {
- return nil
- }
- utc := parsed.UTC()
- return &utc
-}
-
-func timePeriodStart(period *paddle.TimePeriod) string {
- if period == nil {
- return ""
- }
- return period.StartsAt
-}
-
-func timePeriodEnd(period *paddle.TimePeriod) string {
- if period == nil {
- return ""
- }
- return period.EndsAt
-}
-
func derefString(value *string) string {
if value == nil {
return ""
diff --git a/apps/backend/internal/billing/service_test.go b/apps/backend/internal/billing/service_test.go
index 4ec2f67..89b03e5 100644
--- a/apps/backend/internal/billing/service_test.go
+++ b/apps/backend/internal/billing/service_test.go
@@ -12,12 +12,12 @@ import (
func testConfig() config.Config {
return config.Config{
FrontendURL: "http://localhost:3000",
- PaddleAPIKey: "pdl_sdbx_apikey_123",
- PaddleWebhookKey: "pdl_ntf_123",
- PaddlePriceMatrix: map[string]map[string]string{
- "starter": {"czk": "pri_starter_czk", "usd": "pri_starter_usd"},
- "pro": {"czk": "pri_pro_czk", "usd": "pri_pro_usd"},
- "business": {"czk": "pri_business_czk", "usd": "pri_business_usd"},
+ StripeAPIKey: "sk_test_123",
+ StripeWebhookKey: "whsec_test_123",
+ StripePriceMatrix: map[string]map[string]string{
+ "starter": {"czk": "price_starter_czk", "usd": "price_starter_usd"},
+ "pro": {"czk": "price_pro_czk", "usd": "price_pro_usd"},
+ "business": {"czk": "price_business_czk", "usd": "price_business_usd"},
},
}
}
@@ -36,66 +36,59 @@ func TestGetSubscriptionFallsBackToSnapshotAndEntitlements(t *testing.T) {
if snapshot.PlanCode != "pro" {
t.Fatalf("expected pro, got %s", snapshot.PlanCode)
}
- if snapshot.Provider != "paddle" {
- t.Fatalf("expected paddle provider, got %s", snapshot.Provider)
+ if snapshot.Provider != "stripe" {
+ t.Fatalf("expected stripe provider, got %s", snapshot.Provider)
}
if snapshot.Entitlements.MaxLocations != 3 {
t.Fatalf("expected 3 locations, got %d", snapshot.Entitlements.MaxLocations)
}
}
-func TestCreateCheckoutRequiresPaddleConfig(t *testing.T) {
+func TestCreateCheckoutRequiresStripeConfig(t *testing.T) {
cfg := testConfig()
- cfg.PaddleAPIKey = ""
+ cfg.StripeAPIKey = ""
service := NewService(cfg, db.NewMemoryRepository())
response, err := service.CreateCheckoutSession(context.Background(), domain.Principal{
Subject: "demo-owner",
Email: "owner@bookra.dev",
}, "pro", "czk", "monthly")
- if err != ErrPaddleNotConfigured {
- t.Fatalf("expected ErrPaddleNotConfigured, got response=%v err=%v", response, err)
+ if err != ErrStripeNotConfigured {
+ t.Fatalf("expected ErrStripeNotConfigured, got response=%v err=%v", response, err)
}
}
-func TestCreateCheckoutReturnsLaunchPayload(t *testing.T) {
- service := NewService(testConfig(), db.NewMemoryRepository())
+func TestCreateCheckoutRejectsUnconfiguredPlan(t *testing.T) {
+ cfg := testConfig()
+ cfg.StripePriceMatrix["pro"] = map[string]string{}
+ service := NewService(cfg, db.NewMemoryRepository())
- response, err := service.CreateCheckoutSession(context.Background(), domain.Principal{
+ _, err := service.CreateCheckoutSession(context.Background(), domain.Principal{
Subject: "demo-owner",
Email: "owner@bookra.dev",
}, "pro", "czk", "monthly")
- if err != nil {
- t.Fatalf("create checkout: %v", err)
- }
- if response.PriceID != "pri_pro_czk" {
- t.Fatalf("expected pri_pro_czk, got %s", response.PriceID)
- }
- if response.CustomData["tenantId"] == "" {
- t.Fatal("expected tenantId in customData")
- }
- if response.SuccessRedirectURL == "" || response.CancelRedirectURL == "" {
- t.Fatal("expected redirect URLs")
+ if err != ErrBillingPlanUnsupported {
+ t.Fatalf("expected ErrBillingPlanUnsupported, got %v", err)
}
}
-func TestRefreshRequiresPaddleKeyWhenCustomerExists(t *testing.T) {
+func TestRefreshRequiresStripeKeyWhenCustomerExists(t *testing.T) {
cfg := testConfig()
- cfg.PaddleAPIKey = ""
+ cfg.StripeAPIKey = ""
service := NewService(cfg, db.NewMemoryRepository())
snapshot, err := service.Refresh(context.Background(), domain.Principal{
Subject: "demo-owner",
Email: "owner@bookra.dev",
})
- if err != ErrPaddleNotConfigured {
- t.Fatalf("expected ErrPaddleNotConfigured, got snapshot=%v err=%v", snapshot, err)
+ if err != ErrStripeNotConfigured {
+ t.Fatalf("expected ErrStripeNotConfigured, got snapshot=%v err=%v", snapshot, err)
}
}
func TestGetSubscriptionDisablesCheckoutWhenWebhookMissing(t *testing.T) {
cfg := testConfig()
- cfg.PaddleWebhookKey = ""
+ cfg.StripeWebhookKey = ""
service := NewService(cfg, db.NewMemoryRepository())
snapshot, err := service.GetSubscription(context.Background(), domain.Principal{
@@ -110,7 +103,7 @@ func TestGetSubscriptionDisablesCheckoutWhenWebhookMissing(t *testing.T) {
}
}
-func TestGetSubscriptionEnablesCheckoutWhenPaddleConfigured(t *testing.T) {
+func TestGetSubscriptionEnablesCheckoutWhenStripeConfigured(t *testing.T) {
service := NewService(testConfig(), db.NewMemoryRepository())
snapshot, err := service.GetSubscription(context.Background(), domain.Principal{
@@ -121,7 +114,7 @@ func TestGetSubscriptionEnablesCheckoutWhenPaddleConfigured(t *testing.T) {
t.Fatalf("get subscription: %v", err)
}
if !snapshot.CheckoutURLAvailable {
- t.Fatal("expected checkout available when paddle is configured")
+ t.Fatal("expected checkout available when stripe is configured")
}
if !snapshot.PortalAvailable {
t.Fatal("expected portal available when customer exists")
@@ -130,11 +123,11 @@ func TestGetSubscriptionEnablesCheckoutWhenPaddleConfigured(t *testing.T) {
func TestCreatePortalSessionRequiresCustomer(t *testing.T) {
repo := db.NewMemoryRepository()
- membership, err := repo.GetTenantMembershipByUserID(context.Background(), "demo-owner")
+ membership, err := repo.GetTenantMembershipBySubject(context.Background(), "demo-owner")
if err != nil {
t.Fatalf("get membership: %v", err)
}
- if err := repo.UpdateTenantBillingCustomerID(context.Background(), membership.Tenant.ID, ""); err != nil {
+ if err := repo.UpdateTenantBillingCustomerID(context.Background(), membership.Tenant.ID, "stripe", ""); err != nil {
t.Fatalf("clear billing customer: %v", err)
}
service := NewService(testConfig(), repo)
diff --git a/apps/backend/internal/bookings/customer_service.go b/apps/backend/internal/bookings/customer_service.go
index 46328fc..a8c8ac2 100644
--- a/apps/backend/internal/bookings/customer_service.go
+++ b/apps/backend/internal/bookings/customer_service.go
@@ -2,7 +2,10 @@ package bookings
import (
"context"
+ "crypto/subtle"
"errors"
+ "fmt"
+ "strings"
"time"
"bookra/apps/backend/internal/db"
@@ -17,8 +20,9 @@ var (
)
type CustomerService struct {
- repo db.Repository
- notifier CustomerNotifier
+ repo db.Repository
+ notifier CustomerNotifier
+ frontendURL string
}
type CustomerNotifier interface {
@@ -26,11 +30,14 @@ type CustomerNotifier interface {
SendBookingCancellation(ctx context.Context, data notifications.BookingEmailData) error
}
-func NewCustomerService(repo db.Repository, notifier CustomerNotifier) *CustomerService {
+func NewCustomerService(repo db.Repository, notifier CustomerNotifier, frontendURL string) *CustomerService {
if notifier == nil {
notifier = &customerNoopNotifier{}
}
- return &CustomerService{repo: repo, notifier: notifier}
+ if frontendURL == "" {
+ frontendURL = "http://localhost:3000"
+ }
+ return &CustomerService{repo: repo, notifier: notifier, frontendURL: strings.TrimRight(frontendURL, "/")}
}
type customerNoopNotifier struct{}
@@ -43,29 +50,70 @@ func (n *customerNoopNotifier) SendBookingCancellation(ctx context.Context, data
return nil
}
+// authorize compares the caller-supplied management token against the stored
+// per-booking token in constant time. Bookings without a token (created before
+// the feature) cannot be managed through the public endpoints.
+func authorize(booking db.BookingRecord, token string) error {
+ if booking.ManageToken == "" || token == "" {
+ return ErrUnauthorized
+ }
+ if subtle.ConstantTimeCompare([]byte(token), []byte(booking.ManageToken)) != 1 {
+ return ErrUnauthorized
+ }
+ return nil
+}
+
+func (s *CustomerService) managementURL(booking db.BookingRecord) string {
+ return fmt.Sprintf("%s/manage/%s?token=%s", s.frontendURL, booking.Reference, booking.ManageToken)
+}
+
+func (s *CustomerService) descriptors(ctx context.Context, booking db.BookingRecord) (serviceName string, locationName string) {
+ if booking.ServiceID != nil {
+ if services, err := s.repo.ListServicesByTenant(ctx, booking.TenantID); err == nil {
+ for _, service := range services {
+ if service.ID == *booking.ServiceID {
+ serviceName = service.Name
+ break
+ }
+ }
+ }
+ }
+ if booking.LocationID != nil {
+ if location, err := s.repo.GetLocationByID(ctx, *booking.LocationID); err == nil {
+ locationName = location.Name
+ }
+ }
+ return serviceName, locationName
+}
+
// GetBookingByReference returns booking details for customer management link
func (s *CustomerService) GetBookingByReference(ctx context.Context, reference string, token string) (domain.CustomerBookingView, error) {
booking, err := s.repo.GetBookingByReference(ctx, reference)
if err != nil {
return domain.CustomerBookingView{}, ErrBookingNotFound
}
+ if err := authorize(booking, token); err != nil {
+ return domain.CustomerBookingView{}, err
+ }
- // Get tenant details for business name
tenant, err := s.repo.GetTenantByID(ctx, booking.TenantID)
if err != nil {
return domain.CustomerBookingView{}, err
}
+ serviceName, locationName := s.descriptors(ctx, booking)
+
return domain.CustomerBookingView{
Reference: booking.Reference,
CustomerName: booking.CustomerName,
CustomerEmail: booking.CustomerEmail,
- Service: "Service", // Would get from service ID in full implementation
+ Service: serviceName,
BusinessName: tenant.Name,
StartsAt: booking.StartsAt,
EndsAt: booking.EndsAt,
- Location: "Location", // Would get from location ID in full implementation
+ Location: locationName,
Status: booking.Status,
+ Notes: booking.Notes,
}, nil
}
@@ -75,6 +123,9 @@ func (s *CustomerService) RescheduleBooking(ctx context.Context, reference strin
if err != nil {
return ErrBookingNotFound
}
+ if err := authorize(booking, token); err != nil {
+ return err
+ }
if booking.Status == "cancelled" {
return ErrBookingCancelled
@@ -98,6 +149,20 @@ func (s *CustomerService) RescheduleBooking(ctx context.Context, reference strin
return ErrInvalidReschedule
}
+ // Re-check resource conflicts at the requested window, excluding self.
+ existing, err := s.repo.ListBookingsByTenantBetween(ctx, booking.TenantID, newStartsAt, newEndsAt)
+ if err != nil {
+ return err
+ }
+ for _, other := range existing {
+ if other.ID == booking.ID || other.Status == "cancelled" || other.Status == "waitlisted" {
+ continue
+ }
+ if resourcesCollide(other, booking.StaffID, booking.LocationID) {
+ return ErrBookingConflict
+ }
+ }
+
if err := s.repo.RescheduleBooking(ctx, booking.ID, newStartsAt, newEndsAt); err != nil {
return err
}
@@ -114,6 +179,9 @@ func (s *CustomerService) CancelBooking(ctx context.Context, reference string, t
if err != nil {
return ErrBookingNotFound
}
+ if err := authorize(booking, token); err != nil {
+ return err
+ }
if booking.Status == "cancelled" {
return ErrBookingCancelled
@@ -144,22 +212,23 @@ func (s *CustomerService) sendRescheduleEmail(booking db.BookingRecord, newStart
brandColor = "#a65c3e"
}
- managementURL := "https://bookra.eu/manage/" + booking.Reference + "?token=" + booking.Reference
+ serviceName, locationName := s.descriptors(ctx, booking)
emailData := notifications.BookingEmailData{
+ TenantID: tenant.ID,
TenantName: tenant.Name,
TenantSlug: tenant.Slug,
BrandColor: brandColor,
CustomerName: booking.CustomerName,
CustomerEmail: booking.CustomerEmail,
- Service: "Service",
- Location: "Location",
+ Service: serviceName,
+ Location: locationName,
Reference: booking.Reference,
StartsAt: newStartsAt,
EndsAt: newEndsAt,
Timezone: tenant.Timezone,
Locale: tenant.Locale,
- ManagementURL: managementURL,
+ ManagementURL: s.managementURL(booking),
}
s.notifier.SendBookingReschedule(ctx, emailData)
@@ -180,14 +249,17 @@ func (s *CustomerService) sendCancellationEmail(booking db.BookingRecord) {
brandColor = "#a65c3e"
}
+ serviceName, locationName := s.descriptors(ctx, booking)
+
emailData := notifications.BookingEmailData{
+ TenantID: tenant.ID,
TenantName: tenant.Name,
TenantSlug: tenant.Slug,
BrandColor: brandColor,
CustomerName: booking.CustomerName,
CustomerEmail: booking.CustomerEmail,
- Service: "Service",
- Location: "Location",
+ Service: serviceName,
+ Location: locationName,
Reference: booking.Reference,
StartsAt: booking.StartsAt,
EndsAt: booking.EndsAt,
diff --git a/apps/backend/internal/bookings/customer_service_test.go b/apps/backend/internal/bookings/customer_service_test.go
new file mode 100644
index 0000000..cdd5cf8
--- /dev/null
+++ b/apps/backend/internal/bookings/customer_service_test.go
@@ -0,0 +1,113 @@
+package bookings
+
+import (
+ "context"
+ "testing"
+ "time"
+
+ "bookra/apps/backend/internal/db"
+ "bookra/apps/backend/internal/domain"
+)
+
+func newBookingFixture(t *testing.T, repo *db.MemoryRepository) db.BookingRecord {
+ t.Helper()
+ created, err := repo.CreateBooking(context.Background(), db.CreateBookingParams{
+ TenantID: "5d6b3551-0a3e-4b86-bdf0-e9df20a47148",
+ CustomerName: "Test Customer",
+ CustomerEmail: "customer@example.com",
+ StartsAt: time.Now().Add(24 * time.Hour),
+ EndsAt: time.Now().Add(25 * time.Hour),
+ Status: "confirmed",
+ Reference: "BOK-TEST-1",
+ ManageToken: "secret-manage-token",
+ })
+ if err != nil {
+ t.Fatalf("create booking: %v", err)
+ }
+ booking, err := repo.GetBookingByReference(context.Background(), created.Reference)
+ if err != nil {
+ t.Fatalf("get booking: %v", err)
+ }
+ return booking
+}
+
+func TestGetBookingRequiresManageToken(t *testing.T) {
+ repo := db.NewMemoryRepository()
+ booking := newBookingFixture(t, repo)
+ svc := NewCustomerService(repo, nil, "http://localhost:3000")
+
+ if _, err := svc.GetBookingByReference(context.Background(), booking.Reference, ""); err != ErrUnauthorized {
+ t.Fatalf("expected ErrUnauthorized for missing token, got %v", err)
+ }
+ if _, err := svc.GetBookingByReference(context.Background(), booking.Reference, "wrong"); err != ErrUnauthorized {
+ t.Fatalf("expected ErrUnauthorized for wrong token, got %v", err)
+ }
+ view, err := svc.GetBookingByReference(context.Background(), booking.Reference, "secret-manage-token")
+ if err != nil {
+ t.Fatalf("expected authorized view, got %v", err)
+ }
+ if view.Reference != booking.Reference {
+ t.Fatalf("expected reference %s, got %s", booking.Reference, view.Reference)
+ }
+}
+
+func TestRescheduleRequiresManageToken(t *testing.T) {
+ repo := db.NewMemoryRepository()
+ booking := newBookingFixture(t, repo)
+ svc := NewCustomerService(repo, nil, "http://localhost:3000")
+
+ req := domain.RescheduleBookingRequest{
+ NewStartsAt: time.Now().Add(48 * time.Hour).Format(time.RFC3339),
+ NewEndsAt: time.Now().Add(49 * time.Hour).Format(time.RFC3339),
+ }
+ if err := svc.RescheduleBooking(context.Background(), booking.Reference, req, ""); err != ErrUnauthorized {
+ t.Fatalf("expected ErrUnauthorized, got %v", err)
+ }
+ if err := svc.RescheduleBooking(context.Background(), booking.Reference, req, "wrong"); err != ErrUnauthorized {
+ t.Fatalf("expected ErrUnauthorized, got %v", err)
+ }
+}
+
+func TestCancelRequiresManageToken(t *testing.T) {
+ repo := db.NewMemoryRepository()
+ booking := newBookingFixture(t, repo)
+ svc := NewCustomerService(repo, nil, "http://localhost:3000")
+
+ if err := svc.CancelBooking(context.Background(), booking.Reference, ""); err != ErrUnauthorized {
+ t.Fatalf("expected ErrUnauthorized, got %v", err)
+ }
+ if err := svc.CancelBooking(context.Background(), booking.Reference, "wrong"); err != ErrUnauthorized {
+ t.Fatalf("expected ErrUnauthorized, got %v", err)
+ }
+ if err := svc.CancelBooking(context.Background(), booking.Reference, "secret-manage-token"); err != nil {
+ t.Fatalf("expected successful cancel, got %v", err)
+ }
+}
+
+func TestRescheduleRejectsConflictingSlot(t *testing.T) {
+ repo := db.NewMemoryRepository()
+ svc := NewCustomerService(repo, nil, "http://localhost:3000")
+ base := time.Now().Add(48 * time.Hour)
+
+ // Existing booking in the same tenant occupying the target slot.
+ _, err := repo.CreateBooking(context.Background(), db.CreateBookingParams{
+ TenantID: "5d6b3551-0a3e-4b86-bdf0-e9df20a47148",
+ StartsAt: base,
+ EndsAt: base.Add(time.Hour),
+ Status: "confirmed",
+ Reference: "BOK-OCCUPIED",
+ ManageToken: "token-a",
+ })
+ if err != nil {
+ t.Fatalf("create occupying booking: %v", err)
+ }
+
+ booking := newBookingFixture(t, repo)
+ err = svc.RescheduleBooking(context.Background(), booking.Reference, domain.RescheduleBookingRequest{
+ NewStartsAt: base.Add(30 * time.Minute).Format(time.RFC3339), // overlaps BOK-OCCUPIED
+ NewEndsAt: base.Add(90 * time.Minute).Format(time.RFC3339),
+ }, "secret-manage-token")
+ if err != ErrBookingConflict {
+ t.Fatalf("expected ErrBookingConflict, got %v", err)
+ }
+}
diff --git a/apps/backend/internal/bookings/service.go b/apps/backend/internal/bookings/service.go
index 3843f23..78b9555 100644
--- a/apps/backend/internal/bookings/service.go
+++ b/apps/backend/internal/bookings/service.go
@@ -2,6 +2,8 @@ package bookings
import (
"context"
+ "crypto/rand"
+ "encoding/hex"
"errors"
"fmt"
"net/mail"
@@ -26,8 +28,9 @@ var (
)
type Service struct {
- repo db.Repository
- notifier Notifier
+ repo db.Repository
+ notifier Notifier
+ frontendURL string
}
type Notifier interface {
@@ -35,11 +38,14 @@ type Notifier interface {
SendBusinessNotification(ctx context.Context, businessEmail string, data notifications.BookingEmailData) error
}
-func NewService(repo db.Repository, notifier Notifier) *Service {
+func NewService(repo db.Repository, notifier Notifier, frontendURL string) *Service {
if notifier == nil {
notifier = &noopNotifier{}
}
- return &Service{repo: repo, notifier: notifier}
+ if frontendURL == "" {
+ frontendURL = "http://localhost:3000"
+ }
+ return &Service{repo: repo, notifier: notifier, frontendURL: strings.TrimRight(frontendURL, "/")}
}
type noopNotifier struct{}
@@ -163,7 +169,7 @@ func (s *Service) Create(ctx context.Context, request domain.CreateBookingReques
if booking.Status == "cancelled" {
continue
}
- if sameResource(booking.StaffID, request.StaffID) || sameResource(booking.LocationID, request.LocationID) {
+ if resourcesCollide(booking, request.StaffID, request.LocationID) {
return domain.CreateBookingResponse{}, ErrBookingConflict
}
}
@@ -203,6 +209,7 @@ func (s *Service) Create(ctx context.Context, request domain.CreateBookingReques
EndsAt: endsAt.UTC(),
Status: status,
Reference: db.Reference("BK", time.Now()),
+ ManageToken: generateManageToken(),
Notes: notes,
})
if err != nil {
@@ -234,16 +241,40 @@ func (s *Service) Create(ctx context.Context, request domain.CreateBookingReques
}
// Send confirmation emails (async - don't fail booking if email fails)
- go s.sendBookingConfirmationEmails(tenant, created, customerName, customerEmail, startsAt, endsAt)
+ go s.sendBookingConfirmationEmails(tenant, created, request.ServiceID, request.LocationID, customerName, customerEmail, startsAt, endsAt)
return domain.CreateBookingResponse{
BookingID: created.ID,
Reference: created.Reference,
Status: created.Status,
+ ManageURL: s.manageURL(created),
}, nil
}
-func (s *Service) sendBookingConfirmationEmails(tenant db.TenantRecord, booking db.CreatedBooking, customerName, customerEmail string, startsAt, endsAt time.Time) {
+func (s *Service) manageURL(booking db.CreatedBooking) string {
+ return fmt.Sprintf("%s/manage/%s?token=%s", s.frontendURL, booking.Reference, booking.ManageToken)
+}
+
+func (s *Service) bookingDescriptors(ctx context.Context, tenantID string, serviceID, locationID *string) (serviceName string, locationName string) {
+ if serviceID != nil {
+ if services, err := s.repo.ListServicesByTenant(ctx, tenantID); err == nil {
+ for _, service := range services {
+ if service.ID == *serviceID {
+ serviceName = service.Name
+ break
+ }
+ }
+ }
+ }
+ if locationID != nil {
+ if location, err := s.repo.GetLocationByID(ctx, *locationID); err == nil {
+ locationName = location.Name
+ }
+ }
+ return serviceName, locationName
+}
+
+func (s *Service) sendBookingConfirmationEmails(tenant db.TenantRecord, booking db.CreatedBooking, serviceID, locationID *string, customerName, customerEmail string, startsAt, endsAt time.Time) {
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
@@ -254,22 +285,23 @@ func (s *Service) sendBookingConfirmationEmails(tenant db.TenantRecord, booking
brandColor = "#a65c3e" // Default terra color
}
- managementURL := fmt.Sprintf("https://bookra.eu/manage/%s?token=%s", booking.Reference, booking.Reference)
+ serviceName, locationName := s.bookingDescriptors(ctx, tenant.ID, serviceID, locationID)
emailData := notifications.BookingEmailData{
+ TenantID: tenant.ID,
TenantName: tenant.Name,
TenantSlug: tenant.Slug,
BrandColor: brandColor,
CustomerName: customerName,
CustomerEmail: customerEmail,
- Service: "Service", // Would lookup from booking.ServiceID in full implementation
- Location: "Location", // Would lookup from booking.LocationID in full implementation
+ Service: serviceName,
+ Location: locationName,
Reference: booking.Reference,
StartsAt: startsAt,
EndsAt: endsAt,
Timezone: tenant.Timezone,
Locale: tenant.Locale,
- ManagementURL: managementURL,
+ ManagementURL: s.manageURL(booking),
}
// Send to customer
@@ -303,7 +335,7 @@ func (s *Service) classSessionForRequest(ctx context.Context, tenantID string, c
}
func (s *Service) DashboardSummary(ctx context.Context, principal domain.Principal) (domain.DashboardSummary, error) {
- membership, err := s.repo.GetTenantMembershipByUserID(ctx, principal.Subject)
+ membership, err := s.repo.GetTenantMembershipBySubject(ctx, principal.Subject)
if err != nil {
if errors.Is(err, pgx.ErrNoRows) {
return domain.DashboardSummary{}, ErrTenantMembership
@@ -311,6 +343,38 @@ func (s *Service) DashboardSummary(ctx context.Context, principal domain.Princip
return domain.DashboardSummary{}, err
}
+ serviceNames := map[string]string{}
+ if services, err := s.repo.ListServicesByTenant(ctx, membership.Tenant.ID); err == nil {
+ for _, service := range services {
+ serviceNames[service.ID] = service.Name
+ }
+ }
+ locationNames := map[string]string{}
+ if locations, err := s.repo.ListLocationsByTenant(ctx, membership.Tenant.ID); err == nil {
+ for _, location := range locations {
+ locationNames[location.ID] = location.Name
+ }
+ }
+ toDomain := func(booking db.BookingRecord) domain.UpcomingBooking {
+ out := domain.UpcomingBooking{
+ ID: booking.ID,
+ Reference: booking.Reference,
+ CustomerName: booking.CustomerName,
+ CustomerEmail: booking.CustomerEmail,
+ Notes: booking.Notes,
+ StartsAt: booking.StartsAt,
+ EndsAt: booking.EndsAt,
+ Status: booking.Status,
+ }
+ if booking.ServiceID != nil {
+ out.Service = serviceNames[*booking.ServiceID]
+ }
+ if booking.LocationID != nil {
+ out.Location = locationNames[*booking.LocationID]
+ }
+ return out
+ }
+
now := time.Now().UTC()
weekEnd := now.AddDate(0, 0, 7)
metrics, err := s.repo.GetDashboardMetrics(ctx, membership.Tenant.ID, now, weekEnd)
@@ -323,14 +387,10 @@ func (s *Service) DashboardSummary(ctx context.Context, principal domain.Princip
}
upcoming := make([]domain.UpcomingBooking, 0, len(upcomingRecords))
for _, booking := range upcomingRecords {
- upcoming = append(upcoming, domain.UpcomingBooking{
- Reference: booking.Reference,
- CustomerName: booking.CustomerName,
- CustomerEmail: booking.CustomerEmail,
- StartsAt: booking.StartsAt,
- EndsAt: booking.EndsAt,
- Status: booking.Status,
- })
+ if booking.Status == "cancelled" {
+ continue
+ }
+ upcoming = append(upcoming, toDomain(booking))
}
if len(upcoming) > 5 {
upcoming = upcoming[:5]
@@ -345,14 +405,7 @@ func (s *Service) DashboardSummary(ctx context.Context, principal domain.Princip
}
allBookings := make([]domain.UpcomingBooking, 0, len(allRecords))
for _, booking := range allRecords {
- allBookings = append(allBookings, domain.UpcomingBooking{
- Reference: booking.Reference,
- CustomerName: booking.CustomerName,
- CustomerEmail: booking.CustomerEmail,
- StartsAt: booking.StartsAt,
- EndsAt: booking.EndsAt,
- Status: booking.Status,
- })
+ allBookings = append(allBookings, toDomain(booking))
}
return domain.DashboardSummary{
@@ -407,52 +460,55 @@ func generateAppointmentSlots(
location = time.UTC
}
- service := services[0]
now := time.Now().In(location)
var slots []domain.TimeSlot
- for dayOffset := 0; dayOffset < 7 && len(slots) < 6; dayOffset++ {
- day := now.AddDate(0, 0, dayOffset)
- for _, rule := range rules {
- if int(day.Weekday()) != rule.DayOfWeek {
- continue
- }
-
- startsLocal, err := time.ParseInLocation("15:04:05", rule.StartsLocal, location)
- if err != nil {
- continue
- }
- endsLocal, err := time.ParseInLocation("15:04:05", rule.EndsLocal, location)
- if err != nil {
- continue
- }
-
- windowStart := time.Date(day.Year(), day.Month(), day.Day(), startsLocal.Hour(), startsLocal.Minute(), 0, 0, location)
- windowEnd := time.Date(day.Year(), day.Month(), day.Day(), endsLocal.Hour(), endsLocal.Minute(), 0, 0, location)
-
- step := time.Duration(service.DurationMinutes+service.BufferAfterMinutes) * time.Minute
- duration := time.Duration(service.DurationMinutes) * time.Minute
- for slotStart := windowStart; slotStart.Add(duration).Before(windowEnd) || slotStart.Add(duration).Equal(windowEnd); slotStart = slotStart.Add(step) {
- if slotStart.Before(now.Add(2 * time.Hour)) {
+ for _, service := range services {
+ serviceSlots := 0
+ for dayOffset := 0; dayOffset < 7 && serviceSlots < 4; dayOffset++ {
+ day := now.AddDate(0, 0, dayOffset)
+ for _, rule := range rules {
+ if int(day.Weekday()) != rule.DayOfWeek {
continue
}
- slotEnd := slotStart.Add(duration)
- if collides(existing, rule.StaffID, nil, slotStart.UTC(), slotEnd.UTC()) {
+ startsLocal, err := time.ParseInLocation("15:04:05", rule.StartsLocal, location)
+ if err != nil {
+ continue
+ }
+ endsLocal, err := time.ParseInLocation("15:04:05", rule.EndsLocal, location)
+ if err != nil {
continue
}
- serviceID := service.ID
- slots = append(slots, domain.TimeSlot{
- ServiceID: &serviceID,
- StaffID: rule.StaffID,
- StartsAt: slotStart.UTC().Format(time.RFC3339),
- EndsAt: slotEnd.UTC().Format(time.RFC3339),
- Mode: "appointment",
- Label: service.Name,
- })
- if len(slots) >= 6 {
- break
+ windowStart := time.Date(day.Year(), day.Month(), day.Day(), startsLocal.Hour(), startsLocal.Minute(), 0, 0, location)
+ windowEnd := time.Date(day.Year(), day.Month(), day.Day(), endsLocal.Hour(), endsLocal.Minute(), 0, 0, location)
+
+ step := time.Duration(service.DurationMinutes+service.BufferAfterMinutes) * time.Minute
+ duration := time.Duration(service.DurationMinutes) * time.Minute
+ for slotStart := windowStart; slotStart.Add(duration).Before(windowEnd) || slotStart.Add(duration).Equal(windowEnd); slotStart = slotStart.Add(step) {
+ if slotStart.Before(now.Add(2 * time.Hour)) {
+ continue
+ }
+
+ slotEnd := slotStart.Add(duration)
+ if collides(existing, rule.StaffID, nil, slotStart.UTC(), slotEnd.UTC()) {
+ continue
+ }
+
+ serviceID := service.ID
+ slots = append(slots, domain.TimeSlot{
+ ServiceID: &serviceID,
+ StaffID: rule.StaffID,
+ StartsAt: slotStart.UTC().Format(time.RFC3339),
+ EndsAt: slotEnd.UTC().Format(time.RFC3339),
+ Mode: "appointment",
+ Label: service.Name,
+ })
+ serviceSlots++
+ if serviceSlots >= 4 {
+ break
+ }
}
}
}
@@ -491,18 +547,47 @@ func collides(bookings []db.BookingRecord, staffID *string, locationID *string,
if !(booking.StartsAt.Before(endsAt) && booking.EndsAt.After(startsAt)) {
continue
}
- if sameResource(booking.StaffID, staffID) || sameResource(booking.LocationID, locationID) {
+ if resourcesCollide(booking, staffID, locationID) {
return true
}
}
return false
}
-func sameResource(left *string, right *string) bool {
- if left == nil || right == nil {
- return false
+// resourcesCollide reports whether an existing booking shares the resource a
+// new booking would consume. A booking with neither staff nor location
+// assignment occupies the tenant's single implicit resource, so it conflicts
+// with any other unassigned booking. Explicit assignments only collide when
+// they match exactly.
+func resourcesCollide(booking db.BookingRecord, staffID *string, locationID *string) bool {
+ if booking.StaffID != nil && staffID != nil && *booking.StaffID == *staffID {
+ return true
}
- return *left == *right
+ if booking.LocationID != nil && locationID != nil && *booking.LocationID == *locationID {
+ return true
+ }
+ return booking.StaffID == nil && staffID == nil && booking.LocationID == nil && locationID == nil
+}
+
+func generateManageToken() string {
+ b := make([]byte, 32)
+ if _, err := rand.Read(b); err != nil {
+ panic(fmt.Sprintf("generate manage token: %v", err))
+ }
+ return hex.EncodeToString(b)
+}
+
+// GenerateManageToken returns a new cryptographically random booking
+// management token. Exported for catalog dashboard bookings.
+func GenerateManageToken() string {
+ return generateManageToken()
+}
+
+// AppointmentResourceConflict reports whether an existing booking shares the
+// resource a new appointment would consume. Exported for catalog dashboard
+// bookings.
+func AppointmentResourceConflict(booking db.BookingRecord, staffID *string, locationID *string) bool {
+ return resourcesCollide(booking, staffID, locationID)
}
func sameSecond(left time.Time, right time.Time) bool {
diff --git a/apps/backend/internal/bookings/service_test.go b/apps/backend/internal/bookings/service_test.go
index e956317..5e29390 100644
--- a/apps/backend/internal/bookings/service_test.go
+++ b/apps/backend/internal/bookings/service_test.go
@@ -12,7 +12,7 @@ import (
func TestCreateAppointmentRejectsConflict(t *testing.T) {
repo := db.NewMemoryRepository()
- service := NewService(repo, nil)
+ service := NewService(repo, nil, "http://localhost:3000")
availability, err := service.Availability(context.Background(), "studio-atelier")
if err != nil {
@@ -69,7 +69,7 @@ func TestCreateAppointmentRejectsConflict(t *testing.T) {
func TestCreateClassFallsBackToWaitlistWhenCapacityReached(t *testing.T) {
repo := db.NewMemoryRepository()
- service := NewService(repo, nil)
+ service := NewService(repo, nil, "http://localhost:3000")
availability, err := service.Availability(context.Background(), "studio-atelier")
if err != nil {
@@ -126,7 +126,7 @@ func TestCreateClassFallsBackToWaitlistWhenCapacityReached(t *testing.T) {
func TestCreateAppointmentRequiresTenantService(t *testing.T) {
repo := db.NewMemoryRepository()
- service := NewService(repo, nil)
+ service := NewService(repo, nil, "http://localhost:3000")
_, err := service.Create(context.Background(), domain.CreateBookingRequest{
TenantSlug: "studio-atelier",
@@ -143,7 +143,7 @@ func TestCreateAppointmentRequiresTenantService(t *testing.T) {
func TestCreateClassRequiresExistingSession(t *testing.T) {
repo := db.NewMemoryRepository()
- service := NewService(repo, nil)
+ service := NewService(repo, nil, "http://localhost:3000")
missingSessionID := "11111111-1111-1111-1111-111111111111"
_, err := service.Create(context.Background(), domain.CreateBookingRequest{
@@ -162,7 +162,7 @@ func TestCreateClassRequiresExistingSession(t *testing.T) {
func TestAvailabilityGeneratesUpcomingSlots(t *testing.T) {
repo := db.NewMemoryRepository()
- service := NewService(repo, nil)
+ service := NewService(repo, nil, "http://localhost:3000")
availability, err := service.Availability(context.Background(), "studio-atelier")
if err != nil {
@@ -185,7 +185,7 @@ func TestAvailabilityGeneratesUpcomingSlots(t *testing.T) {
func TestCreateSchedulesReminderJobForUpcomingAppointment(t *testing.T) {
repo := db.NewMemoryRepository()
- service := NewService(repo, nil)
+ service := NewService(repo, nil, "http://localhost:3000")
availability, err := service.Availability(context.Background(), "studio-atelier")
if err != nil {
diff --git a/apps/backend/internal/catalog/service.go b/apps/backend/internal/catalog/service.go
index 4d28696..61f363f 100644
--- a/apps/backend/internal/catalog/service.go
+++ b/apps/backend/internal/catalog/service.go
@@ -4,8 +4,11 @@ import (
"context"
"errors"
"fmt"
+ "net/mail"
+ "strings"
"time"
+ "bookra/apps/backend/internal/bookings"
"bookra/apps/backend/internal/db"
"bookra/apps/backend/internal/domain"
)
@@ -16,6 +19,7 @@ var (
ErrCustomerNotFound = errors.New("customer not found")
ErrBookingNotFound = errors.New("booking not found")
ErrInvalidBooking = errors.New("invalid booking request")
+ ErrBookingConflict = errors.New("booking conflicts with an existing reservation")
ErrTenantNotFound = errors.New("tenant not found")
ErrTenantMembership = errors.New("tenant membership not found")
ErrPlanLimitReached = errors.New("plan limit reached")
@@ -44,7 +48,7 @@ func NewService(repo db.Repository, billingService interface {
// ============================================
func (s *Service) ListLocations(ctx context.Context, principal domain.Principal) ([]domain.Location, error) {
- membership, err := s.repo.GetTenantMembershipByUserID(ctx, principal.Subject)
+ membership, err := s.repo.GetTenantMembershipBySubject(ctx, principal.Subject)
if err != nil {
return nil, ErrTenantMembership
}
@@ -56,21 +60,25 @@ func (s *Service) ListLocations(ctx context.Context, principal domain.Principal)
locations := make([]domain.Location, len(records))
for i, rec := range records {
- locations[i] = domain.Location{
- ID: rec.ID,
- TenantID: rec.TenantID,
- Name: rec.Name,
- Type: "room", // Default type
- Capacity: 10, // Default capacity
- Timezone: rec.Timezone,
- CreatedAt: rec.CreatedAt,
- }
+ locations[i] = locationToDomain(rec)
}
return locations, nil
}
+func locationToDomain(rec db.LocationRecord) domain.Location {
+ return domain.Location{
+ ID: rec.ID,
+ TenantID: rec.TenantID,
+ Name: rec.Name,
+ Type: rec.Type,
+ Capacity: rec.Capacity,
+ Timezone: rec.Timezone,
+ CreatedAt: rec.CreatedAt,
+ }
+}
+
func (s *Service) CreateLocation(ctx context.Context, principal domain.Principal, req domain.CreateLocationRequest) (domain.Location, error) {
- membership, err := s.repo.GetTenantMembershipByUserID(ctx, principal.Subject)
+ membership, err := s.repo.GetTenantMembershipBySubject(ctx, principal.Subject)
if err != nil {
return domain.Location{}, ErrTenantMembership
}
@@ -87,9 +95,20 @@ func (s *Service) CreateLocation(ctx context.Context, principal domain.Principal
}
}
+ locationType := strings.TrimSpace(req.Type)
+ if locationType == "" {
+ locationType = "room"
+ }
+ capacity := req.Capacity
+ if capacity <= 0 {
+ capacity = 1
+ }
+
params := db.CreateLocationParams{
TenantID: membership.Tenant.ID,
Name: req.Name,
+ Type: locationType,
+ Capacity: capacity,
Timezone: membership.Tenant.Timezone,
}
@@ -110,19 +129,11 @@ func (s *Service) CreateLocation(ctx context.Context, principal domain.Principal
}
}
- return domain.Location{
- ID: rec.ID,
- TenantID: rec.TenantID,
- Name: rec.Name,
- Type: req.Type,
- Capacity: 10,
- Timezone: rec.Timezone,
- CreatedAt: rec.CreatedAt,
- }, nil
+ return locationToDomain(rec), nil
}
func (s *Service) UpdateLocation(ctx context.Context, principal domain.Principal, locationID string, req domain.UpdateLocationRequest) (domain.Location, error) {
- membership, err := s.repo.GetTenantMembershipByUserID(ctx, principal.Subject)
+ membership, err := s.repo.GetTenantMembershipBySubject(ctx, principal.Subject)
if err != nil {
return domain.Location{}, ErrTenantMembership
}
@@ -140,25 +151,23 @@ func (s *Service) UpdateLocation(ctx context.Context, principal domain.Principal
if req.Name != "" {
params.Name = &req.Name
}
+ if req.Type != "" {
+ params.Type = &req.Type
+ }
+ if req.Capacity > 0 {
+ params.Capacity = &req.Capacity
+ }
rec, err := s.repo.UpdateLocation(ctx, locationID, params)
if err != nil {
return domain.Location{}, err
}
- return domain.Location{
- ID: rec.ID,
- TenantID: rec.TenantID,
- Name: rec.Name,
- Type: req.Type,
- Capacity: 10,
- Timezone: rec.Timezone,
- CreatedAt: rec.CreatedAt,
- }, nil
+ return locationToDomain(rec), nil
}
func (s *Service) DeleteLocation(ctx context.Context, principal domain.Principal, locationID string) error {
- membership, err := s.repo.GetTenantMembershipByUserID(ctx, principal.Subject)
+ membership, err := s.repo.GetTenantMembershipBySubject(ctx, principal.Subject)
if err != nil {
return ErrTenantMembership
}
@@ -179,7 +188,7 @@ func (s *Service) DeleteLocation(ctx context.Context, principal domain.Principal
// ============================================
func (s *Service) ListBlockedDays(ctx context.Context, principal domain.Principal, from time.Time, to time.Time) ([]domain.BlockedDay, error) {
- membership, err := s.repo.GetTenantMembershipByUserID(ctx, principal.Subject)
+ membership, err := s.repo.GetTenantMembershipBySubject(ctx, principal.Subject)
if err != nil {
return nil, ErrTenantMembership
}
@@ -205,7 +214,7 @@ func (s *Service) ListBlockedDays(ctx context.Context, principal domain.Principa
}
func (s *Service) CreateBlockedDay(ctx context.Context, principal domain.Principal, req domain.CreateBlockedDayRequest) (domain.BlockedDay, error) {
- membership, err := s.repo.GetTenantMembershipByUserID(ctx, principal.Subject)
+ membership, err := s.repo.GetTenantMembershipBySubject(ctx, principal.Subject)
if err != nil {
return domain.BlockedDay{}, ErrTenantMembership
}
@@ -241,7 +250,7 @@ func (s *Service) CreateBlockedDay(ctx context.Context, principal domain.Princip
}
func (s *Service) UpdateBlockedDay(ctx context.Context, principal domain.Principal, blockedDayID string, req domain.UpdateBlockedDayRequest) (domain.BlockedDay, error) {
- membership, err := s.repo.GetTenantMembershipByUserID(ctx, principal.Subject)
+ membership, err := s.repo.GetTenantMembershipBySubject(ctx, principal.Subject)
if err != nil {
return domain.BlockedDay{}, ErrTenantMembership
}
@@ -288,7 +297,7 @@ func (s *Service) UpdateBlockedDay(ctx context.Context, principal domain.Princip
}
func (s *Service) DeleteBlockedDay(ctx context.Context, principal domain.Principal, blockedDayID string) error {
- membership, err := s.repo.GetTenantMembershipByUserID(ctx, principal.Subject)
+ membership, err := s.repo.GetTenantMembershipBySubject(ctx, principal.Subject)
if err != nil {
return ErrTenantMembership
}
@@ -318,7 +327,7 @@ func (s *Service) DeleteBlockedDay(ctx context.Context, principal domain.Princip
// ============================================
func (s *Service) ListCustomers(ctx context.Context, principal domain.Principal, limit int, offset int) ([]domain.Customer, error) {
- membership, err := s.repo.GetTenantMembershipByUserID(ctx, principal.Subject)
+ membership, err := s.repo.GetTenantMembershipBySubject(ctx, principal.Subject)
if err != nil {
return nil, ErrTenantMembership
}
@@ -353,7 +362,7 @@ func (s *Service) ListCustomers(ctx context.Context, principal domain.Principal,
}
func (s *Service) CreateCustomer(ctx context.Context, principal domain.Principal, req domain.CreateCustomerRequest) (domain.Customer, error) {
- membership, err := s.repo.GetTenantMembershipByUserID(ctx, principal.Subject)
+ membership, err := s.repo.GetTenantMembershipBySubject(ctx, principal.Subject)
if err != nil {
return domain.Customer{}, ErrTenantMembership
}
@@ -390,7 +399,7 @@ func (s *Service) CreateCustomer(ctx context.Context, principal domain.Principal
}
func (s *Service) UpdateCustomer(ctx context.Context, principal domain.Principal, customerID string, req domain.UpdateCustomerRequest) (domain.Customer, error) {
- membership, err := s.repo.GetTenantMembershipByUserID(ctx, principal.Subject)
+ membership, err := s.repo.GetTenantMembershipBySubject(ctx, principal.Subject)
if err != nil {
return domain.Customer{}, ErrTenantMembership
}
@@ -444,7 +453,7 @@ func (s *Service) UpdateCustomer(ctx context.Context, principal domain.Principal
}
func (s *Service) DeleteCustomer(ctx context.Context, principal domain.Principal, customerID string) error {
- membership, err := s.repo.GetTenantMembershipByUserID(ctx, principal.Subject)
+ membership, err := s.repo.GetTenantMembershipBySubject(ctx, principal.Subject)
if err != nil {
return ErrTenantMembership
}
@@ -465,7 +474,7 @@ func (s *Service) DeleteCustomer(ctx context.Context, principal domain.Principal
// ============================================
func (s *Service) ListWorkingHours(ctx context.Context, principal domain.Principal) ([]domain.WorkingHours, error) {
- membership, err := s.repo.GetTenantMembershipByUserID(ctx, principal.Subject)
+ membership, err := s.repo.GetTenantMembershipBySubject(ctx, principal.Subject)
if err != nil {
return nil, ErrTenantMembership
}
@@ -488,18 +497,129 @@ func (s *Service) ListWorkingHours(ctx context.Context, principal domain.Princip
}
func (s *Service) UpdateWorkingHours(ctx context.Context, principal domain.Principal, dayOfWeek int, req domain.UpdateWorkingHoursRequest) error {
- membership, err := s.repo.GetTenantMembershipByUserID(ctx, principal.Subject)
+ membership, err := s.repo.GetTenantMembershipBySubject(ctx, principal.Subject)
if err != nil {
return ErrTenantMembership
}
- params := db.UpdateWorkingHoursParams{}
+ params := db.UpdateWorkingHoursParams{IsOpen: req.IsOpen}
if req.Open != "" {
+ if _, err := time.Parse("15:04", req.Open); err != nil {
+ return fmt.Errorf("%w: open must be HH:MM", ErrInvalidBooking)
+ }
params.StartsLocal = &req.Open
}
if req.Close != "" {
+ if _, err := time.Parse("15:04", req.Close); err != nil {
+ return fmt.Errorf("%w: close must be HH:MM", ErrInvalidBooking)
+ }
params.EndsLocal = &req.Close
}
return s.repo.UpdateWorkingHours(ctx, membership.Tenant.ID, dayOfWeek, params)
}
+
+// CreateBooking creates a manual booking from the dashboard. The service name
+// is resolved against the tenant's services; when it matches nothing, the
+// tenant's first service is used so the booking still carries a duration.
+func (s *Service) CreateBooking(ctx context.Context, principal domain.Principal, req domain.DashboardBookingRequest) (domain.UpcomingBooking, error) {
+ membership, err := s.repo.GetTenantMembershipBySubject(ctx, principal.Subject)
+ if err != nil {
+ return domain.UpcomingBooking{}, ErrTenantMembership
+ }
+ tenant := membership.Tenant
+
+ startsAt, err := time.Parse(time.RFC3339, req.StartsAt)
+ if err != nil {
+ return domain.UpcomingBooking{}, fmt.Errorf("%w: startsAt must be RFC3339", ErrInvalidBooking)
+ }
+
+ customerName := strings.TrimSpace(req.CustomerName)
+ customerEmail := strings.TrimSpace(req.CustomerEmail)
+ if len(customerName) < 2 || len(customerName) > 120 {
+ return domain.UpcomingBooking{}, fmt.Errorf("%w: customerName must be between 2 and 120 characters", ErrInvalidBooking)
+ }
+ if _, err := mail.ParseAddress(customerEmail); err != nil {
+ return domain.UpcomingBooking{}, fmt.Errorf("%w: customerEmail must be valid", ErrInvalidBooking)
+ }
+
+ services, err := s.repo.ListServicesByTenant(ctx, tenant.ID)
+ if err != nil {
+ return domain.UpcomingBooking{}, err
+ }
+ if len(services) == 0 {
+ return domain.UpcomingBooking{}, fmt.Errorf("%w: tenant has no services configured", ErrInvalidBooking)
+ }
+
+ selected := services[0]
+ requested := strings.TrimSpace(req.Service)
+ for _, service := range services {
+ if strings.EqualFold(service.Name, requested) || service.ID == requested {
+ selected = service
+ break
+ }
+ }
+
+ endsAt := startsAt.Add(time.Duration(selected.DurationMinutes) * time.Minute)
+
+ // Upsert the customer record so the booking shows up under the customers page.
+ customer, err := s.repo.GetCustomerByEmail(ctx, tenant.ID, customerEmail)
+ if err != nil {
+ customer, err = s.repo.CreateCustomer(ctx, db.CreateCustomerParams{
+ TenantID: tenant.ID,
+ Name: customerName,
+ Email: customerEmail,
+ Status: "active",
+ })
+ if err != nil {
+ return domain.UpcomingBooking{}, err
+ }
+ }
+ customerPhone := strings.TrimSpace(req.CustomerPhone)
+ if customerPhone != "" && (customer.Phone == nil || *customer.Phone != customerPhone) {
+ _, _ = s.repo.UpdateCustomer(ctx, customer.ID, db.UpdateCustomerParams{Phone: &customerPhone})
+ }
+
+ existing, err := s.repo.ListBookingsByTenantBetween(ctx, tenant.ID, startsAt, endsAt)
+ if err != nil {
+ return domain.UpcomingBooking{}, err
+ }
+ for _, booking := range existing {
+ if booking.Status == "cancelled" || booking.Status == "waitlisted" {
+ continue
+ }
+ if bookings.AppointmentResourceConflict(booking, nil, nil) {
+ return domain.UpcomingBooking{}, ErrBookingConflict
+ }
+ }
+
+ created, err := s.repo.CreateBooking(ctx, db.CreateBookingParams{
+ TenantID: tenant.ID,
+ ServiceID: &selected.ID,
+ BookingMode: "appointment",
+ CustomerName: customerName,
+ CustomerEmail: customerEmail,
+ CustomerPhone: customerPhone,
+ StartsAt: startsAt.UTC(),
+ EndsAt: endsAt.UTC(),
+ Status: "confirmed",
+ Reference: db.Reference("BK", time.Now()),
+ ManageToken: bookings.GenerateManageToken(),
+ Notes: strings.TrimSpace(req.Notes),
+ })
+ if err != nil {
+ return domain.UpcomingBooking{}, err
+ }
+
+ return domain.UpcomingBooking{
+ ID: created.ID,
+ Reference: created.Reference,
+ CustomerName: customerName,
+ CustomerEmail: customerEmail,
+ Service: selected.Name,
+ StartsAt: startsAt,
+ EndsAt: endsAt,
+ Status: created.Status,
+ Notes: strings.TrimSpace(req.Notes),
+ }, nil
+}
diff --git a/apps/backend/internal/config/config.go b/apps/backend/internal/config/config.go
index 08a4ee2..0baaf7e 100644
--- a/apps/backend/internal/config/config.go
+++ b/apps/backend/internal/config/config.go
@@ -24,10 +24,6 @@ type Config struct {
SMTPPort string
SMTPUsername string
SMTPPassword string
- PaddleEnvironment string
- PaddleAPIKey string
- PaddleWebhookKey string
- PaddlePriceMatrix map[string]map[string]string
StripeAPIKey string
StripeWebhookKey string
StripePriceMatrix map[string]map[string]string
@@ -58,10 +54,6 @@ func Load() (Config, error) {
SMTPPort: valueOrDefault("BOOKRA_SMTP_PORT", "587"),
SMTPUsername: strings.TrimSpace(os.Getenv("BOOKRA_SMTP_USERNAME")),
SMTPPassword: strings.TrimSpace(os.Getenv("BOOKRA_SMTP_PASSWORD")),
- PaddleEnvironment: normalizePaddleEnvironment(os.Getenv("BOOKRA_PADDLE_ENV")),
- PaddleAPIKey: strings.TrimSpace(os.Getenv("BOOKRA_PADDLE_API_KEY")),
- PaddleWebhookKey: strings.TrimSpace(os.Getenv("BOOKRA_PADDLE_WEBHOOK_SECRET")),
- PaddlePriceMatrix: paddlePriceMatrixFromEnv(),
StripeAPIKey: strings.TrimSpace(os.Getenv("BOOKRA_STRIPE_API_KEY")),
StripeWebhookKey: strings.TrimSpace(os.Getenv("BOOKRA_STRIPE_WEBHOOK_SECRET")),
StripePriceMatrix: stripePriceMatrixFromEnv(),
@@ -110,19 +102,6 @@ func (cfg Config) validateRuntimeRequirements() error {
return nil
}
-func (cfg Config) PaddleConfigured() bool {
- return strings.TrimSpace(cfg.PaddleAPIKey) != ""
-}
-
-func (cfg Config) PaddleWebhookConfigured() bool {
- return strings.TrimSpace(cfg.PaddleWebhookKey) != ""
-}
-
-func (cfg Config) PaddleCheckoutConfigured(planCode string) bool {
- planCode = shared.NormalizePlanCode(planCode)
- return cfg.PaddleConfigured() && cfg.PaddleWebhookConfigured() && cfg.PaddlePriceMatrix[planCode]["czk"] != "" && cfg.PaddlePriceMatrix[planCode]["usd"] != ""
-}
-
func (cfg Config) StripeConfigured() bool {
return strings.TrimSpace(cfg.StripeAPIKey) != ""
}
@@ -137,18 +116,15 @@ func (cfg Config) StripeCheckoutConfigured(planCode string) bool {
}
func (cfg Config) BillingProvider() string {
- if cfg.StripeConfigured() {
- return "stripe"
- }
- return "paddle"
+ return "stripe"
}
func (cfg Config) BillingConfigured() bool {
- return cfg.StripeConfigured() || cfg.PaddleConfigured()
+ return cfg.StripeConfigured()
}
func (cfg Config) BillingWebhookConfigured() bool {
- return cfg.StripeWebhookConfigured() || cfg.PaddleWebhookConfigured()
+ return cfg.StripeWebhookConfigured()
}
func (cfg Config) SMSConfigured() bool {
@@ -170,20 +146,6 @@ func (cfg Config) StripeSMSPriceID(currency string) string {
return cfg.StripeSMSPriceMatrix["czk"]
}
-func paddlePriceMatrixFromEnv() map[string]map[string]string {
- matrix := map[string]map[string]string{
- "starter": {},
- "pro": {},
- "business": {},
- }
- for _, planCode := range []string{"starter", "pro", "business"} {
- envPlan := strings.ToUpper(strings.ReplaceAll(planCode, "-", "_"))
- matrix[planCode]["czk"] = strings.TrimSpace(os.Getenv("BOOKRA_PADDLE_" + envPlan + "_CZK_PRICE_ID"))
- matrix[planCode]["usd"] = strings.TrimSpace(os.Getenv("BOOKRA_PADDLE_" + envPlan + "_USD_PRICE_ID"))
- }
- return matrix
-}
-
func stripePriceMatrixFromEnv() map[string]map[string]string {
matrix := map[string]map[string]string{
"starter": {},
@@ -210,15 +172,6 @@ func stripePriceMatrixFromEnv() map[string]map[string]string {
return matrix
}
-func normalizePaddleEnvironment(value string) string {
- switch strings.ToLower(strings.TrimSpace(value)) {
- case "live", "production":
- return "live"
- default:
- return "sandbox"
- }
-}
-
func valueOrDefault(key string, fallback string) string {
if value := strings.TrimSpace(os.Getenv(key)); value != "" {
return value
diff --git a/apps/backend/internal/config/config_test.go b/apps/backend/internal/config/config_test.go
index 498c70e..251d956 100644
--- a/apps/backend/internal/config/config_test.go
+++ b/apps/backend/internal/config/config_test.go
@@ -2,31 +2,37 @@ package config
import "testing"
-func TestPaddleCheckoutConfigured(t *testing.T) {
+func TestStripeCheckoutConfigured(t *testing.T) {
cfg := Config{
- PaddleAPIKey: "pdl_sdbx_apikey_123",
- PaddleWebhookKey: "pdl_ntf_123",
- PaddlePriceMatrix: map[string]map[string]string{
- "starter": {"czk": "pri_starter_czk", "usd": "pri_starter_usd"},
- "pro": {"czk": "pri_pro_czk", "usd": "pri_pro_usd"},
- "business": {"czk": "pri_business_czk", "usd": "pri_business_usd"},
+ StripeAPIKey: "sk_test_123",
+ StripeWebhookKey: "whsec_test_123",
+ StripePriceMatrix: map[string]map[string]string{
+ "starter": {"czk": "price_starter_czk", "usd": "price_starter_usd"},
+ "pro": {"czk": "price_pro_czk", "usd": "price_pro_usd"},
+ "business": {"czk": "price_business_czk", "usd": "price_business_usd"},
},
}
- if !cfg.PaddleCheckoutConfigured("pro") {
+ if !cfg.StripeCheckoutConfigured("pro") {
t.Fatal("expected pro checkout configured")
}
}
-func TestPaddleCheckoutConfiguredRequiresWebhook(t *testing.T) {
+func TestStripeCheckoutConfiguredRequiresWebhook(t *testing.T) {
cfg := Config{
- PaddleAPIKey: "pdl_sdbx_apikey_123",
- PaddlePriceMatrix: map[string]map[string]string{
- "pro": {"czk": "pri_pro_czk", "usd": "pri_pro_usd"},
+ StripeAPIKey: "sk_test_123",
+ StripePriceMatrix: map[string]map[string]string{
+ "pro": {"czk": "price_pro_czk", "usd": "price_pro_usd"},
},
}
- if cfg.PaddleCheckoutConfigured("pro") {
+ if cfg.StripeCheckoutConfigured("pro") {
t.Fatal("expected checkout disabled without webhook key")
}
}
+
+func TestBillingProviderIsStripe(t *testing.T) {
+ if (Config{}).BillingProvider() != "stripe" {
+ t.Fatal("expected stripe billing provider")
+ }
+}
diff --git a/apps/backend/internal/db/billing.go b/apps/backend/internal/db/billing.go
index b867350..68f3f96 100644
--- a/apps/backend/internal/db/billing.go
+++ b/apps/backend/internal/db/billing.go
@@ -1,7 +1,7 @@
package db
import (
-"context"
+ "context"
)
func (r *PGRepository) GetSubscriptionSnapshot(ctx context.Context, tenantID string) (BillingSnapshotRecord, error) {
@@ -53,7 +53,7 @@ func (r *PGRepository) UpsertSubscriptionSnapshot(ctx context.Context, params Bi
payment_method_last4 = EXCLUDED.payment_method_last4,
last_synced_at = EXCLUDED.last_synced_at,
updated_at = now()
- `, params.TenantID, firstNonEmpty(params.BillingProvider, "paddle"), params.BillingCustomerID, params.BillingSubscriptionID, params.Status, params.PlanCode,
+ `, params.TenantID, firstNonEmpty(params.BillingProvider, "stripe"), params.BillingCustomerID, params.BillingSubscriptionID, params.Status, params.PlanCode,
firstNonEmpty(params.Currency, "czk"), params.PriceID, params.CancelAtPeriodEnd, params.CurrentPeriodStart, params.CurrentPeriodEnd,
params.PaymentMethodBrand, params.PaymentMethodLast4, params.LastSyncedAt)
return err
@@ -64,7 +64,7 @@ func (r *PGRepository) RecordBillingEvent(ctx context.Context, tenantID string,
INSERT INTO subscription_events (tenant_id, billing_provider, billing_provider_event_id, event_type, payload, processed_at)
VALUES ($1, $2, $3, $4, $5::jsonb, now())
ON CONFLICT (billing_provider, billing_provider_event_id) DO NOTHING
- `, tenantID, firstNonEmpty(provider, "paddle"), eventID, eventType, payload)
+ `, tenantID, firstNonEmpty(provider, "stripe"), eventID, eventType, payload)
if err != nil {
return false, err
}
diff --git a/apps/backend/internal/db/bookings.go b/apps/backend/internal/db/bookings.go
index 573d5e6..378ead2 100644
--- a/apps/backend/internal/db/bookings.go
+++ b/apps/backend/internal/db/bookings.go
@@ -8,7 +8,8 @@ import (
func (r *PGRepository) ListBookingsByTenantBetween(ctx context.Context, tenantID string, from time.Time, to time.Time) ([]BookingRecord, error) {
rows, err := r.pool.Query(ctx, `
SELECT id, tenant_id, service_id, class_session_id, staff_id, location_id,
- customer_name, customer_email, customer_phone, starts_at, ends_at, status, reference
+ customer_name, customer_email, customer_phone, starts_at, ends_at, status, reference,
+ COALESCE(manage_token, ''), COALESCE(notes, '')
FROM bookings
WHERE tenant_id = $1 AND starts_at < $3 AND ends_at > $2
ORDER BY starts_at ASC
@@ -35,6 +36,8 @@ func (r *PGRepository) ListBookingsByTenantBetween(ctx context.Context, tenantID
&record.EndsAt,
&record.Status,
&record.Reference,
+ &record.ManageToken,
+ &record.Notes,
); err != nil {
return nil, err
}
@@ -49,10 +52,10 @@ func (r *PGRepository) CreateBooking(ctx context.Context, params CreateBookingPa
INSERT INTO bookings (
tenant_id, service_id, class_session_id, staff_id, location_id,
booking_mode, customer_name, customer_email, customer_phone, starts_at, ends_at,
- status, reference, notes
+ status, reference, manage_token, notes
)
- VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14)
- RETURNING id, reference, status
+ VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15)
+ RETURNING id, reference, status, manage_token
`,
params.TenantID,
params.ServiceID,
@@ -67,8 +70,9 @@ func (r *PGRepository) CreateBooking(ctx context.Context, params CreateBookingPa
params.EndsAt,
params.Status,
params.Reference,
+ params.ManageToken,
params.Notes,
- ).Scan(&created.ID, &created.Reference, &created.Status)
+ ).Scan(&created.ID, &created.Reference, &created.Status, &created.ManageToken)
return created, err
}
diff --git a/apps/backend/internal/db/email_templates.go b/apps/backend/internal/db/email_templates.go
new file mode 100644
index 0000000..d538c5b
--- /dev/null
+++ b/apps/backend/internal/db/email_templates.go
@@ -0,0 +1,55 @@
+package db
+
+import (
+ "context"
+)
+
+func (r *PGRepository) ListEmailTemplates(ctx context.Context, tenantID string) ([]EmailTemplateRecord, error) {
+ rows, err := r.pool.Query(ctx, `
+ SELECT id, tenant_id, type, subject, body_html, body_text, is_enabled, updated_at
+ FROM email_templates
+ WHERE tenant_id = $1
+ ORDER BY type
+ `, tenantID)
+ if err != nil {
+ return nil, err
+ }
+ defer rows.Close()
+
+ var records []EmailTemplateRecord
+ for rows.Next() {
+ var rec EmailTemplateRecord
+ if err := rows.Scan(&rec.ID, &rec.TenantID, &rec.Type, &rec.Subject, &rec.BodyHTML, &rec.BodyText, &rec.IsEnabled, &rec.UpdatedAt); err != nil {
+ return nil, err
+ }
+ records = append(records, rec)
+ }
+ return records, rows.Err()
+}
+
+func (r *PGRepository) GetEmailTemplate(ctx context.Context, tenantID string, templateType string) (EmailTemplateRecord, error) {
+ var rec EmailTemplateRecord
+ err := r.pool.QueryRow(ctx, `
+ SELECT id, tenant_id, type, subject, body_html, body_text, is_enabled, updated_at
+ FROM email_templates
+ WHERE tenant_id = $1 AND type = $2
+ `, tenantID, templateType).Scan(&rec.ID, &rec.TenantID, &rec.Type, &rec.Subject, &rec.BodyHTML, &rec.BodyText, &rec.IsEnabled, &rec.UpdatedAt)
+ return rec, err
+}
+
+func (r *PGRepository) UpsertEmailTemplate(ctx context.Context, params EmailTemplateRecord) (EmailTemplateRecord, error) {
+ var rec EmailTemplateRecord
+ err := r.pool.QueryRow(ctx, `
+ INSERT INTO email_templates (tenant_id, type, subject, body_html, body_text, is_enabled)
+ VALUES ($1, $2, $3, $4, $5, $6)
+ ON CONFLICT (tenant_id, type) DO UPDATE SET
+ subject = EXCLUDED.subject,
+ body_html = EXCLUDED.body_html,
+ body_text = EXCLUDED.body_text,
+ is_enabled = EXCLUDED.is_enabled,
+ updated_at = now()
+ RETURNING id, tenant_id, type, subject, body_html, body_text, is_enabled, updated_at
+ `, params.TenantID, params.Type, params.Subject, params.BodyHTML, params.BodyText, params.IsEnabled).Scan(
+ &rec.ID, &rec.TenantID, &rec.Type, &rec.Subject, &rec.BodyHTML, &rec.BodyText, &rec.IsEnabled, &rec.UpdatedAt)
+ return rec, err
+}
diff --git a/apps/backend/internal/db/locations.go b/apps/backend/internal/db/locations.go
index be4e2f1..47e523a 100644
--- a/apps/backend/internal/db/locations.go
+++ b/apps/backend/internal/db/locations.go
@@ -1,13 +1,15 @@
package db
import (
-"context"
-"time"
+ "context"
+ "time"
)
+const locationColumns = "id, tenant_id, name, type, capacity, timezone, created_at"
+
func (r *PGRepository) ListLocationsByTenant(ctx context.Context, tenantID string) ([]LocationRecord, error) {
rows, err := r.pool.Query(ctx, `
- SELECT id, tenant_id, name, timezone, created_at
+ SELECT `+locationColumns+`
FROM locations
WHERE tenant_id = $1
ORDER BY name
@@ -20,7 +22,7 @@ func (r *PGRepository) ListLocationsByTenant(ctx context.Context, tenantID strin
var records []LocationRecord
for rows.Next() {
var rec LocationRecord
- if err := rows.Scan(&rec.ID, &rec.TenantID, &rec.Name, &rec.Timezone, &rec.CreatedAt); err != nil {
+ if err := rows.Scan(&rec.ID, &rec.TenantID, &rec.Name, &rec.Type, &rec.Capacity, &rec.Timezone, &rec.CreatedAt); err != nil {
return nil, err
}
records = append(records, rec)
@@ -31,20 +33,20 @@ func (r *PGRepository) ListLocationsByTenant(ctx context.Context, tenantID strin
func (r *PGRepository) GetLocationByID(ctx context.Context, locationID string) (LocationRecord, error) {
var rec LocationRecord
err := r.pool.QueryRow(ctx, `
- SELECT id, tenant_id, name, timezone, created_at
+ SELECT `+locationColumns+`
FROM locations
WHERE id = $1
- `, locationID).Scan(&rec.ID, &rec.TenantID, &rec.Name, &rec.Timezone, &rec.CreatedAt)
+ `, locationID).Scan(&rec.ID, &rec.TenantID, &rec.Name, &rec.Type, &rec.Capacity, &rec.Timezone, &rec.CreatedAt)
return rec, err
}
func (r *PGRepository) CreateLocation(ctx context.Context, params CreateLocationParams) (LocationRecord, error) {
var rec LocationRecord
err := r.pool.QueryRow(ctx, `
- INSERT INTO locations (tenant_id, name, timezone)
- VALUES ($1, $2, $3)
- RETURNING id, tenant_id, name, timezone, created_at
- `, params.TenantID, params.Name, params.Timezone).Scan(&rec.ID, &rec.TenantID, &rec.Name, &rec.Timezone, &rec.CreatedAt)
+ INSERT INTO locations (tenant_id, name, type, capacity, timezone)
+ VALUES ($1, $2, $3, $4, $5)
+ RETURNING `+locationColumns+`
+ `, params.TenantID, params.Name, params.Type, params.Capacity, params.Timezone).Scan(&rec.ID, &rec.TenantID, &rec.Name, &rec.Type, &rec.Capacity, &rec.Timezone, &rec.CreatedAt)
return rec, err
}
@@ -53,11 +55,13 @@ func (r *PGRepository) UpdateLocation(ctx context.Context, locationID string, pa
err := r.pool.QueryRow(ctx, `
UPDATE locations
SET name = COALESCE($2, name),
- timezone = COALESCE($3, timezone),
+ type = COALESCE($3, type),
+ capacity = COALESCE($4, capacity),
+ timezone = COALESCE($5, timezone),
updated_at = now()
WHERE id = $1
- RETURNING id, tenant_id, name, timezone, created_at
- `, locationID, params.Name, params.Timezone).Scan(&rec.ID, &rec.TenantID, &rec.Name, &rec.Timezone, &rec.CreatedAt)
+ RETURNING `+locationColumns+`
+ `, locationID, params.Name, params.Type, params.Capacity, params.Timezone).Scan(&rec.ID, &rec.TenantID, &rec.Name, &rec.Type, &rec.Capacity, &rec.Timezone, &rec.CreatedAt)
return rec, err
}
@@ -120,7 +124,7 @@ func (r *PGRepository) DeleteBlockedDay(ctx context.Context, blockedDayID string
func (r *PGRepository) ListWorkingHoursByTenant(ctx context.Context, tenantID string) ([]WorkingHoursRecord, error) {
rows, err := r.pool.Query(ctx, `
- SELECT tenant_id, staff_id, day_of_week, starts_local, ends_local
+ SELECT tenant_id, staff_id, day_of_week, starts_local::text, ends_local::text
FROM availability_rules
WHERE tenant_id = $1 AND staff_id IS NULL
ORDER BY day_of_week
@@ -142,11 +146,30 @@ func (r *PGRepository) ListWorkingHoursByTenant(ctx context.Context, tenantID st
}
func (r *PGRepository) UpdateWorkingHours(ctx context.Context, tenantID string, dayOfWeek int, params UpdateWorkingHoursParams) error {
- _, err := r.pool.Exec(ctx, `
- UPDATE availability_rules
- SET starts_local = COALESCE($3, starts_local),
- ends_local = COALESCE($4, ends_local)
+ if params.IsOpen != nil && !*params.IsOpen {
+ _, err := r.pool.Exec(ctx, `
+ DELETE FROM availability_rules
+ WHERE tenant_id = $1 AND day_of_week = $2 AND staff_id IS NULL
+ `, tenantID, dayOfWeek)
+ return err
+ }
+
+ if params.StartsLocal == nil || params.EndsLocal == nil {
+ return nil
+ }
+
+ // availability_rules has no unique constraint on (tenant, day): replace the
+ // tenant-level row so repeated updates stay idempotent.
+ if _, err := r.pool.Exec(ctx, `
+ DELETE FROM availability_rules
WHERE tenant_id = $1 AND day_of_week = $2 AND staff_id IS NULL
- `, tenantID, dayOfWeek, params.StartsLocal, params.EndsLocal)
+ `, tenantID, dayOfWeek); err != nil {
+ return err
+ }
+
+ _, err := r.pool.Exec(ctx, `
+ INSERT INTO availability_rules (id, tenant_id, staff_id, day_of_week, starts_local, ends_local)
+ VALUES (gen_random_uuid(), $1, NULL, $2, $3::time, $4::time)
+ `, tenantID, dayOfWeek, *params.StartsLocal, *params.EndsLocal)
return err
}
diff --git a/apps/backend/internal/db/repository.go b/apps/backend/internal/db/repository.go
index df6dc36..14c6d0a 100644
--- a/apps/backend/internal/db/repository.go
+++ b/apps/backend/internal/db/repository.go
@@ -19,7 +19,9 @@ type Repository interface {
GetTenantByBillingCustomerID(ctx context.Context, customerID string) (TenantRecord, error)
EnsureUserIdentity(ctx context.Context, subject string, email string, displayName string) error
CreateTenantForUser(ctx context.Context, params CreateTenantForUserParams) (TenantMembershipRecord, error)
- GetTenantMembershipByUserID(ctx context.Context, userID string) (TenantMembershipRecord, error)
+ GetTenantMembershipBySubject(ctx context.Context, subject string) (TenantMembershipRecord, error)
+ IsAdminSubject(ctx context.Context, subject string) (bool, error)
+ GetTenantOwnerEmail(ctx context.Context, tenantID string) (string, error)
GetBrandProfile(ctx context.Context, tenantID string) (BrandProfileRecord, error)
ListServicesByTenant(ctx context.Context, tenantID string) ([]ServiceRecord, error)
ListAvailabilityRulesByTenant(ctx context.Context, tenantID string) ([]AvailabilityRuleRecord, error)
@@ -34,8 +36,9 @@ type Repository interface {
GetDashboardMetrics(ctx context.Context, tenantID string, startsAt time.Time, endsAt time.Time) (DashboardMetrics, error)
GetSubscriptionSnapshot(ctx context.Context, tenantID string) (BillingSnapshotRecord, error)
UpsertSubscriptionSnapshot(ctx context.Context, params BillingSnapshotRecord) error
- UpdateTenantBillingCustomerID(ctx context.Context, tenantID string, customerID string) error
- UpdateTenantBillingState(ctx context.Context, tenantID string, planCode string, subscriptionStatus string, subscriptionID string) error
+ UpdateTenantBillingCustomerID(ctx context.Context, tenantID string, provider string, customerID string) error
+ UpdateTenantBillingState(ctx context.Context, tenantID string, provider string, planCode string, subscriptionStatus string, subscriptionID string) error
+ UpdateBrandProfile(ctx context.Context, tenantID string, params UpdateBrandProfileParams) (BrandProfileRecord, error)
RecordBillingEvent(ctx context.Context, tenantID string, provider string, eventID string, eventType string, payload []byte) (bool, error)
// Auth methods
@@ -87,6 +90,11 @@ type Repository interface {
ListWorkingHoursByTenant(ctx context.Context, tenantID string) ([]WorkingHoursRecord, error)
UpdateWorkingHours(ctx context.Context, tenantID string, dayOfWeek int, params UpdateWorkingHoursParams) error
+ // Email templates
+ ListEmailTemplates(ctx context.Context, tenantID string) ([]EmailTemplateRecord, error)
+ GetEmailTemplate(ctx context.Context, tenantID string, templateType string) (EmailTemplateRecord, error)
+ UpsertEmailTemplate(ctx context.Context, params EmailTemplateRecord) (EmailTemplateRecord, error)
+
// SMS
GetTenantSMSSettings(ctx context.Context, tenantID string) (TenantSMSSettingsRecord, error)
UpsertTenantSMSSettings(ctx context.Context, params TenantSMSSettingsRecord) error
@@ -190,6 +198,13 @@ type BrandProfileRecord struct {
UmamiSiteID string
}
+type UpdateBrandProfileParams struct {
+ Name *string
+ SiteURL *string
+ LogoURL *string
+ PrimaryColor *string
+}
+
type AvailabilityBlockRecord struct {
DayOfWeek int
StartsLocal string
@@ -246,6 +261,8 @@ type BookingRecord struct {
EndsAt time.Time
Status string
Reference string
+ ManageToken string
+ Notes string
}
type CreateBookingParams struct {
@@ -262,13 +279,15 @@ type CreateBookingParams struct {
EndsAt time.Time
Status string
Reference string
+ ManageToken string
Notes string
}
type CreatedBooking struct {
- ID string
- Reference string
- Status string
+ ID string
+ Reference string
+ Status string
+ ManageToken string
}
type WaitlistEntryParams struct {
@@ -341,6 +360,8 @@ type LocationRecord struct {
ID string
TenantID string
Name string
+ Type string
+ Capacity int
Timezone string
CreatedAt time.Time
}
@@ -348,11 +369,15 @@ type LocationRecord struct {
type CreateLocationParams struct {
TenantID string
Name string
+ Type string
+ Capacity int
Timezone string
}
type UpdateLocationParams struct {
Name *string
+ Type *string
+ Capacity *int
Timezone *string
}
@@ -428,6 +453,18 @@ type UpdateWorkingHoursParams struct {
IsOpen *bool
}
+// Email Template Records
+type EmailTemplateRecord struct {
+ ID string
+ TenantID string
+ Type string
+ Subject string
+ BodyHTML string
+ BodyText string
+ IsEnabled bool
+ UpdatedAt time.Time
+}
+
// SMS Records
type TenantSMSSettingsRecord struct {
TenantID string
@@ -592,11 +629,12 @@ func (r *PGRepository) GetBookingByReference(ctx context.Context, reference stri
var rec BookingRecord
err := r.pool.QueryRow(ctx, `
SELECT id, tenant_id, service_id, class_session_id, staff_id, location_id,
- customer_name, customer_email, customer_phone, starts_at, ends_at, status, reference
+ customer_name, customer_email, customer_phone, starts_at, ends_at, status, reference,
+ COALESCE(manage_token, ''), COALESCE(notes, '')
FROM bookings
WHERE reference = $1
`, reference).Scan(&rec.ID, &rec.TenantID, &rec.ServiceID, &rec.ClassSessionID, &rec.StaffID, &rec.LocationID,
- &rec.CustomerName, &rec.CustomerEmail, &rec.CustomerPhone, &rec.StartsAt, &rec.EndsAt, &rec.Status, &rec.Reference)
+ &rec.CustomerName, &rec.CustomerEmail, &rec.CustomerPhone, &rec.StartsAt, &rec.EndsAt, &rec.Status, &rec.Reference, &rec.ManageToken, &rec.Notes)
return rec, err
}
@@ -638,6 +676,7 @@ type MemoryRepository struct {
smsSettings TenantSMSSettingsRecord
smsLogs []SMSUsageLogRecord
smsReports []SMSMonthlyReportRecord
+ emailTemplates []EmailTemplateRecord
}
func NewMemoryRepository() *MemoryRepository {
@@ -659,7 +698,7 @@ func NewMemoryRepository() *MemoryRepository {
Timezone: "Europe/Prague",
PlanCode: "pro",
SubscriptionStatus: "active",
- BillingProvider: "paddle",
+ BillingProvider: "stripe",
BillingCustomerID: stringPtr("ctm_demo_bookra"),
},
membership: TenantMembershipRecord{
@@ -672,7 +711,7 @@ func NewMemoryRepository() *MemoryRepository {
Timezone: "Europe/Prague",
PlanCode: "pro",
SubscriptionStatus: "active",
- BillingProvider: "paddle",
+ BillingProvider: "stripe",
BillingCustomerID: stringPtr("ctm_demo_bookra"),
},
UserID: "demo-owner",
@@ -719,7 +758,7 @@ func NewMemoryRepository() *MemoryRepository {
deliveryLogs: []NotificationDeliveryLogParams{},
billingSnapshot: BillingSnapshotRecord{
TenantID: tenantID,
- BillingProvider: "paddle",
+ BillingProvider: "stripe",
BillingCustomerID: "ctm_demo_bookra",
BillingSubscriptionID: "",
Status: "active",
@@ -841,16 +880,46 @@ func (r *MemoryRepository) CreateTenantForUser(_ context.Context, params CreateT
return r.membership, nil
}
-func (r *MemoryRepository) GetTenantMembershipByUserID(_ context.Context, userID string) (TenantMembershipRecord, error) {
- if userID == "" || userID == "demo-owner" {
+func (r *MemoryRepository) GetTenantMembershipBySubject(_ context.Context, subject string) (TenantMembershipRecord, error) {
+ if subject == "" || subject == "demo-owner" {
return r.membership, nil
}
- if userID == r.membership.UserID {
+ if subject == r.membership.UserID {
return r.membership, nil
}
return TenantMembershipRecord{}, pgx.ErrNoRows
}
+func (r *MemoryRepository) IsAdminSubject(_ context.Context, subject string) (bool, error) {
+ return subject == "demo-owner" || subject == r.membership.UserID, nil
+}
+
+func (r *MemoryRepository) GetTenantOwnerEmail(_ context.Context, tenantID string) (string, error) {
+ if tenantID != r.tenant.ID {
+ return "", pgx.ErrNoRows
+ }
+ return "owner@bookra.dev", nil
+}
+
+func (r *MemoryRepository) UpdateBrandProfile(_ context.Context, tenantID string, params UpdateBrandProfileParams) (BrandProfileRecord, error) {
+ if tenantID != r.tenant.ID {
+ return BrandProfileRecord{}, pgx.ErrNoRows
+ }
+ if params.Name != nil {
+ r.brand.Name = *params.Name
+ }
+ if params.SiteURL != nil {
+ r.brand.SiteURL = *params.SiteURL
+ }
+ if params.LogoURL != nil {
+ r.brand.LogoURL = *params.LogoURL
+ }
+ if params.PrimaryColor != nil {
+ r.brand.PrimaryColor = *params.PrimaryColor
+ }
+ return r.brand, nil
+}
+
func (r *MemoryRepository) GetBrandProfile(_ context.Context, tenantID string) (BrandProfileRecord, error) {
if tenantID != r.tenant.ID {
return BrandProfileRecord{}, pgx.ErrNoRows
@@ -909,9 +978,10 @@ func (r *MemoryRepository) ListBookingsByTenantBetween(_ context.Context, tenant
func (r *MemoryRepository) CreateBooking(_ context.Context, params CreateBookingParams) (CreatedBooking, error) {
created := CreatedBooking{
- ID: uuid.NewString(),
- Reference: params.Reference,
- Status: params.Status,
+ ID: uuid.NewString(),
+ Reference: params.Reference,
+ Status: params.Status,
+ ManageToken: params.ManageToken,
}
r.bookings = append(r.bookings, BookingRecord{
ID: created.ID,
@@ -922,10 +992,13 @@ func (r *MemoryRepository) CreateBooking(_ context.Context, params CreateBooking
LocationID: params.LocationID,
CustomerName: params.CustomerName,
CustomerEmail: params.CustomerEmail,
+ CustomerPhone: params.CustomerPhone,
StartsAt: params.StartsAt,
EndsAt: params.EndsAt,
Status: params.Status,
Reference: params.Reference,
+ ManageToken: params.ManageToken,
+ Notes: params.Notes,
})
return created, nil
}
@@ -1033,38 +1106,38 @@ func (r *MemoryRepository) UpsertSubscriptionSnapshot(_ context.Context, params
return nil
}
-func (r *MemoryRepository) UpdateTenantBillingCustomerID(_ context.Context, tenantID string, customerID string) error {
+func (r *MemoryRepository) UpdateTenantBillingCustomerID(_ context.Context, tenantID string, provider string, customerID string) error {
if tenantID != r.tenant.ID {
return pgx.ErrNoRows
}
- r.tenant.BillingProvider = "paddle"
+ r.tenant.BillingProvider = provider
r.tenant.BillingCustomerID = &customerID
- r.membership.Tenant.BillingProvider = "paddle"
+ r.membership.Tenant.BillingProvider = provider
r.membership.Tenant.BillingCustomerID = &customerID
- r.billingSnapshot.BillingProvider = "paddle"
+ r.billingSnapshot.BillingProvider = provider
r.billingSnapshot.BillingCustomerID = customerID
return nil
}
-func (r *MemoryRepository) UpdateTenantBillingState(_ context.Context, tenantID string, planCode string, subscriptionStatus string, subscriptionID string) error {
+func (r *MemoryRepository) UpdateTenantBillingState(_ context.Context, tenantID string, provider string, planCode string, subscriptionStatus string, subscriptionID string) error {
if tenantID != r.tenant.ID {
return pgx.ErrNoRows
}
r.tenant.PlanCode = planCode
r.tenant.SubscriptionStatus = subscriptionStatus
- r.tenant.BillingProvider = "paddle"
+ r.tenant.BillingProvider = provider
r.membership.Tenant.PlanCode = planCode
r.membership.Tenant.SubscriptionStatus = subscriptionStatus
- r.membership.Tenant.BillingProvider = "paddle"
+ r.membership.Tenant.BillingProvider = provider
r.billingSnapshot.PlanCode = planCode
r.billingSnapshot.Status = subscriptionStatus
- r.billingSnapshot.BillingProvider = "paddle"
+ r.billingSnapshot.BillingProvider = provider
r.billingSnapshot.BillingSubscriptionID = subscriptionID
return nil
}
func (r *MemoryRepository) RecordBillingEvent(_ context.Context, _ string, provider string, eventID string, _ string, payload []byte) (bool, error) {
- key := firstNonEmpty(provider, "paddle") + ":" + eventID
+ key := firstNonEmpty(provider, "stripe") + ":" + eventID
if _, exists := r.recordedEvents[key]; exists {
return false, nil
}
@@ -1103,6 +1176,8 @@ func (r *MemoryRepository) CreateLocation(_ context.Context, params CreateLocati
ID: uuid.NewString(),
TenantID: params.TenantID,
Name: params.Name,
+ Type: params.Type,
+ Capacity: params.Capacity,
Timezone: params.Timezone,
CreatedAt: time.Now(),
}
@@ -1116,6 +1191,12 @@ func (r *MemoryRepository) UpdateLocation(_ context.Context, locationID string,
if params.Name != nil {
r.locations[i].Name = *params.Name
}
+ if params.Type != nil {
+ r.locations[i].Type = *params.Type
+ }
+ if params.Capacity != nil {
+ r.locations[i].Capacity = *params.Capacity
+ }
if params.Timezone != nil {
r.locations[i].Timezone = *params.Timezone
}
@@ -1352,6 +1433,51 @@ func (r *MemoryRepository) RescheduleBooking(_ context.Context, bookingID string
return pgx.ErrNoRows
}
+// ============================================
+// EMAIL TEMPLATE METHODS - MEMORY REPOSITORY
+// ============================================
+
+func (r *MemoryRepository) ListEmailTemplates(_ context.Context, tenantID string) ([]EmailTemplateRecord, error) {
+ if tenantID != r.tenant.ID {
+ return nil, pgx.ErrNoRows
+ }
+ return r.emailTemplates, nil
+}
+
+func (r *MemoryRepository) GetEmailTemplate(_ context.Context, tenantID string, templateType string) (EmailTemplateRecord, error) {
+ for _, t := range r.emailTemplates {
+ if t.TenantID == tenantID && t.Type == templateType {
+ return t, nil
+ }
+ }
+ return EmailTemplateRecord{}, pgx.ErrNoRows
+}
+
+func (r *MemoryRepository) UpsertEmailTemplate(_ context.Context, params EmailTemplateRecord) (EmailTemplateRecord, error) {
+ for i, t := range r.emailTemplates {
+ if t.TenantID == params.TenantID && t.Type == params.Type {
+ r.emailTemplates[i].Subject = params.Subject
+ r.emailTemplates[i].BodyHTML = params.BodyHTML
+ r.emailTemplates[i].BodyText = params.BodyText
+ r.emailTemplates[i].IsEnabled = params.IsEnabled
+ r.emailTemplates[i].UpdatedAt = time.Now()
+ return r.emailTemplates[i], nil
+ }
+ }
+ rec := EmailTemplateRecord{
+ ID: uuid.NewString(),
+ TenantID: params.TenantID,
+ Type: params.Type,
+ Subject: params.Subject,
+ BodyHTML: params.BodyHTML,
+ BodyText: params.BodyText,
+ IsEnabled: params.IsEnabled,
+ UpdatedAt: time.Now(),
+ }
+ r.emailTemplates = append(r.emailTemplates, rec)
+ return rec, nil
+}
+
// ============================================
// WORKING HOURS METHODS - MEMORY REPOSITORY
// ============================================
diff --git a/apps/backend/internal/db/services.go b/apps/backend/internal/db/services.go
index bdc76d5..2cc7538 100644
--- a/apps/backend/internal/db/services.go
+++ b/apps/backend/internal/db/services.go
@@ -1,8 +1,8 @@
package db
import (
-"context"
-"time"
+ "context"
+ "time"
)
func (r *PGRepository) ListServicesByTenant(ctx context.Context, tenantID string) ([]ServiceRecord, error) {
diff --git a/apps/backend/internal/db/tenants.go b/apps/backend/internal/db/tenants.go
index 7af4686..88fa815 100644
--- a/apps/backend/internal/db/tenants.go
+++ b/apps/backend/internal/db/tenants.go
@@ -2,6 +2,8 @@ package db
import (
"context"
+ "errors"
+ "strings"
"github.com/jackc/pgx/v5"
)
@@ -49,9 +51,20 @@ func (r *PGRepository) GetTenantByBillingCustomerID(ctx context.Context, custome
}
func (r *PGRepository) EnsureUserIdentity(ctx context.Context, subject string, email string, displayName string) error {
+ // Link an existing password-auth account to this Neon subject when the
+ // email already exists but has no subject attached yet.
+ if trimmed := strings.TrimSpace(email); trimmed != "" {
+ if _, err := r.pool.Exec(ctx, `
+ UPDATE users SET neon_subject = $1
+ WHERE email = $2 AND neon_subject IS NULL
+ `, subject, trimmed); err != nil {
+ return err
+ }
+ }
+
_, err := r.pool.Exec(ctx, `
INSERT INTO users (id, neon_subject, email, display_name)
- VALUES (gen_random_uuid(), $1, COALESCE(NULLIF($2, ''), $1 || '@users.bookra.invalid'), NULLIF($3, ''))
+ VALUES (gen_random_uuid(), $1, COALESCE(NULLIF($2, ''), $1 || '@users.bookra.invalid'), COALESCE(NULLIF($3, ''), ''))
ON CONFLICT (neon_subject) DO UPDATE SET email = EXCLUDED.email, display_name = COALESCE(NULLIF($3, ''), users.display_name)
`, subject, email, displayName)
return err
@@ -123,21 +136,22 @@ func (r *PGRepository) CreateTenantForUser(ctx context.Context, params CreateTen
_, err = tx.Exec(ctx, `
INSERT INTO users (id, neon_subject, email, display_name)
- VALUES (gen_random_uuid(), $1, $2, $3)
- ON CONFLICT (neon_subject) DO NOTHING
- `, params.Subject, params.Subject+"@users.bookra.invalid", "")
+ SELECT gen_random_uuid(), $1, $2, ''
+ WHERE NOT EXISTS (
+ SELECT 1 FROM users WHERE neon_subject = $1 OR id::text = $1
+ )
+ `, params.Subject, params.Subject+"@users.bookra.invalid")
if err != nil {
return TenantMembershipRecord{}, err
}
- var userID string
+ var membershipID string
err = tx.QueryRow(ctx, `
INSERT INTO tenant_memberships (id, tenant_id, user_neon_subject, role, joined_at)
- SELECT gen_random_uuid(), $1, u.neon_subject, 'owner', now()
- FROM users u WHERE u.neon_subject = $2
+ VALUES (gen_random_uuid(), $1, $2, 'owner', now())
ON CONFLICT (tenant_id, user_neon_subject) DO UPDATE SET role = 'owner'
RETURNING id
- `, tenantID, params.Subject).Scan(&userID)
+ `, tenantID, params.Subject).Scan(&membershipID)
if err != nil {
return TenantMembershipRecord{}, err
}
@@ -156,7 +170,7 @@ func (r *PGRepository) CreateTenantForUser(ctx context.Context, params CreateTen
Locale: params.Locale,
Timezone: params.Timezone,
},
- UserID: userID,
+ UserID: membershipID,
Role: "owner",
}, nil
}
@@ -170,7 +184,7 @@ func (r *PGRepository) GetBrandProfile(ctx context.Context, tenantID string) (Br
return record, err
}
-func (r *PGRepository) GetTenantMembershipByUserID(ctx context.Context, userID string) (TenantMembershipRecord, error) {
+func (r *PGRepository) GetTenantMembershipBySubject(ctx context.Context, subject string) (TenantMembershipRecord, error) {
var record TenantMembershipRecord
err := r.pool.QueryRow(ctx, `
SELECT t.id, t.slug, t.name, t.preset, t.locale, t.timezone, t.plan_code, t.subscription_status,
@@ -178,11 +192,10 @@ func (r *PGRepository) GetTenantMembershipByUserID(ctx context.Context, userID s
tm.user_neon_subject, tm.role
FROM tenant_memberships tm
JOIN tenants t ON t.id = tm.tenant_id
- JOIN users u ON u.neon_subject = tm.user_neon_subject
- WHERE u.id = $1
+ WHERE tm.user_neon_subject = $1
ORDER BY tm.joined_at DESC
LIMIT 1
- `, userID).Scan(
+ `, subject).Scan(
&record.Tenant.ID, &record.Tenant.Slug, &record.Tenant.Name, &record.Tenant.Preset,
&record.Tenant.Locale, &record.Tenant.Timezone, &record.Tenant.PlanCode, &record.Tenant.SubscriptionStatus,
&record.Tenant.BillingProvider, &record.Tenant.BillingCustomerID, &record.Tenant.BillingSubscription,
@@ -191,20 +204,68 @@ func (r *PGRepository) GetTenantMembershipByUserID(ctx context.Context, userID s
return record, err
}
-func (r *PGRepository) UpdateTenantBillingCustomerID(ctx context.Context, tenantID string, customerID string) error {
+func (r *PGRepository) IsAdminSubject(ctx context.Context, subject string) (bool, error) {
+ var isAdmin bool
+ err := r.pool.QueryRow(ctx, `
+ SELECT EXISTS (
+ SELECT 1 FROM users
+ WHERE (neon_subject = $1 OR id::text = $1)
+ AND role IN ('admin', 'superadmin')
+ )
+ `, subject).Scan(&isAdmin)
+ return isAdmin, err
+}
+
+func (r *PGRepository) GetTenantOwnerEmail(ctx context.Context, tenantID string) (string, error) {
+ var email string
+ err := r.pool.QueryRow(ctx, `
+ SELECT u.email
+ FROM tenant_memberships tm
+ JOIN users u ON u.neon_subject = tm.user_neon_subject OR u.id::text = tm.user_neon_subject
+ WHERE tm.tenant_id = $1 AND tm.role = 'owner'
+ ORDER BY tm.joined_at ASC
+ LIMIT 1
+ `, tenantID).Scan(&email)
+ return email, err
+}
+
+func (r *PGRepository) UpdateBrandProfile(ctx context.Context, tenantID string, params UpdateBrandProfileParams) (BrandProfileRecord, error) {
+ var record BrandProfileRecord
+ err := r.pool.QueryRow(ctx, `
+ INSERT INTO brand_profiles (tenant_id, name, site_url, logo_url, primary_color)
+ VALUES ($1, '', NULL, NULL, NULL)
+ ON CONFLICT (tenant_id) DO NOTHING
+ `, tenantID).Scan()
+ if err != nil && !errors.Is(err, pgx.ErrNoRows) {
+ return BrandProfileRecord{}, err
+ }
+ err = r.pool.QueryRow(ctx, `
+ UPDATE brand_profiles
+ SET name = COALESCE($2, name),
+ site_url = COALESCE($3, site_url),
+ logo_url = COALESCE($4, logo_url),
+ primary_color = COALESCE($5, primary_color)
+ WHERE tenant_id = $1
+ RETURNING tenant_id, name, COALESCE(site_url, ''), COALESCE(logo_url, ''), COALESCE(primary_color, ''), COALESCE(umami_site_id, '')
+ `, tenantID, params.Name, params.SiteURL, params.LogoURL, params.PrimaryColor).Scan(
+ &record.TenantID, &record.Name, &record.SiteURL, &record.LogoURL, &record.PrimaryColor, &record.UmamiSiteID)
+ return record, err
+}
+
+func (r *PGRepository) UpdateTenantBillingCustomerID(ctx context.Context, tenantID string, provider string, customerID string) error {
_, err := r.pool.Exec(ctx, `
UPDATE tenants
- SET billing_provider = 'paddle', billing_customer_id = $2, updated_at = now()
+ SET billing_provider = $2, billing_customer_id = $3, updated_at = now()
WHERE id = $1
- `, tenantID, customerID)
+ `, tenantID, provider, customerID)
return err
}
-func (r *PGRepository) UpdateTenantBillingState(ctx context.Context, tenantID string, planCode string, subscriptionStatus string, subscriptionID string) error {
+func (r *PGRepository) UpdateTenantBillingState(ctx context.Context, tenantID string, provider string, planCode string, subscriptionStatus string, subscriptionID string) error {
_, err := r.pool.Exec(ctx, `
UPDATE tenants
- SET billing_provider = 'paddle', plan_code = $2, subscription_status = $3, billing_subscription_id = $4, updated_at = now()
+ SET billing_provider = $2, plan_code = $3, subscription_status = $4, billing_subscription_id = $5, updated_at = now()
WHERE id = $1
- `, tenantID, planCode, subscriptionStatus, subscriptionID)
+ `, tenantID, provider, planCode, subscriptionStatus, subscriptionID)
return err
}
diff --git a/apps/backend/internal/domain/models.go b/apps/backend/internal/domain/models.go
index 9478391..873d293 100644
--- a/apps/backend/internal/domain/models.go
+++ b/apps/backend/internal/domain/models.go
@@ -16,9 +16,14 @@ type DashboardKPI struct {
}
type UpcomingBooking struct {
+ ID string `json:"id"`
Reference string `json:"reference"`
CustomerName string `json:"customerName"`
CustomerEmail string `json:"customerEmail"`
+ Service string `json:"service,omitempty"`
+ Location string `json:"location,omitempty"`
+ StaffName string `json:"staffName,omitempty"`
+ Notes string `json:"notes,omitempty"`
StartsAt time.Time `json:"startsAt"`
EndsAt time.Time `json:"endsAt"`
Status string `json:"status"`
@@ -143,6 +148,7 @@ type CreateBookingResponse struct {
BookingID string `json:"bookingId"`
Reference string `json:"reference"`
Status string `json:"status"`
+ ManageURL string `json:"manageUrl"`
}
type PlanEntitlements struct {
@@ -207,16 +213,9 @@ type CheckoutSessionRequest struct {
}
type CheckoutLaunchResponse struct {
- // Stripe checkout
- CheckoutURL string `json:"checkoutUrl,omitempty"`
- // Paddle checkout
- PriceID string `json:"priceId,omitempty"`
- CustomerID string `json:"customerId,omitempty"`
- CustomerEmail string `json:"customerEmail,omitempty"`
- // Common
- SuccessRedirectURL string `json:"successRedirectUrl,omitempty"`
- CancelRedirectURL string `json:"cancelRedirectUrl,omitempty"`
- CustomData map[string]string `json:"customData,omitempty"`
+ CheckoutURL string `json:"checkoutUrl,omitempty"`
+ SuccessRedirectURL string `json:"successRedirectUrl,omitempty"`
+ CancelRedirectURL string `json:"cancelRedirectUrl,omitempty"`
}
type PortalSessionResponse struct {
@@ -247,6 +246,15 @@ type Location struct {
CreatedAt time.Time `json:"createdAt"`
}
+type DashboardBookingRequest struct {
+ CustomerName string `json:"customerName" binding:"required"`
+ CustomerEmail string `json:"customerEmail" binding:"required,email"`
+ CustomerPhone string `json:"customerPhone,omitempty"`
+ Service string `json:"service,omitempty"`
+ StartsAt string `json:"startsAt" binding:"required"`
+ Notes string `json:"notes,omitempty"`
+}
+
type CreateLocationRequest struct {
Name string `json:"name" binding:"required"`
Type string `json:"type" binding:"required"`
@@ -431,6 +439,20 @@ type EmailTemplate struct {
IsEnabled bool `json:"isEnabled"`
}
+type UpdateBrandRequest struct {
+ Name string `json:"name,omitempty"`
+ SiteURL string `json:"siteUrl,omitempty"`
+ LogoURL string `json:"logoUrl,omitempty"`
+ PrimaryColor string `json:"primaryColor" binding:"required"`
+}
+
+type UpdateEmailTemplateRequest struct {
+ Type string `json:"type" binding:"required"`
+ Subject string `json:"subject"`
+ Body string `json:"body"`
+ IsEnabled *bool `json:"isEnabled,omitempty"`
+}
+
type SendEmailRequest struct {
To string `json:"to" binding:"required,email"`
Subject string `json:"subject" binding:"required"`
diff --git a/apps/backend/internal/httpx/middleware.go b/apps/backend/internal/httpx/middleware.go
index 5eb6270..da61a7f 100644
--- a/apps/backend/internal/httpx/middleware.go
+++ b/apps/backend/internal/httpx/middleware.go
@@ -25,10 +25,11 @@ type visitor struct {
}
type RateLimiter struct {
- mu sync.Mutex
- visitors map[string]*visitor
- limit rate.Limit
- burst int
+ mu sync.Mutex
+ visitors map[string]*visitor
+ limit rate.Limit
+ burst int
+ cleanupOnce sync.Once
}
func NewRateLimiter(limit rate.Limit, burst int) *RateLimiter {
@@ -40,7 +41,9 @@ func NewRateLimiter(limit rate.Limit, burst int) *RateLimiter {
}
func (r *RateLimiter) Middleware() gin.HandlerFunc {
- go r.cleanupLoop()
+ r.cleanupOnce.Do(func() {
+ go r.cleanupLoop()
+ })
return func(c *gin.Context) {
ip := c.ClientIP()
diff --git a/apps/backend/internal/notifications/email_templates.go b/apps/backend/internal/notifications/email_templates.go
index 7cc8070..9b068c4 100644
--- a/apps/backend/internal/notifications/email_templates.go
+++ b/apps/backend/internal/notifications/email_templates.go
@@ -21,6 +21,7 @@ const (
type BookingEmailData struct {
Type EmailType
+ TenantID string
TenantName string
TenantSlug string
BusinessEmail string
diff --git a/apps/backend/internal/notifications/service.go b/apps/backend/internal/notifications/service.go
index f8d4bc7..f033ce2 100644
--- a/apps/backend/internal/notifications/service.go
+++ b/apps/backend/internal/notifications/service.go
@@ -126,7 +126,7 @@ func (s *Service) SendBookingConfirmation(ctx context.Context, data BookingEmail
data.BusinessEmail = s.cfg.EmailFrom
}
data.Type = EmailTypeConfirmation
- msg := RenderEmailMessage(data)
+ msg := s.renderWithOverride(ctx, data)
_, err := s.emailProvider.Send(ctx, msg)
return err
}
@@ -137,7 +137,7 @@ func (s *Service) SendBookingReschedule(ctx context.Context, data BookingEmailDa
data.BusinessEmail = s.cfg.EmailFrom
}
data.Type = EmailTypeReschedule
- msg := RenderEmailMessage(data)
+ msg := s.renderWithOverride(ctx, data)
_, err := s.emailProvider.Send(ctx, msg)
return err
}
@@ -148,11 +148,73 @@ func (s *Service) SendBookingCancellation(ctx context.Context, data BookingEmail
data.BusinessEmail = s.cfg.EmailFrom
}
data.Type = EmailTypeCancellation
- msg := RenderEmailMessage(data)
+ msg := s.renderWithOverride(ctx, data)
_, err := s.emailProvider.Send(ctx, msg)
return err
}
+// renderWithOverride renders the default message and, when the tenant has an
+// enabled custom template for this email type, swaps in the stored subject and
+// body with {{variable}} substitution.
+func (s *Service) renderWithOverride(ctx context.Context, data BookingEmailData) EmailMessage {
+ msg := RenderEmailMessage(data)
+ if s.repo == nil || data.TenantID == "" {
+ return msg
+ }
+ tpl, err := s.repo.GetEmailTemplate(ctx, data.TenantID, string(data.Type))
+ if err != nil || !tpl.IsEnabled {
+ return msg
+ }
+ vars := map[string]string{
+ "customerName": data.CustomerName,
+ "customerEmail": data.CustomerEmail,
+ "service": data.Service,
+ "location": data.Location,
+ "reference": data.Reference,
+ "startsAt": formatLocalizedDateTime(data.StartsAt, data.Timezone, data.Locale),
+ "tenantName": data.TenantName,
+ "manageUrl": data.ManagementURL,
+ }
+ if tpl.Subject != "" {
+ msg.Subject = substituteTemplateVars(tpl.Subject, vars)
+ }
+ if tpl.BodyText != "" {
+ msg.Text = substituteTemplateVars(tpl.BodyText, vars)
+ if tpl.BodyHTML == "" {
+ msg.HTML = wrapTextAsHTML(msg.Text, data.BrandColor, data.TenantName, data.ManagementURL)
+ }
+ }
+ if tpl.BodyHTML != "" {
+ msg.HTML = substituteTemplateVars(tpl.BodyHTML, vars)
+ }
+ return msg
+}
+
+func substituteTemplateVars(body string, vars map[string]string) string {
+ for key, value := range vars {
+ body = strings.ReplaceAll(body, "{{"+key+"}}", value)
+ }
+ return body
+}
+
+func wrapTextAsHTML(text, brandColor, tenantName, manageURL string) string {
+ if brandColor == "" {
+ brandColor = "#c25e3a"
+ }
+ html := "
"
+ html += ""
+ html += fmt.Sprintf("
%s ", brandColor, tenantName)
+ for _, p := range splitParagraphs(text) {
+ if len(p) > 0 {
+ html += fmt.Sprintf("
%s
", p)
+ }
+ }
+ if manageURL != "" {
+ html += fmt.Sprintf("
", manageURL, brandColor)
+ }
+ return html + "
"
+}
+
// SendBusinessNotification sends a notification to the business about a new booking
func (s *Service) SendBusinessNotification(ctx context.Context, businessEmail string, data BookingEmailData) error {
if businessEmail == "" {
@@ -311,22 +373,24 @@ func (s *Service) SendUsageWarning(ctx context.Context, tenantID string, locatio
return fmt.Errorf("failed to get tenant: %w", err)
}
- // Use a placeholder admin email - in production, would get from tenant owner
- adminEmail := "admin@" + tenant.Slug + ".bookra.eu"
+ ownerEmail, err := s.repo.GetTenantOwnerEmail(ctx, tenantID)
+ if err != nil || ownerEmail == "" {
+ return nil
+ }
emailData := UsageNotificationData{
Type: EmailTypeUsageWarning,
TenantName: tenant.Name,
TenantSlug: tenant.Slug,
BusinessEmail: s.cfg.EmailFrom,
- AdminEmail: adminEmail,
+ AdminEmail: ownerEmail,
Locale: tenant.Locale,
PlanCode: tenant.PlanCode,
LocationCount: locationCount,
LocationLimit: locationLimit,
UsagePercent: usagePercent,
- UpgradeURL: "https://bookra.eu/pricing",
- DashboardURL: "https://bookra.eu/dashboard",
+ UpgradeURL: strings.TrimRight(s.cfg.FrontendURL, "/") + "/dashboard/billing",
+ DashboardURL: strings.TrimRight(s.cfg.FrontendURL, "/") + "/dashboard",
}
msg := RenderUsageNotificationEmail(emailData)
@@ -348,19 +412,21 @@ func (s *Service) SendTrialEndingEmail(ctx context.Context, tenantID string, day
return fmt.Errorf("failed to get tenant: %w", err)
}
- // Use a placeholder admin email - in production, would get from tenant owner
- adminEmail := "admin@" + tenant.Slug + ".bookra.eu"
+ ownerEmail, err := s.repo.GetTenantOwnerEmail(ctx, tenantID)
+ if err != nil || ownerEmail == "" {
+ return nil
+ }
emailData := UsageNotificationData{
Type: EmailTypeTrialEnding,
TenantName: tenant.Name,
TenantSlug: tenant.Slug,
BusinessEmail: s.cfg.EmailFrom,
- AdminEmail: adminEmail,
+ AdminEmail: ownerEmail,
Locale: tenant.Locale,
PlanCode: tenant.PlanCode,
- UpgradeURL: "https://bookra.eu/pricing",
- DashboardURL: "https://bookra.eu/dashboard",
+ UpgradeURL: strings.TrimRight(s.cfg.FrontendURL, "/") + "/dashboard/billing",
+ DashboardURL: strings.TrimRight(s.cfg.FrontendURL, "/") + "/dashboard",
}
msg := RenderUsageNotificationEmail(emailData)
diff --git a/apps/backend/internal/shared/plans.go b/apps/backend/internal/shared/plans.go
index ed189f0..9a77930 100644
--- a/apps/backend/internal/shared/plans.go
+++ b/apps/backend/internal/shared/plans.go
@@ -3,7 +3,7 @@ package shared
import "strings"
// NormalizePlanCode canonicalizes plan codes from various sources
-// (Paddle checkout, webhook payloads, database records) into stable
+// (Stripe checkout, webhook payloads, database records) into stable
// internal identifiers used across the billing and tenancy domains.
func NormalizePlanCode(planCode string) string {
switch strings.TrimSpace(planCode) {
diff --git a/apps/backend/internal/sms/service.go b/apps/backend/internal/sms/service.go
index 0bdd7d6..6bab7b6 100644
--- a/apps/backend/internal/sms/service.go
+++ b/apps/backend/internal/sms/service.go
@@ -353,7 +353,7 @@ func (s *Service) sendUsageSummaryEmail(ctx context.Context, tenant db.TenantRec
}
// Find owner email
- membership, err := s.repo.GetTenantMembershipByUserID(ctx, tenant.ID)
+ membership, err := s.repo.GetTenantMembershipBySubject(ctx, tenant.ID)
if err == nil {
user, err := s.repo.GetUserByID(ctx, membership.UserID)
if err == nil {
diff --git a/apps/backend/internal/tenancy/service.go b/apps/backend/internal/tenancy/service.go
index a8d8219..099d950 100644
--- a/apps/backend/internal/tenancy/service.go
+++ b/apps/backend/internal/tenancy/service.go
@@ -32,11 +32,11 @@ func NewService(repo db.Repository) *Service {
}
func (s *Service) GetTenantMembership(ctx context.Context, principal domain.Principal) (db.TenantMembershipRecord, error) {
- return s.repo.GetTenantMembershipByUserID(ctx, principal.Subject)
+ return s.repo.GetTenantMembershipBySubject(ctx, principal.Subject)
}
func (s *Service) Bootstrap(ctx context.Context, principal domain.Principal) (domain.TenantBootstrap, error) {
- membership, err := s.repo.GetTenantMembershipByUserID(ctx, principal.Subject)
+ membership, err := s.repo.GetTenantMembershipBySubject(ctx, principal.Subject)
if err != nil {
if errors.Is(err, pgx.ErrNoRows) {
return domain.TenantBootstrap{
@@ -76,7 +76,7 @@ func (s *Service) Bootstrap(ctx context.Context, principal domain.Principal) (do
}
func (s *Service) Onboard(ctx context.Context, principal domain.Principal, request domain.OnboardTenantRequest) (domain.TenantBootstrap, error) {
- if _, err := s.repo.GetTenantMembershipByUserID(ctx, principal.Subject); err == nil {
+ if _, err := s.repo.GetTenantMembershipBySubject(ctx, principal.Subject); err == nil {
return domain.TenantBootstrap{}, ErrTenantAlreadyProvisioned
} else if !errors.Is(err, pgx.ErrNoRows) {
return domain.TenantBootstrap{}, err
@@ -184,6 +184,103 @@ func (s *Service) Onboard(ctx context.Context, principal domain.Principal, reque
}, nil
}
+// UpdateBrand persists brand profile fields for the caller's tenant.
+func (s *Service) UpdateBrand(ctx context.Context, principal domain.Principal, req domain.UpdateBrandRequest) (domain.BrandProfile, error) {
+ membership, err := s.repo.GetTenantMembershipBySubject(ctx, principal.Subject)
+ if err != nil {
+ return domain.BrandProfile{}, err
+ }
+
+ params := db.UpdateBrandProfileParams{
+ Name: optionalTrimmed(req.Name),
+ SiteURL: optionalTrimmed(req.SiteURL),
+ LogoURL: optionalTrimmed(req.LogoURL),
+ PrimaryColor: optionalTrimmed(req.PrimaryColor),
+ }
+ if _, err := s.repo.UpdateBrandProfile(ctx, membership.Tenant.ID, params); err != nil {
+ return domain.BrandProfile{}, err
+ }
+ return s.brandProfile(ctx, membership.Tenant), nil
+}
+
+func optionalTrimmed(value string) *string {
+ trimmed := strings.TrimSpace(value)
+ if trimmed == "" {
+ return nil
+ }
+ return &trimmed
+}
+
+var emailTemplateTypes = map[string]struct{}{
+ "confirmation": {},
+ "reminder": {},
+ "reschedule": {},
+ "cancellation": {},
+}
+
+// ListEmailTemplates returns all custom templates stored for the caller's tenant.
+func (s *Service) ListEmailTemplates(ctx context.Context, principal domain.Principal) ([]domain.EmailTemplate, error) {
+ membership, err := s.repo.GetTenantMembershipBySubject(ctx, principal.Subject)
+ if err != nil {
+ return nil, err
+ }
+ records, err := s.repo.ListEmailTemplates(ctx, membership.Tenant.ID)
+ if err != nil {
+ return nil, err
+ }
+ out := make([]domain.EmailTemplate, len(records))
+ for i, rec := range records {
+ out[i] = emailTemplateToDomain(rec)
+ }
+ return out, nil
+}
+
+// UpdateEmailTemplate stores a subject/body override for a booking email type.
+// Supported placeholders: {{customerName}}, {{service}}, {{location}},
+// {{reference}}, {{startsAt}}, {{tenantName}}, {{manageUrl}}.
+func (s *Service) UpdateEmailTemplate(ctx context.Context, principal domain.Principal, req domain.UpdateEmailTemplateRequest) (domain.EmailTemplate, error) {
+ membership, err := s.repo.GetTenantMembershipBySubject(ctx, principal.Subject)
+ if err != nil {
+ return domain.EmailTemplate{}, err
+ }
+ templateType := strings.ToLower(strings.TrimSpace(req.Type))
+ if _, ok := emailTemplateTypes[templateType]; !ok {
+ return domain.EmailTemplate{}, ErrInvalidOnboarding
+ }
+ if len(req.Subject) > 200 || len(req.Body) > 20000 {
+ return domain.EmailTemplate{}, ErrInvalidOnboarding
+ }
+
+ isEnabled := true
+ if req.IsEnabled != nil {
+ isEnabled = *req.IsEnabled
+ }
+
+ rec, err := s.repo.UpsertEmailTemplate(ctx, db.EmailTemplateRecord{
+ TenantID: membership.Tenant.ID,
+ Type: templateType,
+ Subject: strings.TrimSpace(req.Subject),
+ BodyText: strings.TrimSpace(req.Body),
+ IsEnabled: isEnabled,
+ })
+ if err != nil {
+ return domain.EmailTemplate{}, err
+ }
+ return emailTemplateToDomain(rec), nil
+}
+
+func emailTemplateToDomain(rec db.EmailTemplateRecord) domain.EmailTemplate {
+ return domain.EmailTemplate{
+ ID: rec.ID,
+ TenantID: rec.TenantID,
+ Type: rec.Type,
+ Subject: rec.Subject,
+ BodyHTML: rec.BodyHTML,
+ BodyText: rec.BodyText,
+ IsEnabled: rec.IsEnabled,
+ }
+}
+
func (s *Service) brandProfile(ctx context.Context, tenant db.TenantRecord) domain.BrandProfile {
brand, err := s.repo.GetBrandProfile(ctx, tenant.ID)
if err != nil {
diff --git a/apps/backend/migrations/00004_paddle_billing.sql b/apps/backend/migrations/00005_provider_billing_columns.sql
similarity index 88%
rename from apps/backend/migrations/00004_paddle_billing.sql
rename to apps/backend/migrations/00005_provider_billing_columns.sql
index 3c236f8..2234a8e 100644
--- a/apps/backend/migrations/00004_paddle_billing.sql
+++ b/apps/backend/migrations/00005_provider_billing_columns.sql
@@ -8,6 +8,7 @@ ALTER TABLE billing_snapshots
ALTER TABLE subscription_events
ADD COLUMN IF NOT EXISTS billing_provider text NOT NULL DEFAULT 'paddle';
+-- +goose StatementBegin
DO $$
BEGIN
IF EXISTS (
@@ -18,7 +19,9 @@ BEGIN
ALTER TABLE tenants RENAME COLUMN stripe_customer_id TO billing_customer_id;
END IF;
END $$;
+-- +goose StatementEnd
+-- +goose StatementBegin
DO $$
BEGIN
IF EXISTS (
@@ -29,7 +32,9 @@ BEGIN
ALTER TABLE tenants RENAME COLUMN stripe_subscription_id TO billing_subscription_id;
END IF;
END $$;
+-- +goose StatementEnd
+-- +goose StatementBegin
DO $$
BEGIN
IF EXISTS (
@@ -40,7 +45,9 @@ BEGIN
ALTER TABLE billing_snapshots RENAME COLUMN stripe_customer_id TO billing_customer_id;
END IF;
END $$;
+-- +goose StatementEnd
+-- +goose StatementBegin
DO $$
BEGIN
IF EXISTS (
@@ -51,7 +58,9 @@ BEGIN
ALTER TABLE billing_snapshots RENAME COLUMN stripe_subscription_id TO billing_subscription_id;
END IF;
END $$;
+-- +goose StatementEnd
+-- +goose StatementBegin
DO $$
BEGIN
IF EXISTS (
@@ -62,6 +71,7 @@ BEGIN
ALTER TABLE subscription_events RENAME COLUMN stripe_event_id TO billing_provider_event_id;
END IF;
END $$;
+-- +goose StatementEnd
ALTER TABLE subscription_events DROP CONSTRAINT IF EXISTS subscription_events_stripe_event_id_key;
ALTER TABLE subscription_events
@@ -70,6 +80,7 @@ ALTER TABLE subscription_events
-- +goose Down
ALTER TABLE subscription_events DROP CONSTRAINT IF EXISTS subscription_events_provider_event_key;
+-- +goose StatementBegin
DO $$
BEGIN
IF EXISTS (
@@ -80,7 +91,9 @@ BEGIN
ALTER TABLE subscription_events RENAME COLUMN billing_provider_event_id TO stripe_event_id;
END IF;
END $$;
+-- +goose StatementEnd
+-- +goose StatementBegin
DO $$
BEGIN
IF EXISTS (
@@ -91,7 +104,9 @@ BEGIN
ALTER TABLE billing_snapshots RENAME COLUMN billing_subscription_id TO stripe_subscription_id;
END IF;
END $$;
+-- +goose StatementEnd
+-- +goose StatementBegin
DO $$
BEGIN
IF EXISTS (
@@ -102,7 +117,9 @@ BEGIN
ALTER TABLE billing_snapshots RENAME COLUMN billing_customer_id TO stripe_customer_id;
END IF;
END $$;
+-- +goose StatementEnd
+-- +goose StatementBegin
DO $$
BEGIN
IF EXISTS (
@@ -113,7 +130,9 @@ BEGIN
ALTER TABLE tenants RENAME COLUMN billing_subscription_id TO stripe_subscription_id;
END IF;
END $$;
+-- +goose StatementEnd
+-- +goose StatementBegin
DO $$
BEGIN
IF EXISTS (
@@ -124,6 +143,7 @@ BEGIN
ALTER TABLE tenants RENAME COLUMN billing_customer_id TO stripe_customer_id;
END IF;
END $$;
+-- +goose StatementEnd
ALTER TABLE subscription_events DROP COLUMN IF EXISTS billing_provider;
ALTER TABLE billing_snapshots DROP COLUMN IF EXISTS billing_provider;
diff --git a/apps/backend/migrations/00005_neon_auth_subjects.sql b/apps/backend/migrations/00006_neon_auth_subjects.sql
similarity index 100%
rename from apps/backend/migrations/00005_neon_auth_subjects.sql
rename to apps/backend/migrations/00006_neon_auth_subjects.sql
diff --git a/apps/backend/migrations/00006_auth_and_admin.sql b/apps/backend/migrations/00007_auth_and_admin.sql
similarity index 69%
rename from apps/backend/migrations/00006_auth_and_admin.sql
rename to apps/backend/migrations/00007_auth_and_admin.sql
index 5a38f36..38865eb 100644
--- a/apps/backend/migrations/00006_auth_and_admin.sql
+++ b/apps/backend/migrations/00007_auth_and_admin.sql
@@ -1,22 +1,21 @@
-- +goose Up
-- +goose StatementBegin
--- Users table for authentication (migrated from auth-service)
-CREATE TABLE IF NOT EXISTS users (
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
- email VARCHAR(255) NOT NULL UNIQUE,
- name VARCHAR(255),
- password_hash VARCHAR(255),
- email_verified BOOLEAN DEFAULT FALSE,
- provider VARCHAR(50) NOT NULL DEFAULT 'email',
- provider_id VARCHAR(255),
- role VARCHAR(50) NOT NULL DEFAULT 'user',
- created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
- updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
- last_login_at TIMESTAMP WITH TIME ZONE
-);
+-- Authentication columns for the users table (migrated from auth-service).
+-- The users table itself is created in 00001_init; this migration adds the
+-- columns the auth and admin code paths require.
+ALTER TABLE users
+ ADD COLUMN IF NOT EXISTS name VARCHAR(255),
+ ADD COLUMN IF NOT EXISTS password_hash VARCHAR(255),
+ ADD COLUMN IF NOT EXISTS email_verified BOOLEAN NOT NULL DEFAULT FALSE,
+ ADD COLUMN IF NOT EXISTS provider VARCHAR(50) NOT NULL DEFAULT 'email',
+ ADD COLUMN IF NOT EXISTS provider_id VARCHAR(255),
+ ADD COLUMN IF NOT EXISTS role VARCHAR(50) NOT NULL DEFAULT 'user',
+ ADD COLUMN IF NOT EXISTS last_login_at TIMESTAMP WITH TIME ZONE;
-CREATE INDEX IF NOT EXISTS idx_users_email ON users(email);
+ALTER TABLE users ALTER COLUMN id SET DEFAULT gen_random_uuid();
+
+CREATE UNIQUE INDEX IF NOT EXISTS idx_users_email_unique ON users(email);
CREATE INDEX IF NOT EXISTS idx_users_provider ON users(provider, provider_id);
CREATE INDEX IF NOT EXISTS idx_users_role ON users(role);
@@ -92,6 +91,18 @@ DROP TABLE IF EXISTS admin_audit_log;
DROP TABLE IF EXISTS oauth_states;
DROP TABLE IF EXISTS password_resets;
DROP TABLE IF EXISTS magic_links;
-DROP TABLE IF EXISTS users;
+
+DROP INDEX IF EXISTS idx_users_role;
+DROP INDEX IF EXISTS idx_users_provider;
+DROP INDEX IF EXISTS idx_users_email_unique;
+
+ALTER TABLE users
+ DROP COLUMN IF EXISTS last_login_at,
+ DROP COLUMN IF EXISTS role,
+ DROP COLUMN IF EXISTS provider_id,
+ DROP COLUMN IF EXISTS provider,
+ DROP COLUMN IF EXISTS email_verified,
+ DROP COLUMN IF EXISTS password_hash,
+ DROP COLUMN IF EXISTS name;
-- +goose StatementEnd
diff --git a/apps/backend/migrations/00006_onboarding_brand_billing.sql b/apps/backend/migrations/00008_onboarding_brand_billing.sql
similarity index 95%
rename from apps/backend/migrations/00006_onboarding_brand_billing.sql
rename to apps/backend/migrations/00008_onboarding_brand_billing.sql
index 484840e..9b0dd4f 100644
--- a/apps/backend/migrations/00006_onboarding_brand_billing.sql
+++ b/apps/backend/migrations/00008_onboarding_brand_billing.sql
@@ -27,11 +27,15 @@ CREATE TABLE IF NOT EXISTS team_invites (
email text NOT NULL,
role text NOT NULL DEFAULT 'staff',
status text NOT NULL DEFAULT 'pending',
+ expires_at timestamptz,
created_at timestamptz NOT NULL DEFAULT now(),
updated_at timestamptz NOT NULL DEFAULT now(),
UNIQUE (tenant_id, email)
);
+ALTER TABLE team_invites
+ ADD COLUMN IF NOT EXISTS expires_at timestamptz;
+
UPDATE tenants SET plan_code = 'pro' WHERE plan_code = 'growth';
UPDATE tenants SET plan_code = 'business' WHERE plan_code = 'multi-location';
UPDATE billing_snapshots SET plan_code = 'pro' WHERE plan_code = 'growth';
diff --git a/apps/backend/migrations/00007_customers.sql b/apps/backend/migrations/00009_customers.sql
similarity index 100%
rename from apps/backend/migrations/00007_customers.sql
rename to apps/backend/migrations/00009_customers.sql
diff --git a/apps/backend/migrations/00008_sms.sql b/apps/backend/migrations/00010_sms.sql
similarity index 90%
rename from apps/backend/migrations/00008_sms.sql
rename to apps/backend/migrations/00010_sms.sql
index 964bd7c..42c644d 100644
--- a/apps/backend/migrations/00008_sms.sql
+++ b/apps/backend/migrations/00010_sms.sql
@@ -34,14 +34,12 @@ CREATE TABLE IF NOT EXISTS sms_monthly_reports (
UNIQUE (tenant_id, year_month)
);
-CREATE INDEX IF NOT EXISTS idx_sms_usage_tenant_month ON sms_usage_logs (tenant_id, date_trunc('month', created_at));
CREATE INDEX IF NOT EXISTS idx_sms_usage_tenant_created ON sms_usage_logs (tenant_id, created_at DESC);
CREATE INDEX IF NOT EXISTS idx_sms_reports_tenant ON sms_monthly_reports (tenant_id, year_month DESC);
-- +goose Down
DROP INDEX IF EXISTS idx_sms_reports_tenant;
DROP INDEX IF EXISTS idx_sms_usage_tenant_created;
-DROP INDEX IF EXISTS idx_sms_usage_tenant_month;
DROP TABLE IF EXISTS sms_monthly_reports;
DROP TABLE IF EXISTS sms_usage_logs;
DROP TABLE IF EXISTS tenant_sms_settings;
diff --git a/apps/backend/migrations/00009_booking_phone.sql b/apps/backend/migrations/00011_booking_phone.sql
similarity index 100%
rename from apps/backend/migrations/00009_booking_phone.sql
rename to apps/backend/migrations/00011_booking_phone.sql
diff --git a/apps/backend/migrations/00012_memberships_and_manage_token.sql b/apps/backend/migrations/00012_memberships_and_manage_token.sql
new file mode 100644
index 0000000..c73f2f7
--- /dev/null
+++ b/apps/backend/migrations/00012_memberships_and_manage_token.sql
@@ -0,0 +1,51 @@
+-- +goose Up
+
+-- Tenant memberships keyed by the auth subject (Neon Auth `sub`).
+-- The auth middleware resolves JWT subjects to memberships through users.neon_subject.
+CREATE TABLE IF NOT EXISTS tenant_memberships (
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
+ tenant_id uuid NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
+ user_neon_subject text NOT NULL,
+ role text NOT NULL DEFAULT 'staff',
+ joined_at timestamptz NOT NULL DEFAULT now(),
+ UNIQUE (tenant_id, user_neon_subject)
+);
+
+CREATE INDEX IF NOT EXISTS idx_tenant_memberships_subject ON tenant_memberships (user_neon_subject);
+
+-- Unguessable per-booking management token used by /v1/public/bookings/:reference endpoints.
+ALTER TABLE bookings
+ ADD COLUMN IF NOT EXISTS manage_token text;
+
+CREATE UNIQUE INDEX IF NOT EXISTS idx_bookings_manage_token
+ ON bookings (manage_token)
+ WHERE manage_token IS NOT NULL;
+
+-- Backfill tokens for pre-existing bookings.
+UPDATE bookings
+SET manage_token = replace(gen_random_uuid()::text, '-', '') || replace(gen_random_uuid()::text, '-', '')
+WHERE manage_token IS NULL;
+
+-- locations.updated_at is written by the repository update path.
+ALTER TABLE locations
+ ADD COLUMN IF NOT EXISTS updated_at timestamptz NOT NULL DEFAULT now();
+
+-- Backfill memberships for every existing user linked via tenant_users.
+-- Covers the seeded demo owner (users.neon_subject = 'demo-owner').
+INSERT INTO tenant_memberships (tenant_id, user_neon_subject, role)
+SELECT tu.tenant_id, u.neon_subject, tu.role
+FROM tenant_users tu
+JOIN users u ON u.id = tu.user_id
+WHERE u.neon_subject IS NOT NULL
+ON CONFLICT (tenant_id, user_neon_subject) DO NOTHING;
+
+-- +goose Down
+
+ALTER TABLE locations
+ DROP COLUMN IF EXISTS updated_at;
+
+DROP INDEX IF EXISTS idx_bookings_manage_token;
+ALTER TABLE bookings
+ DROP COLUMN IF EXISTS manage_token;
+
+DROP TABLE IF EXISTS tenant_memberships;
diff --git a/apps/backend/migrations/00013_location_type_capacity.sql b/apps/backend/migrations/00013_location_type_capacity.sql
new file mode 100644
index 0000000..75a4a55
--- /dev/null
+++ b/apps/backend/migrations/00013_location_type_capacity.sql
@@ -0,0 +1,25 @@
+-- +goose Up
+ALTER TABLE locations
+ ADD COLUMN IF NOT EXISTS type text NOT NULL DEFAULT 'room',
+ ADD COLUMN IF NOT EXISTS capacity integer NOT NULL DEFAULT 1;
+
+-- Per-tenant custom email templates (overrides for built-in subjects/bodies).
+CREATE TABLE IF NOT EXISTS email_templates (
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
+ tenant_id uuid NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
+ type text NOT NULL,
+ subject text NOT NULL DEFAULT '',
+ body_html text NOT NULL DEFAULT '',
+ body_text text NOT NULL DEFAULT '',
+ is_enabled boolean NOT NULL DEFAULT true,
+ created_at timestamptz NOT NULL DEFAULT now(),
+ updated_at timestamptz NOT NULL DEFAULT now(),
+ UNIQUE (tenant_id, type)
+);
+
+-- +goose Down
+DROP TABLE IF EXISTS email_templates;
+
+ALTER TABLE locations
+ DROP COLUMN IF EXISTS type,
+ DROP COLUMN IF EXISTS capacity;
diff --git a/apps/backend/openapi/bookra.openapi.yaml b/apps/backend/openapi/bookra.openapi.yaml
index 6cb3b17..b68df44 100644
--- a/apps/backend/openapi/bookra.openapi.yaml
+++ b/apps/backend/openapi/bookra.openapi.yaml
@@ -1,18 +1,22 @@
openapi: 3.0.3
info:
title: Bookra API
- version: 0.1.0
+ version: 0.2.0
description: >
Remote-first booking API for Bookra. The Go backend owns business rules,
- scheduling logic, tenant isolation, and Paddle-backed plan enforcement.
+ scheduling logic, tenant isolation, and Stripe-backed plan enforcement.
servers:
- url: http://localhost:8080
tags:
- name: Health
+ - name: Auth
+ - name: Admin
- name: Public Booking
- name: Dashboard
- name: Tenant
+ - name: Catalog
- name: Billing
+ - name: SMS
- name: Jobs
paths:
/healthz:
@@ -37,6 +41,218 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/PublicConfig"
+ /v1/public/widget.js:
+ get:
+ tags: [Public Booking]
+ operationId: getWidgetScript
+ responses:
+ "200":
+ description: Embeddable widget script
+ content:
+ application/javascript:
+ schema:
+ type: string
+ # ---------------- Auth ----------------
+ /v1/auth/register:
+ post:
+ tags: [Auth]
+ operationId: register
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [email, password]
+ properties:
+ email:
+ type: string
+ format: email
+ password:
+ type: string
+ minLength: 8
+ name:
+ type: string
+ responses:
+ "201":
+ description: User created
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/AuthResponse"
+ "400":
+ description: Invalid request
+ "409":
+ description: Email already registered
+ /v1/auth/login:
+ post:
+ tags: [Auth]
+ operationId: login
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [email, password]
+ properties:
+ email:
+ type: string
+ format: email
+ password:
+ type: string
+ responses:
+ "200":
+ description: Login succeeded
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/AuthResponse"
+ "401":
+ description: Invalid credentials
+ /v1/auth/magic-link:
+ post:
+ tags: [Auth]
+ operationId: requestMagicLink
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [email]
+ properties:
+ email:
+ type: string
+ format: email
+ responses:
+ "200":
+ description: Magic link issued (always 200 to prevent enumeration)
+ /v1/auth/verify:
+ post:
+ tags: [Auth]
+ operationId: verifyMagicLink
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [token]
+ properties:
+ token:
+ type: string
+ responses:
+ "200":
+ description: Token verified
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/AuthResponse"
+ "401":
+ description: Invalid or expired token
+ /v1/auth/refresh:
+ post:
+ tags: [Auth]
+ operationId: refreshTokens
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [refreshToken]
+ properties:
+ refreshToken:
+ type: string
+ responses:
+ "200":
+ description: Tokens rotated
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/AuthResponse"
+ "401":
+ description: Invalid refresh token
+ # ---------------- Admin ----------------
+ /v1/admin/stats:
+ get:
+ tags: [Admin]
+ operationId: getAdminStats
+ security:
+ - adminAuth: []
+ - bearerAuth: []
+ responses:
+ "200":
+ description: Platform statistics
+ "403":
+ description: Forbidden
+ /v1/admin/tenants:
+ get:
+ tags: [Admin]
+ operationId: listAdminTenants
+ security:
+ - adminAuth: []
+ - bearerAuth: []
+ responses:
+ "200":
+ description: All tenants
+ "403":
+ description: Forbidden
+ /v1/admin/users:
+ get:
+ tags: [Admin]
+ operationId: listAdminUsers
+ security:
+ - adminAuth: []
+ - bearerAuth: []
+ responses:
+ "200":
+ description: All users
+ "403":
+ description: Forbidden
+ /v1/admin/users/{userID}/role:
+ put:
+ tags: [Admin]
+ operationId: updateUserRole
+ security:
+ - adminAuth: []
+ - bearerAuth: []
+ parameters:
+ - in: path
+ name: userID
+ required: true
+ schema:
+ type: string
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [role]
+ properties:
+ role:
+ type: string
+ enum: [owner, staff, admin]
+ responses:
+ "200":
+ description: Role updated
+ "403":
+ description: Forbidden
+ /v1/admin/trigger-trial-emails:
+ post:
+ tags: [Admin]
+ operationId: triggerTrialEmails
+ security:
+ - adminAuth: []
+ - bearerAuth: []
+ responses:
+ "200":
+ description: Trial emails triggered
+ "403":
+ description: Forbidden
+ # ---------------- Public Booking ----------------
/v1/public/tenants/{tenantSlug}/availability:
get:
tags: [Public Booking]
@@ -71,6 +287,112 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/CreateBookingResponse"
+ "409":
+ description: Slot no longer available
+ /v1/public/bookings/{reference}:
+ get:
+ tags: [Public Booking]
+ operationId: getBookingByReference
+ parameters:
+ - in: path
+ name: reference
+ required: true
+ schema:
+ type: string
+ - in: query
+ name: token
+ required: true
+ schema:
+ type: string
+ description: Manage token issued at booking time
+ responses:
+ "200":
+ description: Booking details
+ "403":
+ description: Invalid manage token
+ "404":
+ description: Booking not found
+ /v1/public/bookings/{reference}/reschedule:
+ post:
+ tags: [Public Booking]
+ operationId: rescheduleBooking
+ parameters:
+ - in: path
+ name: reference
+ required: true
+ schema:
+ type: string
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [token, startsAt]
+ properties:
+ token:
+ type: string
+ startsAt:
+ type: string
+ format: date-time
+ endsAt:
+ type: string
+ format: date-time
+ responses:
+ "200":
+ description: Booking rescheduled
+ "403":
+ description: Invalid manage token
+ "409":
+ description: New slot conflicts
+ /v1/public/bookings/{reference}/cancel:
+ post:
+ tags: [Public Booking]
+ operationId: cancelBooking
+ parameters:
+ - in: path
+ name: reference
+ required: true
+ schema:
+ type: string
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [token]
+ properties:
+ token:
+ type: string
+ responses:
+ "200":
+ description: Booking cancelled
+ "403":
+ description: Invalid manage token
+ /v1/public/contact:
+ post:
+ tags: [Public Booking]
+ operationId: submitContactForm
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [name, email, message]
+ properties:
+ name:
+ type: string
+ email:
+ type: string
+ format: email
+ message:
+ type: string
+ responses:
+ "200":
+ description: Message accepted
+ # ---------------- Dashboard ----------------
/v1/dashboard/summary:
get:
tags: [Dashboard]
@@ -86,6 +408,7 @@ paths:
$ref: "#/components/schemas/DashboardSummary"
"401":
description: Unauthorized
+ # ---------------- Tenant ----------------
/v1/tenants/bootstrap:
get:
tags: [Tenant]
@@ -126,6 +449,356 @@ paths:
description: Unauthorized
"409":
description: Conflict
+ /v1/tenants/brand:
+ put:
+ tags: [Tenant]
+ operationId: updateTenantBrand
+ security:
+ - bearerAuth: []
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UpdateBrandRequest"
+ responses:
+ "200":
+ description: Brand profile updated
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BrandProfile"
+ "401":
+ description: Unauthorized
+ /v1/tenants/email-templates:
+ get:
+ tags: [Tenant]
+ operationId: listEmailTemplates
+ security:
+ - bearerAuth: []
+ responses:
+ "200":
+ description: Tenant email templates
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [templates]
+ properties:
+ templates:
+ type: array
+ items:
+ $ref: "#/components/schemas/EmailTemplate"
+ "401":
+ description: Unauthorized
+ /v1/tenants/email-template:
+ put:
+ tags: [Tenant]
+ operationId: updateEmailTemplate
+ security:
+ - bearerAuth: []
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UpdateEmailTemplateRequest"
+ responses:
+ "200":
+ description: Template saved
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/EmailTemplate"
+ "400":
+ description: Invalid request
+ "401":
+ description: Unauthorized
+ # ---------------- Catalog ----------------
+ /v1/catalog/locations:
+ get:
+ tags: [Catalog]
+ operationId: listLocations
+ security:
+ - bearerAuth: []
+ responses:
+ "200":
+ description: Tenant locations
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: "#/components/schemas/Location"
+ "401":
+ description: Unauthorized
+ post:
+ tags: [Catalog]
+ operationId: createLocation
+ security:
+ - bearerAuth: []
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UpsertLocationRequest"
+ responses:
+ "201":
+ description: Location created
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Location"
+ "400":
+ description: Invalid request
+ "403":
+ description: Plan limit reached
+ /v1/catalog/locations/{locationID}:
+ put:
+ tags: [Catalog]
+ operationId: updateLocation
+ security:
+ - bearerAuth: []
+ parameters:
+ - $ref: "#/components/parameters/locationID"
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UpsertLocationRequest"
+ responses:
+ "200":
+ description: Location updated
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Location"
+ "404":
+ description: Location not found
+ delete:
+ tags: [Catalog]
+ operationId: deleteLocation
+ security:
+ - bearerAuth: []
+ parameters:
+ - $ref: "#/components/parameters/locationID"
+ responses:
+ "200":
+ description: Location deleted
+ "404":
+ description: Location not found
+ /v1/catalog/bookings:
+ post:
+ tags: [Catalog]
+ operationId: createDashboardBooking
+ security:
+ - bearerAuth: []
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/DashboardBookingRequest"
+ responses:
+ "201":
+ description: Booking created
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UpcomingBooking"
+ "400":
+ description: Invalid request
+ "409":
+ description: Conflict with existing booking
+ /v1/catalog/blocked-days:
+ get:
+ tags: [Catalog]
+ operationId: listBlockedDays
+ security:
+ - bearerAuth: []
+ responses:
+ "200":
+ description: Blocked days
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: "#/components/schemas/BlockedDay"
+ post:
+ tags: [Catalog]
+ operationId: createBlockedDay
+ security:
+ - bearerAuth: []
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UpsertBlockedDayRequest"
+ responses:
+ "201":
+ description: Blocked day created
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BlockedDay"
+ /v1/catalog/blocked-days/{blockedDayID}:
+ put:
+ tags: [Catalog]
+ operationId: updateBlockedDay
+ security:
+ - bearerAuth: []
+ parameters:
+ - $ref: "#/components/parameters/blockedDayID"
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UpsertBlockedDayRequest"
+ responses:
+ "200":
+ description: Blocked day updated
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BlockedDay"
+ "404":
+ description: Not found
+ delete:
+ tags: [Catalog]
+ operationId: deleteBlockedDay
+ security:
+ - bearerAuth: []
+ parameters:
+ - $ref: "#/components/parameters/blockedDayID"
+ responses:
+ "200":
+ description: Blocked day deleted
+ "404":
+ description: Not found
+ /v1/catalog/customers:
+ get:
+ tags: [Catalog]
+ operationId: listCustomers
+ security:
+ - bearerAuth: []
+ parameters:
+ - in: query
+ name: query
+ schema:
+ type: string
+ - in: query
+ name: limit
+ schema:
+ type: integer
+ default: 50
+ responses:
+ "200":
+ description: Tenant customers
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: "#/components/schemas/Customer"
+ post:
+ tags: [Catalog]
+ operationId: createCustomer
+ security:
+ - bearerAuth: []
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UpsertCustomerRequest"
+ responses:
+ "201":
+ description: Customer created
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Customer"
+ /v1/catalog/customers/{customerID}:
+ put:
+ tags: [Catalog]
+ operationId: updateCustomer
+ security:
+ - bearerAuth: []
+ parameters:
+ - $ref: "#/components/parameters/customerID"
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UpsertCustomerRequest"
+ responses:
+ "200":
+ description: Customer updated
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Customer"
+ "404":
+ description: Not found
+ delete:
+ tags: [Catalog]
+ operationId: deleteCustomer
+ security:
+ - bearerAuth: []
+ parameters:
+ - $ref: "#/components/parameters/customerID"
+ responses:
+ "200":
+ description: Customer deleted
+ "404":
+ description: Not found
+ /v1/catalog/working-hours:
+ get:
+ tags: [Catalog]
+ operationId: listWorkingHours
+ security:
+ - bearerAuth: []
+ responses:
+ "200":
+ description: Weekly working hours
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: "#/components/schemas/WorkingHours"
+ /v1/catalog/working-hours/{dayOfWeek}:
+ put:
+ tags: [Catalog]
+ operationId: updateWorkingHours
+ security:
+ - bearerAuth: []
+ parameters:
+ - in: path
+ name: dayOfWeek
+ required: true
+ schema:
+ type: integer
+ minimum: 0
+ maximum: 6
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UpdateWorkingHoursRequest"
+ responses:
+ "200":
+ description: Working hours updated
+ "400":
+ description: Invalid request
+ # ---------------- Billing ----------------
/v1/billing/subscription:
get:
tags: [Billing]
@@ -155,7 +828,7 @@ paths:
$ref: "#/components/schemas/CheckoutSessionRequest"
responses:
"200":
- description: Paddle checkout launch payload
+ description: Stripe checkout session
content:
application/json:
schema:
@@ -191,7 +864,7 @@ paths:
- bearerAuth: []
responses:
"200":
- description: Paddle customer portal session
+ description: Stripe customer portal session
content:
application/json:
schema:
@@ -202,10 +875,10 @@ paths:
description: Unauthorized
"503":
description: Billing provider unavailable
- /v1/webhooks/paddle:
+ /v1/webhooks/stripe:
post:
tags: [Billing]
- operationId: handlePaddleWebhook
+ operationId: handleStripeWebhook
requestBody:
required: true
content:
@@ -215,6 +888,94 @@ paths:
responses:
"200":
description: Webhook accepted
+ "400":
+ description: Invalid signature or payload
+ # ---------------- SMS ----------------
+ /v1/sms/settings:
+ get:
+ tags: [SMS]
+ operationId: getSmsSettings
+ security:
+ - bearerAuth: []
+ responses:
+ "200":
+ description: SMS settings and current-month usage
+ post:
+ tags: [SMS]
+ operationId: updateSmsSettings
+ security:
+ - bearerAuth: []
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ enabled:
+ type: boolean
+ sender:
+ type: string
+ monthlyLimit:
+ type: integer
+ responses:
+ "200":
+ description: SMS settings saved
+ /v1/sms/send:
+ post:
+ tags: [SMS]
+ operationId: sendSms
+ security:
+ - bearerAuth: []
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ required: [to, message]
+ properties:
+ to:
+ type: string
+ message:
+ type: string
+ responses:
+ "200":
+ description: SMS queued
+ /v1/sms/usage:
+ get:
+ tags: [SMS]
+ operationId: getSmsUsage
+ security:
+ - bearerAuth: []
+ parameters:
+ - in: query
+ name: month
+ schema:
+ type: string
+ example: "2026-09"
+ responses:
+ "200":
+ description: Usage for the month
+ /v1/sms/history:
+ get:
+ tags: [SMS]
+ operationId: getSmsHistory
+ security:
+ - bearerAuth: []
+ responses:
+ "200":
+ description: Recent SMS logs
+ /v1/sms/invoices:
+ get:
+ tags: [SMS]
+ operationId: listSmsInvoices
+ security:
+ - bearerAuth: []
+ responses:
+ "200":
+ description: Monthly invoice reports
+ # ---------------- Jobs ----------------
/v1/internal/jobs/reminders/dispatch:
post:
tags: [Jobs]
@@ -236,6 +997,17 @@ paths:
$ref: "#/components/schemas/DispatchReminderJobsResponse"
"401":
description: Unauthorized
+ /v1/internal/jobs/sms/invoices:
+ post:
+ tags: [Jobs]
+ operationId: generateSmsInvoices
+ security:
+ - jobRunnerKey: []
+ responses:
+ "200":
+ description: Monthly SMS invoices generated
+ "401":
+ description: Unauthorized
components:
securitySchemes:
bearerAuth:
@@ -246,6 +1018,33 @@ components:
type: apiKey
in: header
name: X-Bookra-Job-Key
+ adminAuth:
+ type: apiKey
+ in: header
+ name: X-Admin-Key
+ description: Requires matching X-Admin-Email header as well.
+ parameters:
+ locationID:
+ in: path
+ name: locationID
+ required: true
+ schema:
+ type: string
+ format: uuid
+ blockedDayID:
+ in: path
+ name: blockedDayID
+ required: true
+ schema:
+ type: string
+ format: uuid
+ customerID:
+ in: path
+ name: customerID
+ required: true
+ schema:
+ type: string
+ format: uuid
schemas:
HealthResponse:
type: object
@@ -272,6 +1071,25 @@ components:
format: uri
demoMode:
type: boolean
+ AuthResponse:
+ type: object
+ required: [accessToken, refreshToken]
+ properties:
+ accessToken:
+ type: string
+ refreshToken:
+ type: string
+ expiresIn:
+ type: integer
+ user:
+ type: object
+ properties:
+ id:
+ type: string
+ email:
+ type: string
+ name:
+ type: string
TimeSlot:
type: object
required: [startsAt, endsAt, mode]
@@ -367,6 +1185,9 @@ components:
status:
type: string
enum: [confirmed, waitlisted]
+ manageToken:
+ type: string
+ description: Token required to view/reschedule/cancel the booking
DashboardKPI:
type: object
required: [code, label, value]
@@ -412,12 +1233,19 @@ components:
UpcomingBooking:
type: object
properties:
+ id:
+ type: string
+ format: uuid
reference:
type: string
customerName:
type: string
customerEmail:
type: string
+ service:
+ type: string
+ location:
+ type: string
startsAt:
type: string
format: date-time
@@ -428,6 +1256,30 @@ components:
type: string
label:
type: string
+ notes:
+ type: string
+ DashboardBookingRequest:
+ type: object
+ required: [customerName, customerEmail, startsAt]
+ properties:
+ customerName:
+ type: string
+ customerEmail:
+ type: string
+ format: email
+ customerPhone:
+ type: string
+ serviceId:
+ type: string
+ format: uuid
+ locationId:
+ type: string
+ format: uuid
+ startsAt:
+ type: string
+ format: date-time
+ notes:
+ type: string
WidgetSnippet:
type: object
properties:
@@ -457,6 +1309,42 @@ components:
type: string
primaryColor:
type: string
+ UpdateBrandRequest:
+ type: object
+ properties:
+ name:
+ type: string
+ siteUrl:
+ type: string
+ logoUrl:
+ type: string
+ primaryColor:
+ type: string
+ EmailTemplate:
+ type: object
+ properties:
+ type:
+ type: string
+ enum: [confirmation, reminder, reschedule, cancellation]
+ subject:
+ type: string
+ bodyText:
+ type: string
+ isEnabled:
+ type: boolean
+ UpdateEmailTemplateRequest:
+ type: object
+ required: [type]
+ properties:
+ type:
+ type: string
+ enum: [confirmation, reminder, reschedule, cancellation]
+ subject:
+ type: string
+ body:
+ type: string
+ isEnabled:
+ type: boolean
TenantBootstrap:
type: object
required: [tenantId, tenantName, preset, locale, timezone, currentUser]
@@ -561,6 +1449,121 @@ components:
format: email
role:
type: string
+ Location:
+ type: object
+ required: [id, name]
+ properties:
+ id:
+ type: string
+ format: uuid
+ name:
+ type: string
+ type:
+ type: string
+ enum: [room, private, hall]
+ capacity:
+ type: integer
+ address:
+ type: string
+ UpsertLocationRequest:
+ type: object
+ required: [name]
+ properties:
+ name:
+ type: string
+ type:
+ type: string
+ enum: [room, private, hall]
+ capacity:
+ type: integer
+ address:
+ type: string
+ BlockedDay:
+ type: object
+ required: [id, date, type]
+ properties:
+ id:
+ type: string
+ format: uuid
+ date:
+ type: string
+ format: date-time
+ type:
+ type: string
+ enum: [closure, holiday, maintenance]
+ reason:
+ type: string
+ UpsertBlockedDayRequest:
+ type: object
+ required: [date, type]
+ properties:
+ date:
+ type: string
+ format: date-time
+ type:
+ type: string
+ enum: [closure, holiday, maintenance]
+ reason:
+ type: string
+ Customer:
+ type: object
+ required: [id, name, email]
+ properties:
+ id:
+ type: string
+ format: uuid
+ name:
+ type: string
+ email:
+ type: string
+ format: email
+ phone:
+ type: string
+ notes:
+ type: string
+ bookingsCount:
+ type: integer
+ lastBookingAt:
+ type: string
+ format: date-time
+ nullable: true
+ UpsertCustomerRequest:
+ type: object
+ required: [name, email]
+ properties:
+ name:
+ type: string
+ email:
+ type: string
+ format: email
+ phone:
+ type: string
+ notes:
+ type: string
+ WorkingHours:
+ type: object
+ properties:
+ dayOfWeek:
+ type: integer
+ open:
+ type: string
+ example: "09:00"
+ close:
+ type: string
+ example: "18:00"
+ isOpen:
+ type: boolean
+ UpdateWorkingHoursRequest:
+ type: object
+ properties:
+ open:
+ type: string
+ example: "09:00"
+ close:
+ type: string
+ example: "18:00"
+ isOpen:
+ type: boolean
PlanEntitlements:
type: object
required: [maxLocations, maxStaff, emailReminders, advancedReporting, widgetEmbedding, umamiTracking]
@@ -569,6 +1572,8 @@ components:
type: integer
maxStaff:
type: integer
+ maxBookingsMonth:
+ type: integer
emailReminders:
type: boolean
widgetEmbedding:
@@ -586,7 +1591,7 @@ components:
format: uuid
provider:
type: string
- example: paddle
+ example: stripe
customerId:
type: string
subscriptionId:
@@ -676,25 +1681,12 @@ components:
description: Percentage saved with yearly billing
CheckoutLaunchResponse:
type: object
- description: |
- Checkout launch response supporting both Stripe and Paddle providers.
- For Stripe: checkoutUrl is returned (redirect-based checkout).
- For Paddle: priceId, customerId, customerEmail, customData are returned (client-side checkout).
+ description: Stripe checkout launch payload — redirect the user to checkoutUrl.
properties:
checkoutUrl:
type: string
format: uri
description: Stripe checkout URL (redirect the user to this URL)
- priceId:
- type: string
- description: Paddle price ID for client-side checkout
- customerId:
- type: string
- description: Paddle customer ID
- customerEmail:
- type: string
- format: email
- description: Customer email for Paddle checkout
successRedirectUrl:
type: string
format: uri
@@ -703,11 +1695,6 @@ components:
type: string
format: uri
description: URL to redirect after cancelled checkout
- customData:
- type: object
- additionalProperties:
- type: string
- description: Custom metadata for Paddle checkout
PortalSessionResponse:
type: object
required: [url]
diff --git a/apps/backend/sql/bookings.sql b/apps/backend/sql/bookings.sql
deleted file mode 100644
index 1709041..0000000
--- a/apps/backend/sql/bookings.sql
+++ /dev/null
@@ -1,7 +0,0 @@
--- name: ListUpcomingBookingsByTenant :many
-SELECT id, tenant_id, service_id, class_session_id, staff_id, location_id, booking_mode, customer_name, customer_email, starts_at, ends_at, status, reference, notes, created_at, updated_at
-FROM bookings
-WHERE tenant_id = $1 AND starts_at >= now()
-ORDER BY starts_at ASC
-LIMIT $2;
-
diff --git a/apps/backend/sql/tenants.sql b/apps/backend/sql/tenants.sql
deleted file mode 100644
index 3fca78e..0000000
--- a/apps/backend/sql/tenants.sql
+++ /dev/null
@@ -1,10 +0,0 @@
--- name: GetTenantBySlug :one
-SELECT id, slug, name, preset, locale, timezone, plan_code, subscription_status, billing_customer_id, billing_subscription_id, created_at, updated_at
-FROM tenants
-WHERE slug = $1;
-
--- name: ListTenantUsers :many
-SELECT tenant_id, user_id, role, created_at
-FROM tenant_users
-WHERE tenant_id = $1
-ORDER BY created_at ASC;
diff --git a/apps/backend/sqlc.yaml b/apps/backend/sqlc.yaml
deleted file mode 100644
index b8054cc..0000000
--- a/apps/backend/sqlc.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-version: "2"
-sql:
- - engine: "postgresql"
- schema:
- - "./migrations"
- queries:
- - "./sql"
- gen:
- go:
- package: "dbgen"
- out: "./internal/db/dbgen"
- sql_package: "pgx/v5"
- emit_json_tags: true
- emit_prepared_queries: false
- emit_interface: true
-
diff --git a/apps/frontend/.env.example b/apps/frontend/.env.example
index 6bf8aea..50ea4ae 100644
--- a/apps/frontend/.env.example
+++ b/apps/frontend/.env.example
@@ -1,10 +1,13 @@
VITE_BOOKRA_APP_ENV=staging
VITE_BOOKRA_API_URL=http://localhost:8080
+
# Primary production auth path: Neon Auth.
-VITE_NEON_AUTH_URL=https://ep-mute-water-alem1v8u.neonauth.c-3.eu-central-1.aws.neon.tech/neondb/auth
-VITE_PADDLE_ENV=sandbox
-VITE_PADDLE_CLIENT_TOKEN=
+VITE_NEON_AUTH_URL=https://ep-example.neonauth.region.aws.neon.tech/neondb/auth
+
VITE_DEFAULT_LOCALE=cs
# Demo Mode: Set to true to show demo UI indicators
VITE_BOOKRA_DEMO_MODE=false
+
+# Optional error monitoring
+VITE_SENTRY_DSN=
diff --git a/apps/frontend/package.json b/apps/frontend/package.json
index 5c92300..21b1952 100644
--- a/apps/frontend/package.json
+++ b/apps/frontend/package.json
@@ -12,11 +12,9 @@
"dependencies": {
"@bookra/api-client": "0.1.0",
"@bookra/shared-types": "0.1.0",
- "@neondatabase/neon-js": "^0.2.0-beta.1",
- "@paddle/paddle-js": "^1.3.2",
+ "@neondatabase/neon-js": "^0.7.0-beta",
"@sentry/react": "^10.52.0",
"@solidjs/router": "^0.15.3",
- "@stripe/stripe-js": "^4.0.0",
"solid-js": "^1.9.5"
},
"devDependencies": {
diff --git a/apps/frontend/src/components/dashboard/calendar-view.tsx b/apps/frontend/src/components/dashboard/calendar-view.tsx
index 14ffcf0..55f1942 100644
--- a/apps/frontend/src/components/dashboard/calendar-view.tsx
+++ b/apps/frontend/src/components/dashboard/calendar-view.tsx
@@ -83,17 +83,29 @@ export function CalendarView(props: { bookings: any[]; locale?: string; onBookin
return calendarDays().find((d) => d.day === day)?.bookings ?? [];
});
- // Booking visual density for bars
+ const eventDot = (status: string) =>
+ status === "confirmed" ? "bg-accent" : status === "pending" ? "bg-ink-subtle" : "bg-border-strong";
+
+ // Up to two readable event chips, then a "+N" overflow marker.
const getBookingBars = (bookings: any[]) => {
if (bookings.length === 0) return null;
- const count = bookings.length;
- const hasMultiple = count >= 2;
- const hasMany = count >= 3;
+ const visible = bookings.slice(0, 2);
+ const overflow = bookings.length - visible.length;
return (
-
-
- {hasMultiple &&
}
- {hasMany &&
}
+
+
+ {(b) => (
+
+
+
+ {new Date(b.startsAt).toLocaleTimeString(isCs() ? "cs-CZ" : "en-US", { hour: "2-digit", minute: "2-digit" })}
+
+
+ )}
+
+
0}>
+ +{overflow} {isCs() ? "další" : "more"}
+
);
};
@@ -145,29 +157,25 @@ export function CalendarView(props: { bookings: any[]; locale?: string; onBookin
{calendarDays().map(({ day, bookings, isToday }) => {
if (!day) {
- return
;
+ return
;
}
return (
handleDayClick(day)}
class={`
- p-3 min-h-[80px] lg:min-h-[100px] bg-canvas transition-all duration-200 hover:bg-canvas-subtle group relative text-left
- ${isToday ? "ring-2 ring-inset ring-accent bg-accent-soft" : ""}
- ${selectedDay() === day ? "ring-2 ring-inset ring-accent bg-accent-subtle/30" : ""}
- ${bookings.length > 0 && !isToday ? "bg-accent-subtle/10" : ""}
+ p-2 min-h-[80px] lg:min-h-[96px] bg-canvas transition-all duration-200 hover:bg-canvas-subtle group relative text-left flex flex-col
+ ${isToday ? "bg-accent-soft" : ""}
+ ${selectedDay() === day ? "bg-accent-subtle/40" : ""}
`}
>
-
+
{day}
{getBookingBars(bookings)}
- {bookings.length > 0 && (
-
-
- {bookings.length}
-
-
- )}
);
})}
diff --git a/apps/frontend/src/components/dashboard/notification-dropdown.tsx b/apps/frontend/src/components/dashboard/notification-dropdown.tsx
index 221e0a4..03fca7c 100644
--- a/apps/frontend/src/components/dashboard/notification-dropdown.tsx
+++ b/apps/frontend/src/components/dashboard/notification-dropdown.tsx
@@ -26,8 +26,8 @@ export function NotificationDropdown(props: { bookings?: any[]; billing?: any })
id: `booking-${i}`,
type: "booking",
title: `${cs ? "Nová rezervace" : "New booking"} ${b.customerName}`,
- message: `${b.service} — ${new Date(b.startsAt).toLocaleDateString()}`,
- time: new Date(b.startsAt).toLocaleDateString(undefined, { month: "short", day: "numeric" }),
+ message: `${b.service} — ${new Date(b.startsAt).toLocaleDateString(cs ? "cs-CZ" : "en-US")}`,
+ time: new Date(b.startsAt).toLocaleDateString(cs ? "cs-CZ" : "en-US", { month: "short", day: "numeric" }),
read: false,
});
});
diff --git a/apps/frontend/src/components/dashboard/revenue-chart.tsx b/apps/frontend/src/components/dashboard/revenue-chart.tsx
index 974133a..5fdf6e7 100644
--- a/apps/frontend/src/components/dashboard/revenue-chart.tsx
+++ b/apps/frontend/src/components/dashboard/revenue-chart.tsx
@@ -1,32 +1,43 @@
-import { createMemo } from "solid-js";
+import { createMemo, Show } from "solid-js";
import { useI18n } from "../../providers/i18n-provider";
interface DataPoint {
label: string;
+ dateLabel: string;
value: number;
+ isToday: boolean;
+ isFuture: boolean;
}
export function RevenueChart(props: { data?: DataPoint[]; bookings?: any[] }) {
const i18n = useI18n();
+ const isCs = () => i18n.locale() === "cs";
- const chartData = createMemo(() => {
+ const chartData = createMemo
(() => {
if (props.data && props.data.length > 0) return props.data;
- // Build last 7 days from bookings
- const days: DataPoint[] = [];
+ // Bucket bookings into the current calendar week (Mon-Sun) so both
+ // completed and upcoming bookings are visible.
const bookings = props.bookings ?? [];
const today = new Date();
- for (let i = 6; i >= 0; i--) {
- const d = new Date(today);
- d.setDate(d.getDate() - i);
- const dateStr = d.toISOString().split("T")[0];
+ const monday = new Date(today);
+ monday.setDate(today.getDate() - ((today.getDay() + 6) % 7));
+
+ const days: DataPoint[] = [];
+ for (let i = 0; i < 7; i++) {
+ const d = new Date(monday);
+ d.setDate(monday.getDate() + i);
+ const isToday = d.toDateString() === today.toDateString();
const count = bookings.filter((b: any) => {
- const bd = new Date(b.startsAt).toISOString().split("T")[0];
- return bd === dateStr;
+ const bd = new Date(b.startsAt);
+ return bd.getFullYear() === d.getFullYear() && bd.getMonth() === d.getMonth() && bd.getDate() === d.getDate();
}).length;
days.push({
- label: d.toLocaleDateString(i18n.locale() === "cs" ? "cs-CZ" : "en-US", { weekday: "short" }),
+ label: d.toLocaleDateString(isCs() ? "cs-CZ" : "en-US", { weekday: "short" }),
+ dateLabel: d.toLocaleDateString(isCs() ? "cs-CZ" : "en-US", { day: "numeric", month: "numeric" }),
value: count,
+ isToday,
+ isFuture: d > today,
});
}
return days;
@@ -36,34 +47,46 @@ export function RevenueChart(props: { data?: DataPoint[]; bookings?: any[] }) {
const total = createMemo(() => chartData().reduce((s, d) => s + d.value, 0));
return (
-
-
+
+
-
{i18n.t("dashboard.revenueTitle")}
+
{i18n.t("dashboard.revenueTitle")}
{i18n.t("dashboard.revenueSubtitle")}
-
-
{total()}
+
+
{total()}
{i18n.t("dashboard.totalBookings")}
-
- {chartData().map((point, i) => {
+
+ {chartData().map((point) => {
const heightPct = Math.round((point.value / maxValue()) * 100);
return (
-
-
+
+
-
+ class={`w-full rounded-t-lg transition-all duration-300 ${
+ point.isToday
+ ? "bg-accent"
+ : point.isFuture
+ ? "bg-accent/40 group-hover:bg-accent/60"
+ : "bg-accent/70 group-hover:bg-accent"
+ }`}
+ style={{ height: `${Math.max(heightPct, point.value > 0 ? 8 : 3)}%`, "min-height": point.value > 0 ? "6px" : "3px", opacity: point.value === 0 ? 0.15 : 1 }}
+ />
+ 0}>
+
{point.value}
-
-
+
+
+
+
+
+ {point.label}
+
+
{point.dateLabel}
-
{point.label}
);
})}
diff --git a/apps/frontend/src/components/pinned-list.tsx b/apps/frontend/src/components/pinned-list.tsx
index 66a1d7d..8ae25c3 100644
--- a/apps/frontend/src/components/pinned-list.tsx
+++ b/apps/frontend/src/components/pinned-list.tsx
@@ -82,21 +82,21 @@ export function PinnedList(props: PinnedListProps) {
const ItemCard = (p: { item: PinnedListItem; pinned: boolean }) => {
const content = (
-
+
{p.item.icon}
-
{p.item.name}
-
{p.item.subtitle}
+
{p.item.name}
+
{p.item.subtitle}
diff --git a/apps/frontend/src/lib/paddle.ts b/apps/frontend/src/lib/paddle.ts
deleted file mode 100644
index 0aa3fd2..0000000
--- a/apps/frontend/src/lib/paddle.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { initializePaddle, type Paddle } from "@paddle/paddle-js";
-
-const paddleToken = import.meta.env.VITE_PADDLE_CLIENT_TOKEN ?? "";
-const paddleEnvironment = (import.meta.env.VITE_PADDLE_ENV ?? "sandbox").toLowerCase() === "live" ? "production" : "sandbox";
-
-let paddlePromise: Promise
| null = null;
-
-export function paddleConfigured() {
- return paddleToken.trim() !== "";
-}
-
-export async function getPaddle() {
- if (!paddleConfigured()) {
- return undefined;
- }
- if (!paddlePromise) {
- paddlePromise = initializePaddle({
- environment: paddleEnvironment,
- token: paddleToken,
- });
- }
- return paddlePromise;
-}
diff --git a/apps/frontend/src/lib/stripe.ts b/apps/frontend/src/lib/stripe.ts
deleted file mode 100644
index 976c558..0000000
--- a/apps/frontend/src/lib/stripe.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { loadStripe, type Stripe } from "@stripe/stripe-js";
-
-const stripePublishableKey = import.meta.env.VITE_STRIPE_PUBLISHABLE_KEY ?? "";
-
-let stripePromise: Promise | null = null;
-
-export function stripeConfigured() {
- return stripePublishableKey.trim() !== "";
-}
-
-export async function getStripe() {
- if (!stripeConfigured()) {
- return null;
- }
- if (!stripePromise) {
- stripePromise = loadStripe(stripePublishableKey);
- }
- return stripePromise;
-}
diff --git a/apps/frontend/src/providers/i18n-provider.tsx b/apps/frontend/src/providers/i18n-provider.tsx
index 8401875..80da44f 100644
--- a/apps/frontend/src/providers/i18n-provider.tsx
+++ b/apps/frontend/src/providers/i18n-provider.tsx
@@ -348,7 +348,11 @@ const dictionaries = {
"dashboard.onboarding.submit": "Vytvořit prostor",
"dashboard.onboarding.pending": "Vytvářím prostor...",
"dashboard.revenueTitle": "Trend rezervací",
- "dashboard.revenueSubtitle": "Počet rezervací za posledních 7 dní",
+ "dashboard.revenueSubtitle": "Počet rezervací v tomto týdnu",
+ "dashboard.customerStatus.active": "Aktivní",
+ "dashboard.customerStatus.inactive": "Neaktivní",
+ "dashboard.bookingModal.date": "Datum",
+ "dashboard.bookingModal.time": "Čas",
"dashboard.noNotifications": "Žádná nová oznámení",
"dashboard.markAllRead": "Označit vše jako přečtené",
"dashboard.notifications.title": "Oznámení",
@@ -512,7 +516,7 @@ const dictionaries = {
"legal.terms.service.title": "Používání služby",
"legal.terms.service.body": "Službu je nutné používat v souladu se zákonem, bez zneužití rezervačních formulářů, obcházení zabezpečení nebo nahrávání zakázaného obsahu.",
"legal.terms.billing.title": "Předplatné",
- "legal.terms.billing.body": "Placené plány se účtují přes Paddle. Aktivní plán určuje dostupné limity, rozšíření a podpůrné funkce.",
+ "legal.terms.billing.body": "Placené plány se účtují přes Stripe. Aktivní plán určuje dostupné limity, rozšíření a podpůrné funkce.",
},
en: {
// Navigation & Auth
@@ -853,7 +857,11 @@ const dictionaries = {
"dashboard.onboarding.submit": "Create workspace",
"dashboard.onboarding.pending": "Creating workspace...",
"dashboard.revenueTitle": "Booking trend",
- "dashboard.revenueSubtitle": "Bookings over the last 7 days",
+ "dashboard.revenueSubtitle": "Bookings this week",
+ "dashboard.customerStatus.active": "Active",
+ "dashboard.customerStatus.inactive": "Inactive",
+ "dashboard.bookingModal.date": "Date",
+ "dashboard.bookingModal.time": "Time",
"dashboard.noNotifications": "No new notifications",
"dashboard.markAllRead": "Mark all as read",
"dashboard.notifications.title": "Notifications",
@@ -1017,7 +1025,7 @@ const dictionaries = {
"legal.terms.service.title": "Using the service",
"legal.terms.service.body": "The service must be used lawfully, without abusing booking forms, bypassing security, or uploading prohibited content.",
"legal.terms.billing.title": "Subscription",
- "legal.terms.billing.body": "Paid plans are billed through Paddle. The active plan controls limits, add-ons, and support features.",
+ "legal.terms.billing.body": "Paid plans are billed through Stripe. The active plan controls limits, add-ons, and support features.",
},
} satisfies Record>;
diff --git a/apps/frontend/src/routes/dashboard-route.tsx b/apps/frontend/src/routes/dashboard-route.tsx
deleted file mode 100644
index df5daee..0000000
--- a/apps/frontend/src/routes/dashboard-route.tsx
+++ /dev/null
@@ -1,1654 +0,0 @@
-import { Show, For, createResource, createSignal, createMemo, createEffect, type JSX } from "solid-js";
-import { A, useSearchParams } from "@solidjs/router";
-import { apiClient } from "../lib/api-client";
-import { getPaddle, paddleConfigured } from "../lib/paddle";
-import { getStripe, stripeConfigured } from "../lib/stripe";
-import { useAuth } from "../providers/auth-provider";
-import { useI18n } from "../providers/i18n-provider";
-import { useTheme } from "../providers/theme-provider";
-import { BookraCharacter } from "../components/bookra-character";
-import { WidgetBuilder } from "../components/widget-builder";
-import { IntegrationModal } from "../components/integration-modal";
-import { SMSSettings } from "../components/sms-settings";
-import { Select } from "../components/ui/select";
-import { Input } from "../components/ui/input";
-import { Textarea } from "../components/ui/textarea";
-import { RevenueChart } from "../components/dashboard/revenue-chart";
-import { CalendarView } from "../components/dashboard/calendar-view";
-import { NotificationDropdown } from "../components/dashboard/notification-dropdown";
-import type { Section } from "../components/dashboard/types";
-import { getInitials, getBookingDuration } from "../components/dashboard/types";
-import {
- LayoutDashboardIcon, CalendarDaysIcon, CreditCardIcon, Settings2Icon,
- LogOutIcon, MenuIcon, XIcon, TrendingUpIcon, TrendingDownIcon,
- ClockIcon, CheckCircleIcon, AlertCircleIcon, MoreHorizontalIcon,
- ChevronLeftIcon, ChevronRightIcon, SparklesIcon, BellIcon, PlusIcon,
- UsersIcon, UserCircleIcon, MapPinIcon, BarChart3Icon, CheckIcon,
- SunIcon, MoonIcon, GlobeIcon, PaletteIcon, MailIcon, XCircleIcon,
- BanIcon, ClockOffIcon, Trash2Icon, EditIcon, EyeIcon
-} from "../components/dashboard/icons";
-
-// ============================================
-// DEMO DATA
-// ============================================
-function createDemoData(i18n: ReturnType) {
- const cs = i18n.locale() === "cs";
- const now = new Date();
- const fmt = (d: Date) => d.toISOString();
- const addDays = (n: number) => { const d = new Date(now); d.setDate(d.getDate() + n); return d; };
- const addHours = (d: Date, h: number) => { const r = new Date(d); r.setHours(r.getHours() + h); return r; };
-
- const services = cs
- ? ["Masaz", "Kosmetika", "Fyzioterapie", "Manikura"]
- : ["Massage", "Cosmetics", "Physiotherapy", "Manicure"];
- const customers = [
- { name: cs ? "Martina Novakova" : "Martina Novakova", email: "martina@example.com" },
- { name: cs ? "David Svoboda" : "David Svoboda", email: "david@example.com" },
- { name: cs ? "Jana KovarovA" : "Jana KovarovA", email: "jana@example.com" },
- { name: cs ? "Alice Johnson" : "Alice Johnson", email: "alice@example.com" },
- { name: cs ? "Bob Smith" : "Bob Smith", email: "bob@example.com" },
- ];
-
- const allBookings = [
- { id: "b1", customerName: customers[0].name, customerEmail: customers[0].email, service: services[0], status: "confirmed", startsAt: fmt(addHours(addDays(0), 10)), endsAt: fmt(addHours(addDays(0), 11)), reference: "BOK-001", location: cs ? "Hlavni salon" : "Main Salon", staffName: cs ? "Petra M." : "Petra M.", notes: "" },
- { id: "b2", customerName: customers[1].name, customerEmail: customers[1].email, service: services[1], status: "pending", startsAt: fmt(addHours(addDays(1), 14)), endsAt: fmt(addHours(addDays(1), 15)), reference: "BOK-002", location: cs ? "Hlavni salon" : "Main Salon", staffName: cs ? "Lucie K." : "Lucie K.", notes: "" },
- { id: "b3", customerName: customers[2].name, customerEmail: customers[2].email, service: services[2], status: "confirmed", startsAt: fmt(addHours(addDays(2), 9)), endsAt: fmt(addHours(addDays(2), 10)), reference: "BOK-003", location: cs ? "Studio B" : "Studio B", staffName: "", notes: cs ? "Bolest zad" : "Back pain" },
- { id: "b4", customerName: customers[3].name, customerEmail: customers[3].email, service: services[3], status: "cancelled", startsAt: fmt(addHours(addDays(-1), 11)), endsAt: fmt(addHours(addDays(-1), 12)), reference: "BOK-004", location: cs ? "Hlavni salon" : "Main Salon", staffName: cs ? "Petra M." : "Petra M.", notes: "" },
- { id: "b5", customerName: customers[4].name, customerEmail: customers[4].email, service: services[0], status: "completed", startsAt: fmt(addHours(addDays(-2), 13)), endsAt: fmt(addHours(addDays(-2), 14)), reference: "BOK-005", location: cs ? "Studio B" : "Studio B", staffName: cs ? "Lucie K." : "Lucie K.", notes: "" },
- { id: "b6", customerName: customers[0].name, customerEmail: customers[0].email, service: services[1], status: "confirmed", startsAt: fmt(addHours(addDays(3), 10)), endsAt: fmt(addHours(addDays(3), 11)), reference: "BOK-006", location: cs ? "Hlavni salon" : "Main Salon", staffName: cs ? "Petra M." : "Petra M.", notes: "" },
- { id: "b7", customerName: customers[1].name, customerEmail: customers[1].email, service: services[2], status: "confirmed", startsAt: fmt(addHours(addDays(0), 16)), endsAt: fmt(addHours(addDays(0), 17)), reference: "BOK-007", location: cs ? "Studio B" : "Studio B", staffName: "", notes: "" },
- { id: "b8", customerName: customers[2].name, customerEmail: customers[2].email, service: services[3], status: "pending", startsAt: fmt(addHours(addDays(4), 9)), endsAt: fmt(addHours(addDays(4), 10)), reference: "BOK-008", location: cs ? "Hlavni salon" : "Main Salon", staffName: cs ? "Lucie K." : "Lucie K.", notes: "" },
- { id: "b9", customerName: customers[3].name, customerEmail: customers[3].email, service: services[0], status: "confirmed", startsAt: fmt(addHours(addDays(5), 11)), endsAt: fmt(addHours(addDays(5), 12)), reference: "BOK-009", location: cs ? "Hlavni salon" : "Main Salon", staffName: cs ? "Petra M." : "Petra M.", notes: "" },
- { id: "b10", customerName: customers[4].name, customerEmail: customers[4].email, service: services[1], status: "completed", startsAt: fmt(addHours(addDays(-3), 10)), endsAt: fmt(addHours(addDays(-3), 11)), reference: "BOK-010", location: cs ? "Studio B" : "Studio B", staffName: "", notes: "" },
- ];
-
- return {
- summary: {
- tenantName: cs ? "Demo Studio" : "Demo Studio",
- tenantSlug: "demo-studio",
- publicBookingUrl: "http://localhost:3000/book/demo-studio",
- kpis: [
- { label: i18n.t("dashboard.kpi.bookings"), value: 42, change: "+12%", trend: "up" },
- { label: i18n.t("dashboard.kpi.cancelled"), value: 3, change: "-5%", trend: "down" },
- { label: i18n.t("dashboard.kpi.completed"), value: 38, change: "+8%", trend: "up" },
- { label: i18n.t("dashboard.kpi.newClients"), value: 12, change: "+24%", trend: "up" },
- ],
- staff: [{ id: "s1", name: cs ? "Petra M." : "Petra M.", role: cs ? "Specialista" : "Specialist", email: "petra@demo.cz" }],
- upcomingBookings: allBookings.filter(b => b.status !== "cancelled" && b.status !== "completed"),
- allBookings,
- recentActivity: [
- { action: cs ? "Nova rezervace" : "New booking", detail: `${customers[0].name} - ${services[0]}`, time: cs ? "Dnes, 10:00" : "Today, 10:00", type: "booking" },
- { action: cs ? "Zruseni rezervace" : "Booking cancelled", detail: `${customers[3].name} - ${services[3]}`, time: cs ? "Vcera" : "Yesterday", type: "cancel" },
- { action: cs ? "Dokoncena rezervace" : "Booking completed", detail: `${customers[4].name} - ${services[1]}`, time: cs ? "Pred 2 dny" : "2 days ago", type: "reminder" },
- ],
- },
- bootstrap: {
- tenantName: cs ? "Demo Studio" : "Demo Studio",
- slug: "demo-studio",
- brand: { primaryColor: "#c25e3a" },
- locale: cs ? "cs" : "en",
- timezone: "Europe/Prague",
- },
- billing: {
- planCode: "pro",
- planName: "Pro",
- subscriptionStatus: "trialing",
- trialDaysRemaining: 12,
- entitlements: { maxLocations: 3, maxBookings: -1, maxStaff: 10 },
- billingProvider: "stripe",
- },
- };
-}
-
-// ============================================
-// KPI CARD
-// ============================================
-function KpiCard(props: { kpi: any; index: number }) {
- const trend = () => props.kpi.trend ?? "neutral";
- const trendClass = () => {
- switch (trend()) {
- case "up": return "bg-canvas-muted text-accent";
- case "down": return "bg-canvas-muted text-ink-muted";
- default: return "bg-canvas-muted text-ink-muted";
- }
- };
- return (
-
-
-
-
{props.kpi.label}
-
{props.kpi.value}
-
-
- {trend() === "up" ? : trend() === "down" ? : }
- {props.kpi.change ?? "—"}
-
-
-
- {[30, 55, 40, 70, 50, 65, 85, 60, 75, 90].map((h, i) => (
-
- ))}
-
-
- );
-}
-
-// ============================================
-// ACTIVITY TIMELINE
-// ============================================
-function ActivityTimeline(props: { activities: any[] }) {
- const i18n = useI18n();
- const getIcon = (type: string) => {
- const base = "w-8 h-8 rounded-full flex items-center justify-center shrink-0";
- switch (type) {
- case "booking": return
;
- case "cancel": return
;
- case "client": return
;
- case "reschedule": return
;
- case "reminder": return
;
- default: return
;
- }
- };
- return (
-
-
{i18n.t("dashboard.recentActivity")}
-
0} fallback={
-
-
{i18n.t("dashboard.recentActivity.empty")}
-
- }>
-
- {props.activities.map((activity, index) => (
-
- {index < props.activities.length - 1 && (
-
- )}
-
- {getIcon(activity.type)}
-
-
-
-
-
{activity.action}
-
{activity.detail}
-
-
{activity.time}
-
-
-
- ))}
-
-
-
- );
-}
-
-export function DashboardRoute() {
- const i18n = useI18n();
- const auth = useAuth();
- const theme = useTheme();
- const isDark = () => theme.resolvedTheme() === "dark";
- const [searchParams, setSearchParams] = useSearchParams();
- const initialTab = () => {
- const t = searchParams["tab"];
- const tab = Array.isArray(t) ? t[0] : t;
- const validTabs: Section[] = ["overview", "bookings", "customers", "zones", "billing", "settings", "analytics"];
- return validTabs.includes(tab as Section) ? (tab as Section) : "overview";
- };
- const [activeSection, setActiveSection] = createSignal(initialTab());
- const [isMobileMenuOpen, setIsMobileMenuOpen] = createSignal(false);
- const [isPageTransitioning, setIsPageTransitioning] = createSignal(false);
- const [billingNotice, setBillingNotice] = createSignal(null);
- const [billingError, setBillingError] = createSignal(null);
- const [billingAction, setBillingAction] = createSignal<"checkout" | "refresh" | "portal" | null>(null);
- const [handledBillingState, setHandledBillingState] = createSignal(null);
- const [showIntegrationModal, setShowIntegrationModal] = createSignal(false);
- const [billingInterval, setBillingInterval] = createSignal<"monthly" | "yearly">("monthly");
- const [demoNotice, setDemoNotice] = createSignal(null);
- const [token] = createResource(() => auth.session()?.session?.id, () => auth.getToken());
-
- const isDemoMode = () => token()?.startsWith("demo.") ?? false;
- const demoData = createMemo(() => createDemoData(i18n));
-
- const [summary] = createResource(token, async (bearer) => {
- if (!bearer) return null;
- if (bearer.startsWith("demo.")) return demoData().summary;
- const response = await apiClient.GET("/v1/dashboard/summary", { headers: { Authorization: `Bearer ${bearer}` } });
- return response.data ?? null;
- });
-
- const [bootstrap] = createResource(token, async (bearer) => {
- if (!bearer) return null;
- if (bearer.startsWith("demo.")) return demoData().bootstrap;
- const response = await apiClient.GET("/v1/tenants/bootstrap", { headers: { Authorization: `Bearer ${bearer}` } });
- return response.data ?? null;
- });
-
- const [billing, { refetch: refetchBilling }] = createResource(token, async (bearer) => {
- if (!bearer) return null;
- if (bearer.startsWith("demo.")) return demoData().billing;
- const response = await apiClient.GET("/v1/billing/subscription", { headers: { Authorization: `Bearer ${bearer}` } });
- return response.data ?? null;
- });
-
- const [locationData] = createResource(token, async (bearer) => {
- if (!bearer) return 0;
- if (bearer.startsWith("demo.")) return 1;
- try {
- const response = await (apiClient as any).GET("/v1/catalog/locations", { headers: { Authorization: `Bearer ${bearer}` } });
- return (response.data as any[])?.length ?? 0;
- } catch { return 0; }
- });
-
- const [smsUsage] = createResource(token, async (bearer) => {
- if (!bearer || bearer.startsWith("demo.")) return null;
- try {
- const response = await (apiClient as any).GET("/v1/sms/usage", { headers: { Authorization: `Bearer ${bearer}` } });
- return response.data as any ?? null;
- } catch { return null; }
- });
-
- const resolvedSummary = () => (summary.latest as any) ?? (isDemoMode() ? demoData().summary : undefined);
- const resolvedBootstrap = () => (bootstrap.latest as any) ?? (isDemoMode() ? demoData().bootstrap : undefined);
- const resolvedBilling = () => (billing.latest as any) ?? (isDemoMode() ? demoData().billing : undefined);
-
- const normalizedKpis = createMemo(() => (resolvedSummary()?.kpis ?? []).map((kpi: any) => ({
- ...kpi, trend: kpi.trend ?? "neutral", change: kpi.change ?? "—",
- })));
-
- const normalizedUpcomingBookings = createMemo(() => (resolvedSummary()?.upcomingBookings ?? []).map((booking: any) => ({
- ...booking,
- avatar: booking.avatar ?? getInitials(booking.customerName),
- service: booking.service ?? booking.label ?? booking.reference ?? (i18n.locale() === "cs" ? "Rezervace" : "Booking"),
- duration: booking.duration ?? getBookingDuration(booking.startsAt, booking.endsAt),
- })));
-
- const normalizedRecentActivity = createMemo(() => {
- if (resolvedSummary()?.recentActivity?.length) return resolvedSummary().recentActivity;
- return normalizedUpcomingBookings().slice(0, 5).map((booking: any) => ({
- action: i18n.locale() === "cs" ? "Nadchazejici rezervace" : "Upcoming booking",
- detail: `${booking.customerName} • ${booking.service}`,
- time: new Date(booking.startsAt).toLocaleDateString(undefined, { month: "short", day: "numeric" }),
- type: "booking",
- }));
- });
-
- const normalizedAllBookings = createMemo(() => resolvedSummary()?.allBookings ?? normalizedUpcomingBookings());
-
- const isDashboardReady = () => !!token() && !bootstrap.loading && !summary.loading && !billing.loading;
-
- const changeSection = (section: Section) => {
- if (section === activeSection()) return;
- setIsPageTransitioning(true);
- setTimeout(() => { setActiveSection(section); setIsPageTransitioning(false); }, 150);
- setSearchParams({ tab: section });
- };
-
- const openCheckout = async () => {
- const bearer = token();
- if (!bearer || bearer.startsWith("demo.")) { setDemoNotice(i18n.locale() === "cs" ? "V demo rezimu nelze upravovat predplatne." : "Cannot modify billing in demo mode."); return; }
- setBillingAction("checkout");
- setBillingError(null);
- try {
- const response = await (apiClient as any).POST("/v1/billing/checkout", {
- headers: { Authorization: `Bearer ${bearer}` },
- body: { interval: billingInterval() },
- });
- if (response.data?.url) window.location.href = response.data.url;
- else throw new Error("No checkout URL");
- } catch (err) { setBillingError(err instanceof Error ? err.message : String(err)); }
- finally { setBillingAction(null); }
- };
-
- const openPortal = async () => {
- const bearer = token();
- if (!bearer || bearer.startsWith("demo.")) { setDemoNotice(i18n.locale() === "cs" ? "V demo rezimu nelze upravovat predplatne." : "Cannot modify billing in demo mode."); return; }
- setBillingAction("portal");
- setBillingError(null);
- try {
- const response = await (apiClient as any).POST("/v1/billing/portal", { headers: { Authorization: `Bearer ${bearer}` } });
- if (response.data?.url) window.location.href = response.data.url;
- else throw new Error("No portal URL");
- } catch (err) { setBillingError(err instanceof Error ? err.message : String(err)); }
- finally { setBillingAction(null); }
- };
-
- const refreshBilling = async () => {
- const bearer = token();
- if (!bearer || bearer.startsWith("demo.")) { setDemoNotice(i18n.locale() === "cs" ? "V demo rezimu nelze obnovit predplatne." : "Cannot refresh billing in demo mode."); return; }
- setBillingAction("refresh");
- setBillingError(null);
- try {
- const response = await (apiClient as any).POST("/v1/billing/refresh", { headers: { Authorization: `Bearer ${bearer}` } });
- if (response.data) { setBillingNotice(i18n.locale() === "cs" ? "Predplatne obnoveno." : "Billing refreshed."); void refetchBilling(); }
- } catch (err) { setBillingError(err instanceof Error ? err.message : String(err)); }
- finally { setBillingAction(null); }
- };
-
- createEffect(() => {
- const t = searchParams["tab"];
- const tab = Array.isArray(t) ? t[0] : t;
- const validTabs: Section[] = ["overview", "bookings", "customers", "zones", "billing", "settings", "analytics"];
- if (tab && validTabs.includes(tab as Section) && tab !== activeSection()) {
- setIsPageTransitioning(true);
- setTimeout(() => { setActiveSection(tab as Section); setIsPageTransitioning(false); }, 150);
- }
- });
-
- createEffect(() => {
- const state = Array.isArray(searchParams["billing"]) ? searchParams["billing"][0] : searchParams["billing"];
- if (state && state !== handledBillingState()) {
- setHandledBillingState(state);
- if (state === "success") setBillingNotice(i18n.locale() === "cs" ? "Platba uspesna! Vase predplatne je aktivni." : "Payment successful! Your subscription is active.");
- else if (state === "cancelled") setBillingNotice(i18n.locale() === "cs" ? "Platba byla zrusena." : "Payment was cancelled.");
- }
- });
-
- const navItems = [
- { id: "overview" as Section, label: i18n.t("dashboard.overview"), icon: LayoutDashboardIcon },
- { id: "bookings" as Section, label: i18n.t("dashboard.bookings"), icon: CalendarDaysIcon },
- { id: "customers" as Section, label: i18n.t("dashboard.customers"), icon: UserCircleIcon },
- { id: "zones" as Section, label: i18n.t("dashboard.zones"), icon: MapPinIcon },
- { id: "billing" as Section, label: i18n.t("dashboard.billing"), icon: CreditCardIcon },
- { id: "analytics" as Section, label: i18n.locale() === "cs" ? "Analytika" : "Analytics", icon: BarChart3Icon },
- { id: "settings" as Section, label: i18n.t("dashboard.settings"), icon: Settings2Icon },
- ];
-
- const LanguageToggle = () => (
- i18n.toggleLocale()}
- class="flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-ink-muted hover:text-ink hover:bg-canvas-subtle rounded-lg transition-all"
- title={i18n.t("dashboard.language")}
- >
-
- {i18n.locale() === "cs" ? "CS" : "EN"}
-
- );
-
- const ThemeToggle = () => (
- theme.toggle()}
- class="p-2 text-ink-subtle hover:text-ink hover:bg-canvas-subtle rounded-xl transition-all"
- aria-label="Toggle theme"
- >
- {theme.resolvedTheme() === "dark" ? : }
-
- );
-
- const DemoBanner = () => (
-
-
-
-
-
-
{i18n.t("dashboard.demoBanner")}
-
{i18n.t("dashboard.demoBannerDesc")}
-
-
-
window.dispatchEvent(new CustomEvent("openAuthDialog", { detail: { mode: "register" } }))}
- class="shrink-0 ml-4 px-4 py-2 bg-accent text-canvas text-sm font-medium rounded-lg hover:bg-accent-hover transition-colors"
- >
- {i18n.t("dashboard.demoBannerCTA")}
-
-
-
- );
-
- const Sidebar = () => (
-
- );
-
- const MobileMenu = () => (
-
-
-
setIsMobileMenuOpen(false)} />
-
-
-
- );
-
- const [showBookingDetail, setShowBookingDetail] = createSignal(false);
- const [selectedBooking, setSelectedBooking] = createSignal
(null);
-
- const openBookingDetail = (booking: any) => {
- setSelectedBooking(booking);
- setShowBookingDetail(true);
- };
-
- const BookingDetailModal = () => (
-
-
-
setShowBookingDetail(false)} />
-
-
-
{i18n.t("dashboard.bookingDetails")}
- setShowBookingDetail(false)} class="p-2 hover:bg-canvas-subtle rounded-lg transition-colors" aria-label={i18n.t("dashboard.close")}>
-
-
-
-
-
-
- {getInitials(selectedBooking()?.customerName)}
-
-
-
{selectedBooking()?.customerName}
-
{selectedBooking()?.customerEmail}
-
-
-
-
-
{i18n.t("dashboard.bookingModal.service")}
-
{selectedBooking()?.service}
-
-
-
{i18n.t("dashboard.bookingModal.location")}
-
{selectedBooking()?.location || "—"}
-
-
-
{i18n.t("dashboard.bookingModal.assignedTo")}
-
{i18n.t("dashboard.bookingModal.noAssign")}}>
-
-
- {selectedBooking()?.staffName?.split(" ").map((n: string) => n[0]).join("")}
-
-
{selectedBooking()?.staffName}
-
-
-
-
-
-
{i18n.t("dashboard.bookingModal.dateTime")}
-
- {new Date(selectedBooking()?.startsAt).toLocaleString(undefined, { weekday: "long", year: "numeric", month: "long", day: "numeric", hour: "2-digit", minute: "2-digit" })}
-
-
{i18n.t("dashboard.bookingModal.duration")}: {getBookingDuration(selectedBooking()?.startsAt, selectedBooking()?.endsAt)}
-
-
-
-
{i18n.t("dashboard.bookingModal.reference")}
-
{selectedBooking()?.reference}
-
-
- {i18n.t(`dashboard.${selectedBooking()?.status}`)}
-
-
-
-
-
{i18n.t("dashboard.bookingModal.notes")}
-
{selectedBooking()?.notes}
-
-
-
-
-
-
- );
-
-
- // ==========================================
- const OverviewPage = () => (
-
- {/* Header */}
-
-
-
- {i18n.t("dashboard.welcome")} {auth.session()?.user?.name}
-
-
{i18n.t("dashboard.overviewFor")} {resolvedBootstrap()?.tenantName}
-
-
-
setShowIntegrationModal(true)} class="btn-secondary text-sm">
-
-
-
- {i18n.t("dashboard.shareManage")}
-
-
{new Date().toLocaleDateString(i18n.locale() === "cs" ? "cs-CZ" : "en-US", { weekday: "long", month: "long", day: "numeric", hour: "2-digit", minute: "2-digit" })}
-
-
-
-
- {/* KPI Cards */}
-
- {normalizedKpis().map((kpi: any, index: number) => (
-
- ))}
-
-
- {/* SMS Usage */}
- {(() => {
- const usage = smsUsage.latest;
- if (!usage || usage.messageCount === 0) return null;
- return (
-
-
-
-
-
-
-
-
SMS {i18n.t("dashboard.billing.planUsage")}
-
{usage.messageCount} messages — {(usage.totalCostCents / 100).toFixed(2)} Kc
-
-
-
changeSection("settings")} class="text-sm font-medium text-accent hover:text-accent-hover transition-colors">
- {i18n.t("dashboard.settings")}
-
-
-
- );
- })()}
-
- {/* Plan Limit Warning */}
- {(() => {
- const entitlements = resolvedBilling()?.entitlements;
- const limit = entitlements?.maxLocations ?? -1;
- const count = locationData() ?? 0;
- const isNear = limit > 0 && count >= limit * 0.8;
- const isAt = limit > 0 && count >= limit;
- if (!isNear && !isAt) return null;
- return (
-
-
-
-
-
-
-
{isAt ? i18n.t("dashboard.locationLimitReached") : i18n.t("dashboard.nearingLocationLimit")}
-
{i18n.t("dashboard.locationsUsed")} {count}/{limit === -1 ? "∞" : limit}
-
-
void openCheckout()} class="px-4 py-2 text-sm font-medium rounded-lg bg-accent text-canvas hover:bg-accent-hover transition-colors shrink-0">
- {i18n.t("dashboard.upgrade")}
-
-
-
- );
- })()}
-
- {/* Revenue Chart + Calendar + Activity */}
-
-
- {/* Upcoming Bookings */}
-
-
-
-
{i18n.t("dashboard.upcomingBookings")}
-
{normalizedUpcomingBookings().length} total
-
-
changeSection("bookings")} class="inline-flex items-center gap-2 px-4 py-2 text-sm font-medium text-accent hover:text-accent-hover hover:bg-accent-subtle rounded-xl transition-all">
- {i18n.t("dashboard.viewAll")}
-
-
-
- {normalizedUpcomingBookings().slice(0, 5).map((booking: any) => (
-
openBookingDetail(booking)}
- class="w-full text-left flex items-center gap-4 p-4 rounded-xl border border-border/60 hover:border-accent/30 hover:bg-accent-subtle/20 transition-all group"
- >
-
- {getInitials(booking.customerName)}
-
-
-
{booking.customerName}
-
{booking.service} • {booking.duration}
-
-
-
{new Date(booking.startsAt).toLocaleDateString(undefined, { month: "short", day: "numeric" })}
-
- {i18n.t(`dashboard.${booking.status}`)}
-
-
-
- ))}
-
-
-
- );
-
- // ==========================================
- // BOOKINGS PAGE
- // ==========================================
- const BookingsPage = () => {
- const [filterStatus, setFilterStatus] = createSignal<"all" | "confirmed" | "pending" | "cancelled" | "completed">("all");
- const [filterDateRange, setFilterDateRange] = createSignal<"all" | "today" | "week" | "month">("all");
- const [searchQuery, setSearchQuery] = createSignal("");
- const [showNewBooking, setShowNewBooking] = createSignal(false);
- const [creatingBooking, setCreatingBooking] = createSignal(false);
-
- const [newBookingCustomer, setNewBookingCustomer] = createSignal("");
- const [newBookingEmail, setNewBookingEmail] = createSignal("");
- const [newBookingService, setNewBookingService] = createSignal("");
- const [newBookingDate, setNewBookingDate] = createSignal("");
- const [newBookingTime, setNewBookingTime] = createSignal("");
- const [newBookingNotes, setNewBookingNotes] = createSignal("");
-
- const resolvedAllBookings = () => (summary.latest as any)?.allBookings ?? (isDemoMode() ? demoData().summary.allBookings : []) ?? [];
-
- const filteredBookings = createMemo(() => {
- let bookings = resolvedAllBookings();
- if (filterStatus() !== "all") bookings = bookings.filter((b: any) => b.status === filterStatus());
- const now = new Date();
- if (filterDateRange() === "today") bookings = bookings.filter((b: any) => new Date(b.startsAt).toDateString() === now.toDateString());
- else if (filterDateRange() === "week") {
- const weekEnd = new Date(now.getTime() + 7 * 24 * 60 * 60 * 1000);
- bookings = bookings.filter((b: any) => { const d = new Date(b.startsAt); return d >= now && d <= weekEnd; });
- } else if (filterDateRange() === "month") {
- const monthEnd = new Date(now.getTime() + 30 * 24 * 60 * 60 * 1000);
- bookings = bookings.filter((b: any) => { const d = new Date(b.startsAt); return d >= now && d <= monthEnd; });
- }
- if (searchQuery().trim()) {
- const q = searchQuery().toLowerCase();
- bookings = bookings.filter((b: any) =>
- b.customerName?.toLowerCase().includes(q) ||
- b.service?.toLowerCase().includes(q) ||
- b.reference?.toLowerCase().includes(q)
- );
- }
- return bookings.sort((a: any, b: any) => new Date(b.startsAt).getTime() - new Date(a.startsAt).getTime());
- });
-
- const bookingStats = createMemo(() => {
- const bookings = resolvedAllBookings();
- return {
- total: bookings.length,
- confirmed: bookings.filter((b: any) => b.status === "confirmed").length,
- pending: bookings.filter((b: any) => b.status === "pending").length,
- cancelled: bookings.filter((b: any) => b.status === "cancelled").length,
- completed: bookings.filter((b: any) => b.status === "completed").length,
- };
- });
-
- const handleCreateBooking = async () => {
- const bearer = token();
- if (!bearer || bearer.startsWith("demo.")) {
- setDemoNotice(i18n.locale() === "cs" ? "V demo rezimu nelze vytvaret rezervace." : "Cannot create bookings in demo mode.");
- setShowNewBooking(false); return;
- }
- setCreatingBooking(true);
- try {
- await (apiClient as any).POST("/v1/catalog/bookings", {
- headers: { Authorization: `Bearer ${bearer}` },
- body: {
- customerName: newBookingCustomer(), customerEmail: newBookingEmail(), service: newBookingService(),
- startsAt: new Date(`${newBookingDate()}T${newBookingTime()}`).toISOString(), notes: newBookingNotes()
- }
- });
- setNewBookingCustomer(""); setNewBookingEmail(""); setNewBookingService(""); setNewBookingDate(""); setNewBookingTime(""); setNewBookingNotes("");
- setShowNewBooking(false);
- } catch { setDemoNotice(i18n.locale() === "cs" ? "Vytvoreni rezervace selhalo." : "Failed to create booking."); }
- finally { setCreatingBooking(false); }
- };
-
- const statusLabels: Record
= {
- confirmed: i18n.t("dashboard.confirmed"), pending: i18n.t("dashboard.pending"),
- cancelled: i18n.t("dashboard.cancelled"), completed: i18n.t("dashboard.completed")
- };
-
- return (
-
-
-
-
{i18n.t("dashboard.bookingManagement")}
-
{bookingStats().total} {i18n.t("dashboard.totalBookings")}
-
-
setShowNewBooking(true)} class="btn-primary text-sm shrink-0">
- {i18n.t("dashboard.newBooking")}
-
-
-
- {/* Stats */}
-
- {[
- { key: "confirmed", label: i18n.t("dashboard.confirmed"), value: bookingStats().confirmed },
- { key: "pending", label: i18n.t("dashboard.pending"), value: bookingStats().pending },
- { key: "cancelled", label: i18n.t("dashboard.cancelled"), value: bookingStats().cancelled },
- { key: "completed", label: i18n.t("dashboard.completed"), value: bookingStats().completed },
- ].map((s) => (
-
setFilterStatus(s.key as any)} class={`surface-card p-4 text-left transition-all hover:shadow-md ${filterStatus() === s.key ? "ring-2 ring-accent" : ""}`}>
- {s.label}
- {s.value}
-
- ))}
-
-
- {/* Filters */}
-
-
- setSearchQuery(e.currentTarget.value)} />
-
-
- setFilterStatus(v as any)} options={[
- { value: "all", label: i18n.t("dashboard.filter.all") },
- { value: "confirmed", label: i18n.t("dashboard.confirmed") },
- { value: "pending", label: i18n.t("dashboard.pending") },
- { value: "cancelled", label: i18n.t("dashboard.cancelled") },
- { value: "completed", label: i18n.t("dashboard.completed") },
- ]} />
- setFilterDateRange(v as any)} options={[
- { value: "all", label: i18n.t("dashboard.filter.all") },
- { value: "today", label: i18n.t("dashboard.filter.today") },
- { value: "week", label: i18n.t("dashboard.filter.week") },
- { value: "month", label: i18n.t("dashboard.filter.month") },
- ]} />
-
-
-
- {/* Bookings List */}
-
-
0} fallback={
-
-
-
-
-
{i18n.t("dashboard.empty.title")}
-
{i18n.t("dashboard.empty.bookingsDesc")}
-
- }>
-
- {filteredBookings().map((booking: any) => (
-
-
- {getInitials(booking.customerName)}
-
-
-
{booking.customerName}
-
{booking.service} • {new Date(booking.startsAt).toLocaleDateString()} {new Date(booking.startsAt).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" })}
-
-
-
- {statusLabels[booking.status]}
-
- openBookingDetail(booking)} class="p-2 text-ink-muted hover:text-accent hover:bg-accent-subtle rounded-lg transition-colors" title={i18n.t("dashboard.details")}>
-
-
-
-
- ))}
-
-
-
-
- {/* New Booking Modal */}
-
-
-
setShowNewBooking(false)} />
-
-
-
{i18n.t("dashboard.newBooking")}
- setShowNewBooking(false)} class="p-2 hover:bg-canvas-subtle rounded-lg transition-colors">
-
-
-
- setShowNewBooking(false)} class="flex-1 px-4 py-2.5 border border-border rounded-xl text-ink hover:bg-canvas-subtle transition-colors">{i18n.t("common.cancel")}
-
-
- {creatingBooking() ? i18n.t("dashboard.creating") : i18n.t("dashboard.createBooking")}
-
-
-
-
-
-
- );
- };
-
-
- // ==========================================
- // CUSTOMERS PAGE
- // ==========================================
- const CustomersPage = () => {
- const [searchQuery, setSearchQuery] = createSignal("");
- const [selectedCustomer, setSelectedCustomer] = createSignal(null);
- const [showCustomerDetail, setShowCustomerDetail] = createSignal(false);
-
- const demoCustomers = [
- { id: "1", name: "Martina Novakova", email: "martina@example.com", phone: "+420 123 456 789", bookingsCount: 5, lastBookingAt: new Date(Date.now() - 86400000).toISOString(), status: "active", notes: "Alergie na silne vune" },
- { id: "2", name: "David Svoboda", email: "david@example.com", phone: "+420 987 654 321", bookingsCount: 3, lastBookingAt: new Date(Date.now() - 172800000).toISOString(), status: "active", notes: "" },
- { id: "3", name: "Jana KovarovA", email: "jana@example.com", phone: "+420 555 666 777", bookingsCount: 8, lastBookingAt: new Date(Date.now() - 259200000).toISOString(), status: "vip", notes: "Uprednostnuje ranni terminy" },
- { id: "4", name: "Alice Johnson", email: "alice@example.com", phone: "+420 111 222 333", bookingsCount: 1, lastBookingAt: new Date(Date.now() - 604800000).toISOString(), status: "inactive", notes: "" },
- { id: "5", name: "Bob Smith", email: "bob@example.com", phone: "+420 444 555 666", bookingsCount: 12, lastBookingAt: new Date(Date.now() - 432000000).toISOString(), status: "vip", notes: "Loyal customer" },
- ];
-
- const resolvedCustomers = () => demoCustomers;
- const resolvedBookings = () => normalizedAllBookings();
-
- const filteredCustomers = createMemo(() => {
- let result = resolvedCustomers();
- if (searchQuery().trim()) {
- const q = searchQuery().toLowerCase();
- result = result.filter((c: any) => c.name?.toLowerCase().includes(q) || c.email?.toLowerCase().includes(q) || c.phone?.toLowerCase().includes(q));
- }
- return result.sort((a: any, b: any) => new Date(b.lastBookingAt || 0).getTime() - new Date(a.lastBookingAt || 0).getTime());
- });
-
- const getCustomerBookings = (email: string) => {
- return resolvedBookings().filter((b: any) => b.customerEmail?.toLowerCase() === email?.toLowerCase()).sort((a: any, b: any) => new Date(b.startsAt).getTime() - new Date(a.startsAt).getTime());
- };
-
- const statusBadge = (status: string) => {
- switch (status) {
- case "active": return {i18n.t("dashboard.filter.all")} ;
- case "vip": return VIP ;
- default: return {i18n.t("dashboard.customer.status")} ;
- }
- };
-
- return (
-
-
-
-
{i18n.t("dashboard.customers")}
-
{filteredCustomers().length} {i18n.locale() === "cs" ? "zakazniku" : "customers"}
-
-
-
- setSearchQuery(e.currentTarget.value)} />
-
-
-
0} fallback={
-
-
-
{i18n.t("dashboard.empty.title")}
-
{i18n.t("dashboard.empty.customersDesc")}
-
- }>
-
- {filteredCustomers().map((customer: any) => (
-
{ setSelectedCustomer(customer); setShowCustomerDetail(true); }} class="w-full text-left flex items-center gap-4 p-4 hover:bg-canvas-subtle/30 transition-colors">
- {getInitials(customer.name)}
-
-
-
{customer.name}
- {statusBadge(customer.status)}
-
-
{customer.email}
-
-
-
{customer.bookingsCount}
-
{i18n.t("dashboard.customer.totalBookings")}
-
-
- ))}
-
-
-
-
- {/* Customer Detail Modal */}
-
-
-
setShowCustomerDetail(false)} />
-
-
-
{i18n.t("dashboard.customerDetails")}
- setShowCustomerDetail(false)} class="p-2 hover:bg-canvas-subtle rounded-lg transition-colors">
-
-
-
-
{getInitials(selectedCustomer().name)}
-
-
{selectedCustomer().name}
-
{selectedCustomer().email}
-
-
-
-
{i18n.t("dashboard.customer.phone")}
{selectedCustomer().phone}
-
{i18n.t("dashboard.customer.totalBookings")}
{selectedCustomer().bookingsCount}
-
-
- {i18n.t("dashboard.customer.notes")}
{selectedCustomer().notes}
-
-
-
{i18n.t("dashboard.customer.bookings")}
-
- {getCustomerBookings(selectedCustomer().email).slice(0, 5).map((b: any) => (
-
-
-
{b.service}
-
{new Date(b.startsAt).toLocaleDateString()}
-
-
{i18n.t(`dashboard.${b.status}`)}
-
- ))}
-
- {i18n.t("dashboard.customer.noBookings")}
-
-
-
-
-
-
-
-
- );
- };
-
- // ==========================================
- // ZONES PAGE
- // ==========================================
- const ZonesPage = () => {
- const [activeTab, setActiveTab] = createSignal<"zones" | "blocked" | "hours">("zones");
- const [showAddZone, setShowAddZone] = createSignal(false);
- const [newZoneName, setNewZoneName] = createSignal("");
- const [newZoneType, setNewZoneType] = createSignal("room");
- const [newZoneCapacity, setNewZoneCapacity] = createSignal(10);
- const [showUpgradePrompt, setShowUpgradePrompt] = createSignal(false);
-
- const resolvedLocations = () => [
- { id: "z1", name: "Main Hall", type: "hall", capacity: 20, bookingsToday: 5 },
- { id: "z2", name: "Private Room A", type: "private", capacity: 4, bookingsToday: 2 },
- { id: "z3", name: "Treatment Room", type: "room", capacity: 2, bookingsToday: 8 },
- ];
-
- const locationLimit = () => resolvedBilling()?.entitlements?.maxLocations ?? 3;
- const canAddLocation = () => resolvedLocations().length < locationLimit();
-
- const handleAddZone = () => {
- if (!canAddLocation()) { setShowUpgradePrompt(true); setShowAddZone(false); return; }
- setNewZoneName(""); setNewZoneType("room"); setNewZoneCapacity(10); setShowAddZone(false);
- };
-
- const typeLabel = (type: string) => {
- const map: Record = { room: i18n.t("dashboard.zone.rooms"), private: i18n.t("dashboard.zone.private"), hall: i18n.t("dashboard.zone.hall") };
- return map[type] || type;
- };
-
- return (
-
-
-
-
{i18n.t("dashboard.zones")}
-
{resolvedLocations().length} {i18n.locale() === "cs" ? "zon" : "zones"}
-
-
-
-
- {[
- { id: "zones", label: i18n.t("dashboard.zones"), icon: MapPinIcon },
- { id: "blocked", label: i18n.t("dashboard.zone.blockedDays"), icon: BanIcon },
- { id: "hours", label: i18n.t("dashboard.zone.workingHours"), icon: ClockIcon },
- ].map((tab) => (
- setActiveTab(tab.id as any)} class={`flex items-center gap-2 px-4 py-2 rounded-lg text-sm font-medium transition-all ${activeTab() === tab.id ? "bg-canvas text-accent shadow-sm" : "text-ink-muted hover:text-ink"}`}>
- {tab.label}
-
- ))}
-
-
- {activeTab() === "zones" && (
-
-
-
-
{i18n.t("dashboard.zones")}
-
setShowUpgradePrompt(true)} class="flex items-center gap-2 px-4 py-2 bg-canvas-subtle text-ink-muted border border-border rounded-lg text-sm opacity-60 cursor-not-allowed">
-
- {i18n.t("dashboard.zone.limitReached")}
-
- }>
- setShowAddZone(true)} class="btn-primary text-sm"> {i18n.t("dashboard.zone.add")}
-
-
-
-
-
{i18n.t("dashboard.zone.add")}
-
- setNewZoneName(e.currentTarget.value)} placeholder={i18n.locale() === "cs" ? "napr. Hlavni sal" : "e.g. Main Hall"} />
- setNewZoneType(v)} options={[{ value: "room", label: i18n.t("dashboard.zone.rooms") }, { value: "private", label: i18n.t("dashboard.zone.private") }, { value: "hall", label: i18n.t("dashboard.zone.hall") }]} />
- setNewZoneCapacity(parseInt(e.currentTarget.value) || 10)} />
-
-
- {i18n.t("dashboard.settings.save")}
- setShowAddZone(false)} class="btn-secondary text-sm">{i18n.t("common.cancel")}
-
-
-
-
- {resolvedLocations().map((zone: any) => (
-
-
-
-
-
{zone.name}
-
{typeLabel(zone.type)} • {i18n.t("dashboard.zone.capacity")}: {zone.capacity}
-
-
-
-
{zone.bookingsToday}
-
{i18n.locale() === "cs" ? "rezervaci dnes" : "today"}
-
-
- ))}
-
-
-
- )}
-
- {activeTab() === "blocked" && (
-
-
-
{i18n.t("dashboard.empty.title")}
-
{i18n.locale() === "cs" ? "Zatim nemate zadne blokovane dny." : "No blocked days yet."}
-
- )}
-
- {activeTab() === "hours" && (
-
-
-
{i18n.t("dashboard.empty.title")}
-
{i18n.locale() === "cs" ? "Nastaveni pracovni doby bude dostupne brzy." : "Working hours settings coming soon."}
-
- )}
-
-
-
-
setShowUpgradePrompt(false)} />
-
-
-
-
-
{i18n.t("dashboard.locationLimitReached")}
-
{i18n.locale() === "cs" ? "Vas plan umoznuje pouze omezeny pocet lokaci. Pro vice lokaci upgradujte." : "Your plan allows a limited number of locations. Upgrade for more."}
-
- { setShowUpgradePrompt(false); void openCheckout(); }} class="px-4 py-2 bg-accent text-canvas text-sm font-medium rounded-lg hover:bg-accent-hover transition-colors">{i18n.t("dashboard.upgrade")}
- setShowUpgradePrompt(false)} class="px-4 py-2 bg-canvas-subtle text-ink-muted text-sm font-medium rounded-lg hover:bg-canvas transition-colors">{i18n.t("dashboard.close")}
-
-
-
-
-
-
-
- );
- };
-
-
- // ==========================================
- // BILLING PAGE
- // ==========================================
- const BillingPage = () => {
- const current = resolvedBilling();
- const entitlements = current?.entitlements;
- const isTrialing = current?.subscriptionStatus === "trialing";
- const isActive = current?.subscriptionStatus === "active";
- const planCode = current?.planCode ?? "starter";
- const planName = current?.planName ?? "Starter";
- const trialDays = current?.trialDaysRemaining ?? 0;
-
- const planFeatures = createMemo(() => {
- const cs = i18n.locale() === "cs";
- const base = [
- { label: i18n.t("dashboard.billing.locations"), value: entitlements?.maxLocations ?? 1, limit: entitlements?.maxLocations ?? 1 },
- { label: i18n.t("dashboard.billing.bookings"), value: entitlements?.maxBookings === -1 ? "∞" : (entitlements?.maxBookings ?? 50), limit: entitlements?.maxBookings ?? 50 },
- { label: i18n.t("dashboard.billing.staff"), value: entitlements?.maxStaff ?? 1, limit: entitlements?.maxStaff ?? 1 },
- ];
- if (planCode === "pro" || planCode === "business") {
- base.push({ label: cs ? "Emailove pripominky" : "Email reminders", value: "✓", limit: "✓" });
- base.push({ label: cs ? "Analytika" : "Analytics", value: "✓", limit: "✓" });
- }
- if (planCode === "business") {
- base.push({ label: cs ? "API pristup" : "API access", value: "✓", limit: "✓" });
- }
- return base;
- });
-
- return (
-
-
-
{i18n.t("dashboard.billing")}
-
{i18n.t("dashboard.billing.currentPlan")}: {planName}
-
-
- {/* Billing notice/error */}
-
-
-
-
setBillingNotice(null)} class="p-1.5 hover:bg-accent/10 rounded-lg text-accent">
-
-
-
-
-
{billingError()}
-
setBillingError(null)} class="p-1.5 hover:bg-canvas-muted rounded-lg text-ink-muted">
-
-
-
- {/* Current Plan Card */}
-
-
-
-
-
{planName}
- {isTrialing && {i18n.locale() === "cs" ? `Zkusebni doba (${trialDays} dnu)` : `Trial (${trialDays} days)`} }
- {isActive && {i18n.t("dashboard.confirmed")} }
-
-
{i18n.t("dashboard.billing.period")}: {billingInterval() === "monthly" ? (i18n.locale() === "cs" ? "Mesicne" : "Monthly") : (i18n.locale() === "cs" ? "Rocne" : "Yearly")}
-
-
- setBillingInterval("monthly")} class={`px-3 py-1.5 rounded-lg text-sm font-medium transition-all ${billingInterval() === "monthly" ? "bg-accent text-canvas" : "bg-canvas-subtle text-ink-muted hover:text-ink"}`}>{i18n.locale() === "cs" ? "Mesicne" : "Monthly"}
- setBillingInterval("yearly")} class={`px-3 py-1.5 rounded-lg text-sm font-medium transition-all ${billingInterval() === "yearly" ? "bg-accent text-canvas" : "bg-canvas-subtle text-ink-muted hover:text-ink"}`}>{i18n.locale() === "cs" ? "Rocne" : "Yearly"}
-
-
-
-
- {planFeatures().map((feature: any) => (
-
-
{feature.label}
-
{typeof feature.value === "number" ? `${feature.value} / ${feature.limit}` : feature.value}
-
- ))}
-
-
-
- void openCheckout()} disabled={billingAction() === "checkout"} class="btn-primary disabled:opacity-50">
- {billingAction() === "checkout" ? (i18n.locale() === "cs" ? "Otevirani..." : "Opening...") : (isTrialing ? i18n.t("dashboard.upgrade") : i18n.t("dashboard.checkout"))}
-
-
- void openPortal()} class="btn-secondary">{i18n.locale() === "cs" ? "Spravovat predplatne" : "Manage subscription"}
-
- void refreshBilling()} disabled={billingAction() === "refresh"} class="btn-secondary disabled:opacity-50">
- {billingAction() === "refresh" ? (i18n.locale() === "cs" ? "Obnovovani..." : "Refreshing...") : i18n.t("dashboard.refreshBilling")}
-
-
-
-
- );
- };
-
- // ==========================================
- // SETTINGS PAGE
- // ==========================================
- const SettingsPage = () => {
- const [brandColor, setBrandColor] = createSignal(resolvedBootstrap()?.brand?.primaryColor ?? "#c25e3a");
- const [brandSaving, setBrandSaving] = createSignal(false);
- const [activeEmailType, setActiveEmailType] = createSignal("confirmation");
- const [emailSubject, setEmailSubject] = createSignal("");
- const [emailBody, setEmailBody] = createSignal("");
- const [emailSaving, setEmailSaving] = createSignal(false);
-
- const presetColors = [
- { name: i18n.locale() === "cs" ? "Hnědá" : "Terracotta", color: "#c25e3a" },
- { name: i18n.locale() === "cs" ? "Zelená" : "Sage", color: "#5a7c5a" },
- { name: i18n.locale() === "cs" ? "Modrá" : "Ocean", color: "#3a6a8a" },
- { name: i18n.locale() === "cs" ? "Fialová" : "Plum", color: "#6a4a7a" },
- ];
-
- const handleSaveBrand = async () => {
- const bearer = token();
- if (!bearer || bearer.startsWith("demo.")) { setDemoNotice(i18n.locale() === "cs" ? "V demo režimu nelze ukládat." : "Cannot save in demo mode."); return; }
- setBrandSaving(true);
- try {
- await (apiClient as any).PUT("/v1/tenants/brand", { headers: { Authorization: `Bearer ${bearer}` }, body: { primaryColor: brandColor() } });
- } catch { /* ignore */ }
- finally { setBrandSaving(false); }
- };
-
- return (
-
-
-
{i18n.t("dashboard.settings")}
-
{i18n.locale() === "cs" ? "Spravujte svůj podnik, branding a předvolby." : "Manage your business, branding and preferences."}
-
-
-
-
-
-
-
{i18n.t("dashboard.settings.branding")}
-
-
-
{i18n.t("dashboard.settings.branding")}
-
- {presetColors.map((preset) => (
-
setBrandColor(preset.color)} class={`p-2 rounded-lg border-2 transition-all ${brandColor() === preset.color ? "border-ink" : "border-transparent hover:border-ink/20"}`}>
-
- {preset.name}
-
- ))}
-
-
- setBrandColor(e.currentTarget.value)} class="w-12 h-10 rounded-lg border border-border cursor-pointer" />
- setBrandColor(e.currentTarget.value)} class="flex-1 px-4 py-2.5 bg-canvas-subtle border border-border rounded-xl text-ink text-sm font-mono uppercase" />
-
-
-
-
{i18n.t("dashboard.preview")}
-
-
-
B
-
-
Bookra
-
{i18n.locale() === "cs" ? "Rezervujte si termín" : "Book an appointment"}
-
-
-
{i18n.locale() === "cs" ? "Rezervovat" : "Book Now"}
-
-
-
-
- {brandSaving() ? i18n.t("dashboard.saving") : i18n.t("dashboard.settings.save")}
-
-
-
-
-
-
-
-
{i18n.t("dashboard.settings.emailNotifications")}
-
{i18n.locale() === "cs" ? "Upravte e-maily posílané zákazníkům." : "Customize emails sent to customers."}
-
-
-
- {[
- { key: "confirmation", label: i18n.t("dashboard.confirmed"), icon: CheckCircleIcon },
- { key: "reminder", label: i18n.t("dashboard.notifications"), icon: BellIcon },
- { key: "cancellation", label: i18n.t("dashboard.cancelled"), icon: XCircleIcon },
- { key: "reschedule", label: i18n.t("dashboard.edit"), icon: CalendarDaysIcon },
- ].map((type) => (
- setActiveEmailType(type.key)} class={`flex items-center gap-2 px-4 py-2 rounded-lg text-sm font-medium whitespace-nowrap transition-all ${activeEmailType() === type.key ? "bg-accent text-canvas" : "bg-canvas-subtle text-ink-muted hover:text-ink"}`}>
- {type.label}
-
- ))}
-
-
- setEmailSubject(e.currentTarget.value)} placeholder={activeEmailType() === "confirmation" ? (i18n.locale() === "cs" ? "Potvrzení rezervace" : "Booking Confirmation") : ""} />
-
-
{
- const bearer = token();
- if (!bearer || bearer.startsWith("demo.")) { setDemoNotice(i18n.locale() === "cs" ? "V demo režimu nelze ukládat." : "Cannot save in demo mode."); return; }
- setEmailSaving(true);
- try {
- await (apiClient as any).PUT("/v1/tenants/email-template", { headers: { Authorization: `Bearer ${bearer}` }, body: { type: activeEmailType(), subject: emailSubject(), body: emailBody() } });
- setDemoNotice(i18n.locale() === "cs" ? "Šablona uložena." : "Template saved.");
- } catch { setDemoNotice(i18n.locale() === "cs" ? "Chyba při ukládání." : "Save failed."); }
- finally { setEmailSaving(false); }
- }} disabled={emailSaving()} class="mt-4 w-full py-2.5 bg-accent text-canvas rounded-xl hover:bg-accent-hover transition-colors font-medium disabled:opacity-60 flex items-center justify-center gap-2">
-
- {emailSaving() ? i18n.t("dashboard.saving") : i18n.t("dashboard.settings.save")}
-
-
-
-
-
-
-
- );
- };
-
- // ==========================================
- // ANALYTICS PAGE
- // ==========================================
- const AnalyticsPage = () => {
- const cs = i18n.locale() === "cs";
- const bookingData = normalizedAllBookings();
- const totalBookings = bookingData.length;
- const confirmed = bookingData.filter((b: { status: string }) => b.status === "confirmed").length;
- const completed = bookingData.filter((b: { status: string }) => b.status === "completed").length;
- const cancelled = bookingData.filter((b: { status: string }) => b.status === "cancelled").length;
- const pending = bookingData.filter((b: { status: string }) => b.status === "pending").length;
- const occupancyRate = totalBookings > 0 ? Math.round(((confirmed + completed) / totalBookings) * 100) : 0;
-
- const kpiCards = [
- { label: cs ? "Celkem rezervací" : "Total bookings", value: totalBookings, change: "+12 %", trend: "up" as const, icon: CalendarDaysIcon },
- { label: cs ? "Potvrzeno" : "Confirmed", value: confirmed, change: "+8 %", trend: "up" as const, icon: CheckCircleIcon },
- { label: cs ? "Obsazenost" : "Occupancy", value: `${occupancyRate}%`, change: occupancyRate > 80 ? "+5 %" : "-3 %", trend: occupancyRate > 80 ? "up" as const : "down" as const, icon: TrendingUpIcon },
- { label: cs ? "Zrušeno" : "Cancelled", value: cancelled, change: "-2 %", trend: "down" as const, icon: XCircleIcon },
- ];
-
- const weeklyData = [
- { day: cs ? "Po" : "Mon", bookings: 12, revenue: 2400 },
- { day: cs ? "Út" : "Tue", bookings: 18, revenue: 3600 },
- { day: cs ? "St" : "Wed", bookings: 14, revenue: 2800 },
- { day: cs ? "Čt" : "Thu", bookings: 22, revenue: 4400 },
- { day: cs ? "Pá" : "Fri", bookings: 28, revenue: 5600 },
- { day: cs ? "So" : "Sat", bookings: 16, revenue: 3200 },
- { day: cs ? "Ne" : "Sun", bookings: 8, revenue: 1600 },
- ];
- const maxRevenue = Math.max(...weeklyData.map((d) => d.revenue));
-
- const statusBreakdown = [
- { label: cs ? "Potvrzeno" : "Confirmed", count: confirmed, color: "bg-accent" },
- { label: cs ? "Dokončeno" : "Completed", count: completed, color: "bg-success" },
- { label: cs ? "Čeká" : "Pending", count: pending, color: "bg-warning" },
- { label: cs ? "Zrušeno" : "Cancelled", count: cancelled, color: "bg-error" },
- ];
-
- return (
-
-
-
{cs ? "Analytika a reporty" : "Analytics & Reports"}
-
{cs ? "Podrobné statistiky, exporty a přehledy pro váš podnik." : "Detailed statistics, exports, and business insights."}
-
-
- {/* KPI Cards */}
-
- {kpiCards.map((kpi) => (
-
-
- {kpi.label}
-
-
-
{kpi.value}
-
- {kpi.change}
- {cs ? "vs minulý měsíc" : "vs last month"}
-
-
- ))}
-
-
-
- {/* Weekly Revenue Chart */}
-
-
-
-
{cs ? "Týdenní přehled" : "Weekly Overview"}
-
{cs ? "Rezervace a tržby za posledních 7 dní" : "Bookings and revenue over the last 7 days"}
-
-
-
-
- {cs ? "Rezervace" : "Bookings"}
-
-
-
- {cs ? "Tržby (Kč)" : "Revenue ($)"}
-
-
-
-
- {weeklyData.map((d) => (
-
- ))}
-
-
-
- {/* Status Breakdown */}
-
-
{cs ? "Stav rezervací" : "Booking Status"}
-
{cs ? "Rozdělení podle stavu" : "Breakdown by status"}
-
- {statusBreakdown.map((s) => (
-
-
- {s.label}
- {s.count}
-
-
-
0 ? `${(s.count / totalBookings) * 100}%` : "0%" }} />
-
-
- ))}
-
-
-
- {cs ? "Konverzní poměr" : "Conversion rate"}
- {totalBookings > 0 ? Math.round(((confirmed + completed) / totalBookings) * 100) : 0}%
-
-
-
-
-
- {/* Top Services */}
-
-
{cs ? "Nejoblíbenější služby" : "Top Services"}
-
- {[
- { name: cs ? "Masáž" : "Massage", bookings: 45, revenue: 9000 },
- { name: cs ? "Kosmetika" : "Cosmetics", bookings: 32, revenue: 6400 },
- { name: cs ? "Fyzioterapie" : "Physiotherapy", bookings: 28, revenue: 8400 },
- { name: cs ? "Manikúra" : "Manicure", bookings: 24, revenue: 3600 },
- ].map((svc, i) => (
-
-
{i + 1}
-
-
-
{svc.bookings}
-
{cs ? `${svc.revenue.toLocaleString()} Kč` : `$${svc.revenue.toLocaleString()}`}
-
-
- ))}
-
-
-
- );
- };
-
- // ==========================================
- // ACTIVE PAGE SWITCHER
- // ==========================================
- const ActivePage = () => {
- switch (activeSection()) {
- case "overview": return
;
- case "bookings": return
;
- case "customers": return
;
- case "zones": return
;
- case "billing": return
;
- case "analytics": return
;
- case "settings": return
;
- default: return
;
- }
- };
-
- // ==========================================
- // MAIN RETURN
- // ==========================================
- return (
-
-
-
- {/* Mobile Header */}
-
-
-
-
-
-
-
- setIsMobileMenuOpen(true)} aria-label={i18n.locale() === "cs" ? "Otevrit menu" : "Open menu"} class="p-2 hover:bg-canvas-subtle rounded-xl transition-all">
-
-
-
-
-
-
-
-
-
- {/* Demo Notice Toast */}
-
-
-
-
setDemoNotice(null)} class="p-1.5 hover:bg-accent/10 rounded-lg text-accent">
-
-
-
- {/* Not logged in */}
-
-
-
-
{i18n.locale() === "cs" ? "Váš rezervační systém čeká" : "Your booking system awaits"}
-
{i18n.t("dashboard.welcome.body")}
-
-
window.dispatchEvent(new CustomEvent("openAuthDialog", { detail: { mode: "sign-in" } }))} class="btn-primary w-full sm:w-auto">
-
- {i18n.t("auth.signIn")}
-
-
{ await auth.signInAsDemo(); window.location.reload(); }} class="btn-secondary w-full sm:w-auto">
- {i18n.t("dashboard.tryDemo")}
-
-
-
{i18n.locale() === "cs" ? "Ještě nemáte účet? " : "No account yet? "}
- window.dispatchEvent(new CustomEvent("openAuthDialog", { detail: { mode: "register" } }))} class="text-accent hover:text-accent-hover font-medium underline underline-offset-2">{i18n.t("auth.createAccount")}
-
-
-
-
- {/* Loading */}
-
-
-
-
{i18n.locale() === "cs" ? "Načítání dashboardu..." : "Loading your dashboard..."}
-
-
-
- {/* Dashboard Content */}
-
-
-
-
-
-
- {/* Integration Modal */}
-
setShowIntegrationModal(false)}
- tenantSlug={resolvedSummary()?.tenantSlug || "demo-studio"}
- publicBookingUrl={resolvedSummary()?.publicBookingUrl || "https://bookra.eu/book/demo-studio"}
- tenantName={resolvedSummary()?.tenantName || "Demo Studio"}
- primaryColor={resolvedBootstrap()?.brand?.primaryColor}
- />
-
-
-
- );
-}
diff --git a/apps/frontend/src/routes/dashboard-route.tsx.backup.1776676981 b/apps/frontend/src/routes/dashboard-route.tsx.backup.1776676981
deleted file mode 100644
index ccf790f..0000000
--- a/apps/frontend/src/routes/dashboard-route.tsx.backup.1776676981
+++ /dev/null
@@ -1,1153 +0,0 @@
-import { For, Show, createEffect, createResource, createSignal, createMemo } from "solid-js";
-import { A } from "@solidjs/router";
-import { locales, planCatalog, planCodes, planCurrencies, tenantPresets } from "@bookra/shared-types";
-import { apiClient } from "../lib/api-client";
-import { useAuth } from "../providers/auth-provider";
-import { useI18n } from "../providers/i18n-provider";
-import { BookraCharacter } from "../components/bookra-character";
-import {
- Button,
- Card,
- CardHeader,
- CardTitle,
- CardDescription,
- CardContent,
- Badge,
- Input,
- Select,
- SkeletonCard,
- Tooltip
-} from "../components/ui";
-import { WidgetBuilder } from "../components/widget-builder";
-
-// Icon Components
-const LayoutDashboardIcon = () => (
-
-);
-
-const CalendarDaysIcon = () => (
-
-);
-
-const CreditCardIcon = () => (
-
-);
-
-const Settings2Icon = () => (
-
-);
-
-const LogOutIcon = () => (
-
-);
-
-const MenuIcon = () => (
-
-);
-
-const XIcon = () => (
-
-);
-
-const TrendingUpIcon = () => (
-
-);
-
-const UsersIcon = () => (
-
-);
-
-const ClockIcon = () => (
-
-);
-
-const MoreHorizontalIcon = () => (
-
-);
-
-const CheckCircleIcon = () => (
-
-);
-
-const AlertCircleIcon = () => (
-
-);
-
-const ChevronLeftIcon = () => (
-
-);
-
-const ChevronRightIcon = () => (
-
-);
-
-// Types
-type Section = "overview" | "bookings" | "billing" | "settings";
-
-// Demo Data
-const createDemoData = (i18n: any) => ({
- summary: {
- tenantSlug: "demo-studio",
- tenantName: "Demo Studio",
- publicBookingUrl: "http://localhost:3000/book/demo-studio",
- kpis: [
- { label: i18n.locale() === 'cs' ? 'Celkem rezervací' : 'Total Bookings', value: 42, change: "+12%", trend: "up" },
- { label: i18n.locale() === 'cs' ? 'Zrušených' : 'Cancelled', value: 3, change: "-5%", trend: "down" },
- { label: i18n.locale() === 'cs' ? 'Dokončených' : 'Completed', value: 38, change: "+8%", trend: "up" },
- { label: i18n.locale() === 'cs' ? 'Noví klienti' : 'New Clients', value: 12, change: "+24%", trend: "up" },
- ],
- upcomingBookings: [
- { id: "1", customerName: "Alice Johnson", service: "Yoga Class", status: "confirmed", startsAt: new Date(Date.now() + 86400000).toISOString(), reference: "BK-001", avatar: "AJ" },
- { id: "2", customerName: "Bob Smith", service: "Massage Therapy", status: "pending", startsAt: new Date(Date.now() + 172800000).toISOString(), reference: "BK-002", avatar: "BS" },
- { id: "3", customerName: "Carol White", service: "Personal Training", status: "confirmed", startsAt: new Date(Date.now() + 259200000).toISOString(), reference: "BK-003", avatar: "CW" },
- { id: "4", customerName: "David Brown", service: "Nutrition Consult", status: "cancelled", startsAt: new Date(Date.now() + 345600000).toISOString(), reference: "BK-004", avatar: "DB" },
- ],
- recentActivity: [
- { action: "New booking", detail: "Alice Johnson booked Yoga Class", time: "2 min ago", type: "booking" },
- { action: "Payment received", detail: "$120 from Bob Smith", time: "15 min ago", type: "payment" },
- { action: "Booking cancelled", detail: "David Brown cancelled", time: "1 hour ago", type: "cancel" },
- { action: "New review", detail: "5-star review from Carol White", time: "3 hours ago", type: "review" },
- ],
- },
- bootstrap: {
- tenantId: "demo-tenant-id",
- tenantName: "Demo Studio",
- preset: "studio",
- locale: i18n.locale(),
- timezone: "Europe/Prague",
- currentUser: { role: "admin", name: "Demo User", email: "demo@bookra.io" },
- brand: { primaryColor: "#a65c3e", name: "Demo Studio" },
- },
- billing: {
- planCode: "pro",
- status: "active",
- nextBilling: "2024-02-15",
- amount: "$49",
- entitlements: {
- maxLocations: 3,
- maxStaff: 10,
- emailReminders: true,
- customBranding: true,
- analytics: true,
- },
- },
-});
-
-// Calendar Component
-function CalendarView(props: { bookings: any[] }) {
- const [currentDate, setCurrentDate] = createSignal(new Date());
-
- const weekDays = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
- const monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
-
- const calendarDays = createMemo(() => {
- const date = currentDate();
- const year = date.getFullYear();
- const month = date.getMonth();
-
- const firstDay = new Date(year, month, 1).getDay();
- const daysInMonth = new Date(year, month + 1, 0).getDate();
-
- const days: Array<{ day: number | null; bookings: any[] }> = [];
-
- for (let i = 0; i < firstDay; i++) {
- days.push({ day: null, bookings: [] });
- }
-
- for (let day = 1; day <= daysInMonth; day++) {
- const dayBookings = props.bookings.filter(b => {
- const bookingDate = new Date(b.startsAt);
- return bookingDate.getDate() === day && bookingDate.getMonth() === month;
- });
- days.push({ day, bookings: dayBookings });
- }
-
- return days;
- });
-
- const prevMonth = () => {
- const d = currentDate();
- setCurrentDate(new Date(d.getFullYear(), d.getMonth() - 1, 1));
- };
-
- const nextMonth = () => {
- const d = currentDate();
- setCurrentDate(new Date(d.getFullYear(), d.getMonth() + 1, 1));
- };
-
- return (
-
-
-
- {monthNames[currentDate().getMonth()]} {currentDate().getFullYear()}
-
-
-
-
-
-
-
-
-
-
-
-
- {weekDays.map(day => (
-
{day}
- ))}
-
-
-
- {calendarDays().map(({ day, bookings }) => (
-
0 ? 'ring-2 ring-orange-100' : ''}
- `}>
- {day && (
- <>
-
{day}
- {bookings.length > 0 && (
-
- {bookings.slice(0, 3).map(() => (
-
- ))}
- {bookings.length > 3 && (
-
+{bookings.length - 3}
- )}
-
- )}
- >
- )}
-
- ))}
-
-
- );
-}
-
-// Main Dashboard Component
-export function DashboardRoute() {
- const i18n = useI18n();
- const auth = useAuth();
- const [activeSection, setActiveSection] = createSignal
("overview");
- const [isMobileMenuOpen, setIsMobileMenuOpen] = createSignal(false);
- const [token] = createResource(() => auth.session()?.session?.id, () => auth.getToken());
- const isDemoMode = () => token()?.startsWith("demo.") ?? false;
-
- const demoData = createMemo(() => createDemoData(i18n));
-
- const [summary] = createResource(token, async (bearer) => {
- if (!bearer) return null;
- if (bearer.startsWith("demo.")) return demoData().summary;
- const response = await apiClient.GET("/v1/dashboard/summary", {
- headers: { Authorization: `Bearer ${bearer}` },
- });
- return response.data ?? null;
- });
-
- const [bootstrap] = createResource(token, async (bearer) => {
- if (!bearer) return null;
- if (bearer.startsWith("demo.")) return demoData().bootstrap;
- const response = await apiClient.GET("/v1/tenants/bootstrap", {
- headers: { Authorization: `Bearer ${bearer}` },
- });
- return response.data ?? null;
- });
-
- const [billing] = createResource(token, async (bearer) => {
- if (!bearer) return null;
- if (bearer.startsWith("demo.")) return demoData().billing;
- const response = await apiClient.GET("/v1/billing/subscription", {
- headers: { Authorization: `Bearer ${bearer}` },
- });
- return response.data ?? null;
- });
-
- const resolvedSummary = () => (summary.latest as any) ?? (isDemoMode() ? demoData().summary : undefined);
- const resolvedBootstrap = () => (bootstrap.latest as any) ?? (isDemoMode() ? demoData().bootstrap : undefined);
- const resolvedBilling = () => (billing.latest as any) ?? (isDemoMode() ? demoData().billing : undefined);
- const hasTenant = () => Boolean(bootstrap.latest?.tenantId) || isDemoMode();
- const isDashboardReady = () => Boolean(token() && hasTenant() && (summary.latest || isDemoMode()) && (billing.latest || isDemoMode()));
-
- // Navigation items with new icons
- const navItems = [
- { id: "overview" as Section, label: i18n.locale() === 'cs' ? 'Přehled' : 'Overview', icon: LayoutDashboardIcon },
- { id: "bookings" as Section, label: i18n.locale() === 'cs' ? 'Rezervace' : 'Bookings', icon: CalendarDaysIcon },
- { id: "billing" as Section, label: i18n.locale() === 'cs' ? 'Platby' : 'Billing', icon: CreditCardIcon },
- { id: "settings" as Section, label: i18n.locale() === 'cs' ? 'Nastavení' : 'Settings', icon: Settings2Icon },
- ];
-
- // Page Components
- const OverviewPage = () => (
-
- {/* Welcome Header */}
-
-
-
- {i18n.locale() === 'cs' ? 'Dobrý den,' : 'Welcome back,'} {auth.session()?.user?.name}
-
-
- {i18n.locale() === 'cs'
- ? `Zde je přehled vašeho ${resolvedBootstrap().tenantName}`
- : `Here's what's happening with ${resolvedBootstrap().tenantName}`}
-
-
-
- {new Date().toLocaleDateString()}
-
-
-
- {/* KPI Cards */}
-
- {resolvedSummary().kpis.map((kpi: any) => (
-
-
-
-
{kpi.label}
-
{kpi.value}
-
-
-
- {kpi.change}
-
-
-
- ))}
-
-
- {/* Main Content Grid */}
-
- {/* Calendar */}
-
-
-
-
- {/* Recent Activity */}
-
-
- {i18n.locale() === 'cs' ? 'Nedávná aktivita' : 'Recent Activity'}
-
-
- {resolvedSummary().recentActivity?.map((activity: any) => (
-
-
- {activity.type === 'booking' ?
:
- activity.type === 'cancel' ?
:
-
}
-
-
-
{activity.action}
-
{activity.detail}
-
{activity.time}
-
-
- ))}
-
-
-
-
- {/* Upcoming Bookings */}
-
-
-
- {i18n.locale() === 'cs' ? 'Nadcházející rezervace' : 'Upcoming Bookings'}
-
- setActiveSection("bookings")}
- class="text-sm text-orange-600 hover:text-orange-700 font-medium"
- >
- {i18n.locale() === 'cs' ? 'Zobrazit vše' : 'View all'}
-
-
-
- {resolvedSummary().upcomingBookings?.slice(0, 3).map((booking: any) => (
-
-
-
- {booking.avatar}
-
-
-
{booking.customerName}
-
{booking.service}
-
-
-
-
{new Date(booking.startsAt).toLocaleDateString()}
-
- {booking.status}
-
-
-
- ))}
-
-
-
- );
-
- const BookingsPage = () => (
-
-
-
- {i18n.locale() === 'cs' ? 'Rezervace' : 'Bookings'}
-
-
- {i18n.locale() === 'cs' ? 'Nová rezervace' : 'New Booking'}
-
-
-
-
-
-
-
-
-
-
- {i18n.locale() === 'cs' ? 'Všechny rezervace' : 'All Bookings'}
-
-
- {resolvedSummary().upcomingBookings?.map((booking: any) => (
-
-
-
-
- {booking.avatar}
-
-
-
{booking.customerName}
-
{booking.service}
-
-
-
- {booking.status}
-
-
-
-
-
- {new Date(booking.startsAt).toLocaleString()}
-
- {booking.reference}
-
-
- ))}
-
-
-
-
-
- );
-
- const BillingPage = () => (
-
-
- {i18n.locale() === 'cs' ? 'Platby a předplatné' : 'Billing & Subscription'}
-
-
-
- {/* Current Plan */}
-
-
-
-
Current Plan
-
{resolvedBilling().planCode}
-
{resolvedBilling().amount}/month
-
-
- {resolvedBilling().status}
-
-
-
-
- Upgrade Plan
-
-
- View Invoices
-
-
-
-
- {/* Next Billing */}
-
-
Next billing date
-
{resolvedBilling().nextBilling}
-
{resolvedBilling().amount} will be charged
-
-
-
- {/* Features */}
-
-
Plan Features
-
- {Object.entries(resolvedBilling().entitlements).map(([key, value]) => (
-
-
-
-
-
-
{key.replace(/([A-Z])/g, ' $1').trim()}
-
{typeof value === 'boolean' ? (value ? 'Enabled' : 'Disabled') : value}
-
-
- ))}
-
-
-
- );
-
- const SettingsPage = () => (
-
-
- {i18n.locale() === 'cs' ? 'Nastavení' : 'Settings'}
-
-
-
-
-
Business Information
-
-
-
-
-
Widget Integration
-
-
-
-
- );
-
- // Navigation Sidebar
- const Sidebar = () => (
-
-
-
-
-
-
-
- {i18n.locale() === 'cs' ? 'Demo režim' : 'Demo Mode'}
-
-
-
-
-
- {navItems.map((item) => (
- setActiveSection(item.id)}
- class={`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-medium transition-all duration-200 ${
- activeSection() === item.id
- ? "bg-orange-50 text-orange-700"
- : "text-gray-600 hover:text-gray-900 hover:bg-gray-50"
- }`}
- >
-
- {item.label}
-
- ))}
-
-
-
-
-
-
-
- {auth.session()?.user?.name?.charAt(0) || 'U'}
-
-
-
-
{auth.session()?.user?.name}
-
{auth.session()?.user?.email}
-
-
-
-
void auth.signOut()}
- class="w-full flex items-center gap-3 px-4 py-2 rounded-xl text-sm font-medium text-gray-500 hover:text-red-600 hover:bg-red-50 transition-all duration-200"
- >
-
- {i18n.t("auth.signOut")}
-
-
-
- );
-
- // Mobile Menu
- const MobileMenu = () => (
-
-
-
setIsMobileMenuOpen(false)} />
-
-
-
-
setIsMobileMenuOpen(false)} class="p-2 hover:bg-gray-100 rounded-lg">
-
-
-
-
- {navItems.map((item) => (
- {
- setActiveSection(item.id);
- setIsMobileMenuOpen(false);
- }}
- class={`w-full flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-medium transition-all ${
- activeSection() === item.id
- ? "bg-orange-50 text-orange-700"
- : "text-gray-600 hover:bg-gray-50"
- }`}
- >
-
- {item.label}
-
- ))}
-
-
-
-
- );
-
- // Active Page Content
- const ActivePage = () => {
- switch (activeSection()) {
- case "overview": return
;
- case "bookings": return
;
- case "billing": return
;
- case "settings": return
;
- default: return
;
- }
- };
-
- return (
-
-
-
-
-
-
-
-
-
-
-
-
- {i18n.locale() === 'cs' ? 'Přístup odepřen' : 'Access Denied'}
-
-
- {i18n.locale() === 'cs'
- ? 'Pro přístup do dashboardu se musíte přihlásit.'
- : 'You need to sign in to access the dashboard.'}
-
-
- window.dispatchEvent(new CustomEvent('openAuthDialog', { detail: { mode: 'sign-in' } }))}
- >
- {i18n.t("auth.signIn")}
-
- window.dispatchEvent(new CustomEvent('openAuthDialog', { detail: { mode: 'register' } }))}
- >
- {i18n.t("auth.createAccount")}
-
-
-
-
-
-
-
-
-
Loading your dashboard...
-
-
-
-
-
-
-
-
-
-
- {i18n.t("dashboard.bootstrap")}
-
-
{i18n.t("dashboard.onboarding.title")}
-
-
- {i18n.t("dashboard.onboarding.body")}
-
-
-
-
-
-
void submitOnboarding()}
- >
- {submittingOnboarding() ? i18n.t("dashboard.onboarding.pending") : i18n.t("dashboard.onboarding.submit")}
-
-
-
-
-
{onboardingMessage()}
-
-
-
-
-
-
-
- {/* Forbidden character at top */}
-
-
-
-
-
-
-
-
-
-
-
{i18n.t("dashboard.bootstrap")}
-
-
-
-
-
-
-
-
-
- Tenant
-
-
{resolvedBootstrap().tenantName}
-
-
-
-
-
-
- Preset
-
-
{resolvedBootstrap().preset}
-
-
-
-
-
-
- Locale
-
-
{resolvedBootstrap().locale}
-
-
-
-
-
-
- Timezone
-
-
{resolvedBootstrap().timezone}
-
-
-
-
-
-
- Role
-
-
- {resolvedBootstrap().currentUser.role}
-
-
-
-
-
-
-
-
-
-
-
- {i18n.t("dashboard.liveData")}
-
-
-
-
-
-
- {i18n.t("dashboard.liveDataBody")}
-
-
-
-
{i18n.t("dashboard.apiReady")}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
{i18n.t("dashboard.billing")}
-
-
-
-
- {i18n.t("dashboard.plan")}: {resolvedBilling().planCode}
-
-
- {i18n.t("dashboard.status")}:
-
- {resolvedBilling().status}
-
-
-
-
-
-
-
-
- {resolvedBilling().entitlements.maxLocations} locations
-
-
-
-
-
- {resolvedBilling().entitlements.maxStaff} staff
-
-
-
-
-
- Email reminders {resolvedBilling().entitlements.emailReminders ? 'enabled' : 'disabled'}
-
-
-
-
-
-
-
- {billingMessage()}
-
-
-
-
-
void openCheckout()}
- class="shadow-md hover:shadow-lg transition-shadow"
- >
-
-
-
- {i18n.t("dashboard.checkout")}
-
-
- void refreshBilling()}>
-
-
-
- {i18n.t("dashboard.refreshBilling")}
-
-
-
-
-
-
-
- {(kpi, index) => (
-
-
-
-
{kpi.label}
-
- {index() === 0 ? (
-
-
-
- ) : index() === 1 ? (
-
-
-
- ) : (
-
-
-
- )}
-
-
- {kpi.value}
-
-
-
- {index() === 0 ? '+12% from last week' : index() === 1 ? 'Within normal range' : 'Strong performance'}
-
-
-
-
- )}
-
-
-
-
-
-
-
-
- Next bookings
- {resolvedSummary().publicBookingUrl}
-
-
-
-
-
-
- No upcoming bookings yet.
- Share your booking page to get started
-
- }
- >
-
- {(booking) => (
-
-
-
{booking.customerName}
-
{booking.status}
-
-
{new Date(booking.startsAt).toLocaleString()}
-
{booking.reference}
-
- )}
-
-
-
-
Umami
-
{resolvedSummary().tracking?.message ?? "Umami tracking is not connected."}
-
-
-
-
-
-
-
-
- {i18n.t("widget.builder.title")}
- {i18n.t("widget.builder.subtitle")}
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/apps/frontend/src/routes/dashboard/billing-page.tsx b/apps/frontend/src/routes/dashboard/billing-page.tsx
index ff36f5e..682a38f 100644
--- a/apps/frontend/src/routes/dashboard/billing-page.tsx
+++ b/apps/frontend/src/routes/dashboard/billing-page.tsx
@@ -20,11 +20,11 @@ function BillingPage() {
{ label: data.i18n.t("dashboard.billing.staff"), value: entitlements?.maxStaff ?? 1, limit: entitlements?.maxStaff ?? 1 },
];
if (planCode === "pro" || planCode === "business") {
- base.push({ label: cs ? "Emailove pripominky" : "Email reminders", value: "\u2713", limit: "\u2713" });
+ base.push({ label: cs ? "E-mailové připomínky" : "Email reminders", value: "\u2713", limit: "\u2713" });
base.push({ label: cs ? "Analytika" : "Analytics", value: "\u2713", limit: "\u2713" });
}
if (planCode === "business") {
- base.push({ label: cs ? "API pristup" : "API access", value: "\u2713", limit: "\u2713" });
+ base.push({ label: cs ? "API přístup" : "API access", value: "\u2713", limit: "\u2713" });
}
return base;
});
@@ -56,14 +56,14 @@ function BillingPage() {
{planName}
- {isTrialing && {data.i18n.locale() === "cs" ? `Zkusebni doba (${trialDays} dnu)` : `Trial (${trialDays} days)`} }
+ {isTrialing && {data.i18n.locale() === "cs" ? `Zkušební doba (${trialDays} dní)` : `Trial (${trialDays} days)`} }
{isActive && {data.i18n.t("dashboard.confirmed")} }
-
{data.i18n.t("dashboard.billing.period")}: {data.billingInterval() === "monthly" ? (data.i18n.locale() === "cs" ? "Mesicne" : "Monthly") : (data.i18n.locale() === "cs" ? "Rocne" : "Yearly")}
+
{data.i18n.t("dashboard.billing.period")}: {data.billingInterval() === "monthly" ? (data.i18n.locale() === "cs" ? "Měsíčně" : "Monthly") : (data.i18n.locale() === "cs" ? "Ročně" : "Yearly")}
- data.setBillingInterval("monthly")} class={`px-3 py-1.5 rounded-lg text-sm font-medium transition-all ${data.billingInterval() === "monthly" ? "bg-accent text-canvas" : "bg-canvas-subtle text-ink-muted hover:text-ink"}`}>{data.i18n.locale() === "cs" ? "Mesicne" : "Monthly"}
- data.setBillingInterval("yearly")} class={`px-3 py-1.5 rounded-lg text-sm font-medium transition-all ${data.billingInterval() === "yearly" ? "bg-accent text-canvas" : "bg-canvas-subtle text-ink-muted hover:text-ink"}`}>{data.i18n.locale() === "cs" ? "Rocne" : "Yearly"}
+ data.setBillingInterval("monthly")} class={`px-3 py-1.5 rounded-lg text-sm font-medium transition-all ${data.billingInterval() === "monthly" ? "bg-accent text-canvas" : "bg-canvas-subtle text-ink-muted hover:text-ink"}`}>{data.i18n.locale() === "cs" ? "Měsíčně" : "Monthly"}
+ data.setBillingInterval("yearly")} class={`px-3 py-1.5 rounded-lg text-sm font-medium transition-all ${data.billingInterval() === "yearly" ? "bg-accent text-canvas" : "bg-canvas-subtle text-ink-muted hover:text-ink"}`}>{data.i18n.locale() === "cs" ? "Ročně" : "Yearly"}
@@ -76,15 +76,44 @@ function BillingPage() {
))}
+ {/* Plan selection for checkout */}
+
+
{data.i18n.locale() === "cs" ? "Vybrat plán" : "Select plan"}
+
+ {(["starter", "pro", "business"] as const).map((code) => {
+ const prices = (current?.displayPrices ?? []) as any[];
+ const czk = prices.find((p) => p.currency === "czk");
+ const isCurrent = planCode === code;
+ return (
+
+
+
{code}
+
{data.i18n.locale() === "cs" ? "Aktuální" : "Current"}
+
+
—}>
+ {data.billingInterval() === "yearly" ? czk.yearlyFormatted : czk.formatted}
+
+
void data.openCheckout(code)}
+ disabled={data.billingAction() === "checkout"}
+ class={`mt-3 w-full py-2 rounded-lg text-sm font-medium transition-colors disabled:opacity-50 ${isCurrent ? "bg-accent/15 text-accent" : "bg-accent text-canvas hover:bg-accent-hover"}`}
+ >
+ {isCurrent
+ ? (data.i18n.locale() === "cs" ? "Změnit období" : "Change interval")
+ : (data.i18n.locale() === "cs" ? "Vybrat" : "Select")}
+
+
+ );
+ })}
+
+
+
- void data.openCheckout()} disabled={data.billingAction() === "checkout"} class="btn-primary disabled:opacity-50">
- {data.billingAction() === "checkout" ? (data.i18n.locale() === "cs" ? "Otevirani..." : "Opening...") : (isTrialing ? data.i18n.t("dashboard.upgrade") : data.i18n.t("dashboard.checkout"))}
-
- void data.openPortal()} class="btn-secondary">{data.i18n.locale() === "cs" ? "Spravovat predplatne" : "Manage subscription"}
+ void data.openPortal()} class="btn-secondary">{data.i18n.locale() === "cs" ? "Spravovat předplatné" : "Manage subscription"}
void data.refreshBilling()} disabled={data.billingAction() === "refresh"} class="btn-secondary disabled:opacity-50">
- {data.billingAction() === "refresh" ? (data.i18n.locale() === "cs" ? "Obnovovani..." : "Refreshing...") : data.i18n.t("dashboard.refreshBilling")}
+ {data.billingAction() === "refresh" ? (data.i18n.locale() === "cs" ? "Obnovování…" : "Refreshing…") : data.i18n.t("dashboard.refreshBilling")}
diff --git a/apps/frontend/src/routes/dashboard/bookings-page.tsx b/apps/frontend/src/routes/dashboard/bookings-page.tsx
index cc1e77d..946e729 100644
--- a/apps/frontend/src/routes/dashboard/bookings-page.tsx
+++ b/apps/frontend/src/routes/dashboard/bookings-page.tsx
@@ -67,21 +67,23 @@ function BookingsPage() {
const handleCreateBooking = async () => {
const bearer = data.token();
if (!bearer || bearer.startsWith("demo.")) {
- data.setDemoNotice(data.i18n.locale() === "cs" ? "V demo rezimu nelze vytvaret rezervace." : "Cannot create bookings in demo mode.");
+ data.setDemoNotice(data.i18n.locale() === "cs" ? "V demo režimu nelze vytvářet rezervace." : "Cannot create bookings in demo mode.");
setShowNewBooking(false); return;
}
setCreatingBooking(true);
try {
- await (apiClient as any).POST("/v1/catalog/bookings", {
+ const response = await (apiClient as any).POST("/v1/catalog/bookings", {
headers: { Authorization: `Bearer ${bearer}` },
body: {
customerName: newBookingCustomer(), customerEmail: newBookingEmail(), service: newBookingService(),
startsAt: new Date(`${newBookingDate()}T${newBookingTime()}`).toISOString(), notes: newBookingNotes()
}
});
+ if (response.error) throw new Error(typeof response.error === "string" ? response.error : "booking create failed");
setNewBookingCustomer(""); setNewBookingEmail(""); setNewBookingService(""); setNewBookingDate(""); setNewBookingTime(""); setNewBookingNotes("");
setShowNewBooking(false);
- } catch { data.setDemoNotice(data.i18n.locale() === "cs" ? "Vytvoreni rezervace selhalo." : "Failed to create booking."); }
+ void data.refetchSummary();
+ } catch { data.setDemoNotice(data.i18n.locale() === "cs" ? "Vytvoření rezervace selhalo." : "Failed to create booking."); }
finally { setCreatingBooking(false); }
};
@@ -174,7 +176,7 @@ function BookingsPage() {
{booking.customerName}
{isPinned() && }
- {booking.service} • {new Date(booking.startsAt).toLocaleDateString()} {new Date(booking.startsAt).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" })}
+ {booking.service} • {new Date(booking.startsAt).toLocaleDateString(data.i18n.locale() === "cs" ? "cs-CZ" : "en-US", { weekday: "short", day: "numeric", month: "numeric" })} {new Date(booking.startsAt).toLocaleTimeString(data.i18n.locale() === "cs" ? "cs-CZ" : "en-US", { hour: "2-digit", minute: "2-digit" })}
diff --git a/apps/frontend/src/routes/dashboard/customers-page.tsx b/apps/frontend/src/routes/dashboard/customers-page.tsx
index 957f2b4..fab1192 100644
--- a/apps/frontend/src/routes/dashboard/customers-page.tsx
+++ b/apps/frontend/src/routes/dashboard/customers-page.tsx
@@ -1,4 +1,5 @@
-import { Show, createSignal, createMemo } from "solid-js";
+import { Show, createSignal, createMemo, createResource } from "solid-js";
+import { apiClient } from "../../lib/api-client";
import { Input } from "../../components/ui/input";
import { getInitials } from "../../components/dashboard/types";
import { UsersIcon, XIcon } from "../../components/dashboard/icons";
@@ -12,14 +13,31 @@ function CustomersPage() {
const [pinnedCustomerIds, setPinnedCustomerIds] = createSignal>(new Set());
const demoCustomers = [
- { id: "1", name: "Martina Novakova", email: "martina@example.com", phone: "+420 123 456 789", bookingsCount: 5, lastBookingAt: new Date(Date.now() - 86400000).toISOString(), status: "active", notes: "Alergie na silne vune" },
+ { id: "1", name: "Martina Nováková", email: "martina@example.com", phone: "+420 123 456 789", bookingsCount: 5, lastBookingAt: new Date(Date.now() - 86400000).toISOString(), status: "active", notes: "Alergie na silné vůně" },
{ id: "2", name: "David Svoboda", email: "david@example.com", phone: "+420 987 654 321", bookingsCount: 3, lastBookingAt: new Date(Date.now() - 172800000).toISOString(), status: "active", notes: "" },
- { id: "3", name: "Jana KovarovA", email: "jana@example.com", phone: "+420 555 666 777", bookingsCount: 8, lastBookingAt: new Date(Date.now() - 259200000).toISOString(), status: "vip", notes: "Uprednostnuje ranni terminy" },
+ { id: "3", name: "Jana Kovářová", email: "jana@example.com", phone: "+420 555 666 777", bookingsCount: 8, lastBookingAt: new Date(Date.now() - 259200000).toISOString(), status: "vip", notes: "Upřednostňuje ranní termíny" },
{ id: "4", name: "Alice Johnson", email: "alice@example.com", phone: "+420 111 222 333", bookingsCount: 1, lastBookingAt: new Date(Date.now() - 604800000).toISOString(), status: "inactive", notes: "" },
{ id: "5", name: "Bob Smith", email: "bob@example.com", phone: "+420 444 555 666", bookingsCount: 12, lastBookingAt: new Date(Date.now() - 432000000).toISOString(), status: "vip", notes: "Loyal customer" },
];
- const resolvedCustomers = () => demoCustomers;
+ const [customers] = createResource(
+ () => data.token(),
+ async (bearer) => {
+ if (!bearer) return [];
+ if (bearer.startsWith("demo.")) return demoCustomers;
+ try {
+ const response = await (apiClient as any).GET("/v1/catalog/customers", {
+ headers: { Authorization: `Bearer ${bearer}` },
+ params: { query: { limit: 100 } },
+ });
+ return (response.data as any[]) ?? [];
+ } catch {
+ return [];
+ }
+ },
+ );
+
+ const resolvedCustomers = () => customers() ?? [];
const resolvedBookings = () => data.normalizedAllBookings();
const filteredCustomers = createMemo(() => {
@@ -42,9 +60,9 @@ function CustomersPage() {
const statusBadge = (status: string) => {
switch (status) {
- case "active": return {data.i18n.t("dashboard.filter.all")} ;
+ case "active": return {data.i18n.t("dashboard.customerStatus.active")} ;
case "vip": return VIP ;
- default: return {data.i18n.t("dashboard.customer.status")} ;
+ default: return {data.i18n.t("dashboard.customerStatus.inactive")} ;
}
};
@@ -53,7 +71,7 @@ function CustomersPage() {
{data.i18n.t("dashboard.customers")}
-
{filteredCustomers().length} {data.i18n.locale() === "cs" ? "zakazniku" : "customers"}
+
{filteredCustomers().length} {data.i18n.locale() === "cs" ? "zákazníků" : "customers"}
@@ -80,7 +98,7 @@ function CustomersPage() {
});
};
return (
-
{ setSelectedCustomer(customer); setShowCustomerDetail(true); }} class={`w-full text-left flex items-center gap-4 p-4 hover:bg-canvas-subtle/30 transition-colors ${isPinned() ? "bg-accent-soft/40" : ""}`}>
+ { setSelectedCustomer(customer); setShowCustomerDetail(true); }} class={`w-full text-left flex items-center gap-4 p-4 hover:bg-canvas-subtle/30 transition-colors cursor-pointer ${isPinned() ? "bg-accent-soft/40" : ""}`}>
{getInitials(customer.name)}
@@ -113,7 +131,7 @@ function CustomersPage() {
{data.i18n.t("dashboard.customer.totalBookings")}
-
+
);
})}
@@ -151,7 +169,7 @@ function CustomersPage() {
{b.service}
-
{new Date(b.startsAt).toLocaleDateString()}
+
{new Date(b.startsAt).toLocaleDateString(data.i18n.locale() === "cs" ? "cs-CZ" : "en-US")}
{data.i18n.t(`dashboard.${b.status}`)}
diff --git a/apps/frontend/src/routes/dashboard/dashboard-data.ts b/apps/frontend/src/routes/dashboard/dashboard-data.ts
index 8651663..fd829bc 100644
--- a/apps/frontend/src/routes/dashboard/dashboard-data.ts
+++ b/apps/frontend/src/routes/dashboard/dashboard-data.ts
@@ -8,40 +8,53 @@ export type Section = "overview" | "bookings" | "customers" | "zones" | "billing
function createDemoData(i18n: ReturnType) {
const cs = i18n.locale() === "cs";
- const now = new Date();
const fmt = (d: Date) => d.toISOString();
- const addDays = (n: number) => { const d = new Date(now); d.setDate(d.getDate() + n); return d; };
- const addHours = (d: Date, h: number) => { const r = new Date(d); r.setHours(r.getHours() + h); return r; };
+ // Exact local clock time on a day relative to today.
+ const at = (dayOffset: number, hour: number, minute = 0) => {
+ const d = new Date();
+ d.setDate(d.getDate() + dayOffset);
+ d.setHours(hour, minute, 0, 0);
+ return d;
+ };
const services = cs
? ["Masáž", "Kosmetika", "Fyzioterapie", "Manikúra"]
: ["Massage", "Cosmetics", "Physiotherapy", "Manicure"];
const customers = [
- { name: cs ? "Martina Novakova" : "Martina Novakova", email: "martina@example.com" },
- { name: cs ? "David Svoboda" : "David Svoboda", email: "david@example.com" },
- { name: cs ? "Jana KovarovA" : "Jana KovarovA", email: "jana@example.com" },
- { name: cs ? "Alice Johnson" : "Alice Johnson", email: "alice@example.com" },
- { name: cs ? "Bob Smith" : "Bob Smith", email: "bob@example.com" },
+ { name: cs ? "Martina Nováková" : "Martina Novakova", email: "martina@example.com" },
+ { name: "David Svoboda", email: "david@example.com" },
+ { name: cs ? "Jana Kovářová" : "Jana Kovarova", email: "jana@example.com" },
+ { name: "Alice Johnson", email: "alice@example.com" },
+ { name: "Bob Smith", email: "bob@example.com" },
];
+ const salonA = cs ? "Hlavní sál" : "Main hall";
+ const salonB = "Studio B";
+ const staff1 = "Petra M.";
+ const staff2 = "Lucie K.";
const allBookings = [
- { id: "b1", customerName: customers[0].name, customerEmail: customers[0].email, service: services[0], status: "confirmed", startsAt: fmt(addHours(addDays(0), 10)), endsAt: fmt(addHours(addDays(0), 11)), reference: "BOK-001", location: cs ? "Hlavní salon" : "Main Salon", staffName: cs ? "Petra M." : "Petra M.", notes: "" },
- { id: "b2", customerName: customers[1].name, customerEmail: customers[1].email, service: services[1], status: "pending", startsAt: fmt(addHours(addDays(1), 14)), endsAt: fmt(addHours(addDays(1), 15)), reference: "BOK-002", location: cs ? "Hlavní salon" : "Main Salon", staffName: cs ? "Lucie K." : "Lucie K.", notes: "" },
- { id: "b3", customerName: customers[2].name, customerEmail: customers[2].email, service: services[2], status: "confirmed", startsAt: fmt(addHours(addDays(2), 9)), endsAt: fmt(addHours(addDays(2), 10)), reference: "BOK-003", location: cs ? "Studio B" : "Studio B", staffName: "", notes: cs ? "Bolest zad" : "Back pain" },
- { id: "b4", customerName: customers[3].name, customerEmail: customers[3].email, service: services[3], status: "cancelled", startsAt: fmt(addHours(addDays(-1), 11)), endsAt: fmt(addHours(addDays(-1), 12)), reference: "BOK-004", location: cs ? "Hlavní salon" : "Main Salon", staffName: cs ? "Petra M." : "Petra M.", notes: "" },
- { id: "b5", customerName: customers[4].name, customerEmail: customers[4].email, service: services[0], status: "completed", startsAt: fmt(addHours(addDays(-2), 13)), endsAt: fmt(addHours(addDays(-2), 14)), reference: "BOK-005", location: cs ? "Studio B" : "Studio B", staffName: cs ? "Lucie K." : "Lucie K.", notes: "" },
- { id: "b6", customerName: customers[0].name, customerEmail: customers[0].email, service: services[1], status: "confirmed", startsAt: fmt(addHours(addDays(3), 10)), endsAt: fmt(addHours(addDays(3), 11)), reference: "BOK-006", location: cs ? "Hlavní salon" : "Main Salon", staffName: cs ? "Petra M." : "Petra M.", notes: "" },
- { id: "b7", customerName: customers[1].name, customerEmail: customers[1].email, service: services[2], status: "confirmed", startsAt: fmt(addHours(addDays(0), 16)), endsAt: fmt(addHours(addDays(0), 17)), reference: "BOK-007", location: cs ? "Studio B" : "Studio B", staffName: "", notes: "" },
- { id: "b8", customerName: customers[2].name, customerEmail: customers[2].email, service: services[3], status: "pending", startsAt: fmt(addHours(addDays(4), 9)), endsAt: fmt(addHours(addDays(4), 10)), reference: "BOK-008", location: cs ? "Hlavní salon" : "Main Salon", staffName: cs ? "Lucie K." : "Lucie K.", notes: "" },
- { id: "b9", customerName: customers[3].name, customerEmail: customers[3].email, service: services[0], status: "confirmed", startsAt: fmt(addHours(addDays(5), 11)), endsAt: fmt(addHours(addDays(5), 12)), reference: "BOK-009", location: cs ? "Hlavní salon" : "Main Salon", staffName: cs ? "Petra M." : "Petra M.", notes: "" },
- { id: "b10", customerName: customers[4].name, customerEmail: customers[4].email, service: services[1], status: "completed", startsAt: fmt(addHours(addDays(-3), 10)), endsAt: fmt(addHours(addDays(-3), 11)), reference: "BOK-010", location: cs ? "Studio B" : "Studio B", staffName: "", notes: "" },
+ // past days - completed/cancelled history for the trend chart
+ { id: "b10", customerName: customers[4].name, customerEmail: customers[4].email, service: services[1], status: "completed", startsAt: fmt(at(-4, 10)), endsAt: fmt(at(-4, 11)), reference: "BOK-010", location: salonB, staffName: "", notes: "" },
+ { id: "b5", customerName: customers[4].name, customerEmail: customers[4].email, service: services[0], status: "completed", startsAt: fmt(at(-2, 13, 30)), endsAt: fmt(at(-2, 14, 30)), reference: "BOK-005", location: salonB, staffName: staff2, notes: "" },
+ { id: "b12", customerName: customers[1].name, customerEmail: customers[1].email, service: services[2], status: "completed", startsAt: fmt(at(-2, 9)), endsAt: fmt(at(-2, 10)), reference: "BOK-012", location: salonA, staffName: staff1, notes: "" },
+ { id: "b4", customerName: customers[3].name, customerEmail: customers[3].email, service: services[3], status: "cancelled", startsAt: fmt(at(-1, 11)), endsAt: fmt(at(-1, 12)), reference: "BOK-004", location: salonA, staffName: staff1, notes: "" },
+ { id: "b11", customerName: customers[2].name, customerEmail: customers[2].email, service: services[0], status: "completed", startsAt: fmt(at(-1, 15, 30)), endsAt: fmt(at(-1, 16, 30)), reference: "BOK-011", location: salonA, staffName: staff2, notes: "" },
+ // today
+ { id: "b1", customerName: customers[0].name, customerEmail: customers[0].email, service: services[0], status: "confirmed", startsAt: fmt(at(0, 10)), endsAt: fmt(at(0, 11)), reference: "BOK-001", location: salonA, staffName: staff1, notes: "" },
+ { id: "b7", customerName: customers[1].name, customerEmail: customers[1].email, service: services[2], status: "confirmed", startsAt: fmt(at(0, 16)), endsAt: fmt(at(0, 17)), reference: "BOK-007", location: salonB, staffName: "", notes: "" },
+ // upcoming
+ { id: "b2", customerName: customers[1].name, customerEmail: customers[1].email, service: services[1], status: "pending", startsAt: fmt(at(1, 14)), endsAt: fmt(at(1, 15)), reference: "BOK-002", location: salonA, staffName: staff2, notes: "" },
+ { id: "b3", customerName: customers[2].name, customerEmail: customers[2].email, service: services[2], status: "confirmed", startsAt: fmt(at(2, 9)), endsAt: fmt(at(2, 10)), reference: "BOK-003", location: salonB, staffName: "", notes: cs ? "Bolest zad" : "Back pain" },
+ { id: "b6", customerName: customers[0].name, customerEmail: customers[0].email, service: services[1], status: "confirmed", startsAt: fmt(at(3, 10)), endsAt: fmt(at(3, 11)), reference: "BOK-006", location: salonA, staffName: staff1, notes: "" },
+ { id: "b8", customerName: customers[2].name, customerEmail: customers[2].email, service: services[3], status: "pending", startsAt: fmt(at(4, 9)), endsAt: fmt(at(4, 10)), reference: "BOK-008", location: salonA, staffName: staff2, notes: "" },
+ { id: "b9", customerName: customers[3].name, customerEmail: customers[3].email, service: services[0], status: "confirmed", startsAt: fmt(at(5, 11)), endsAt: fmt(at(5, 12)), reference: "BOK-009", location: salonA, staffName: staff1, notes: "" },
];
return {
summary: {
tenantName: cs ? "Demo Studio" : "Demo Studio",
- tenantSlug: "demo-studio",
- publicBookingUrl: "http://localhost:3000/book/demo-studio",
+ tenantSlug: "studio-atelier",
+ publicBookingUrl: "http://localhost:3000/book/studio-atelier",
kpis: [
{ label: i18n.t("dashboard.kpi.bookings"), value: 42, change: "+12%", trend: "up" },
{ label: i18n.t("dashboard.kpi.cancelled"), value: 3, change: "-5%", trend: "down" },
@@ -59,7 +72,7 @@ function createDemoData(i18n: ReturnType) {
},
bootstrap: {
tenantName: cs ? "Demo Studio" : "Demo Studio",
- slug: "demo-studio",
+ slug: "studio-atelier",
brand: { primaryColor: "#c25e3a" },
locale: cs ? "cs" : "en",
timezone: "Europe/Prague",
@@ -81,6 +94,7 @@ export interface DashboardData {
token: () => string | null | undefined;
isDemoMode: () => boolean;
resolvedSummary: () => any;
+ refetchSummary: () => void;
resolvedBootstrap: () => any;
resolvedBilling: () => any;
normalizedKpis: () => any[];
@@ -100,7 +114,7 @@ export interface DashboardData {
setBillingAction: (v: "checkout" | "refresh" | "portal" | null) => void;
billingInterval: () => "monthly" | "yearly";
setBillingInterval: (v: "monthly" | "yearly") => void;
- openCheckout: () => Promise;
+ openCheckout: (planCode?: string) => Promise;
openPortal: () => Promise;
refreshBilling: () => Promise;
showIntegrationModal: () => boolean;
@@ -137,7 +151,7 @@ export function DashboardDataProvider(props: { children: any }) {
const isDemoMode = () => token()?.startsWith("demo.") ?? false;
const demoData = createMemo(() => createDemoData(i18n));
- const [summary] = createResource(token, async (bearer) => {
+ const [summary, { refetch: refetchSummary }] = createResource(token, async (bearer) => {
if (!bearer) return null;
if (bearer.startsWith("demo.")) return demoData().summary;
const response = await apiClient.GET("/v1/dashboard/summary", { headers: { Authorization: `Bearer ${bearer}` } });
@@ -175,9 +189,26 @@ export function DashboardDataProvider(props: { children: any }) {
} catch { return null; }
});
- const resolvedSummary = () => (summary.latest as any) ?? (isDemoMode() ? demoData().summary : undefined);
- const resolvedBootstrap = () => (bootstrap.latest as any) ?? (isDemoMode() ? demoData().bootstrap : undefined);
- const resolvedBilling = () => (billing.latest as any) ?? (isDemoMode() ? demoData().billing : undefined);
+ // Demo data is reactive to locale changes — prefer it over the stale resource value.
+ const resolvedSummary = () => (isDemoMode() ? demoData().summary : (summary.latest as any)) ?? undefined;
+ const resolvedBootstrap = () => (isDemoMode() ? demoData().bootstrap : (bootstrap.latest as any)) ?? undefined;
+
+ const planNames: Record = { starter: "Starter", pro: "Pro", business: "Business" };
+ const resolvedBilling = () => {
+ const raw = (isDemoMode() ? demoData().billing : (billing.latest as any)) ?? undefined;
+ if (!raw) return undefined;
+ const ent = raw.entitlements ?? {};
+ return {
+ ...raw,
+ subscriptionStatus: raw.status ?? raw.subscriptionStatus ?? "inactive",
+ planName: planNames[raw.planCode] ?? raw.planCode ?? "Starter",
+ trialDaysRemaining: raw.trialDays ?? raw.trialDaysRemaining ?? 0,
+ entitlements: {
+ ...ent,
+ maxBookings: ent.maxBookingsMonth ?? ent.maxBookings,
+ },
+ };
+ };
const normalizedKpis = createMemo(() => (resolvedSummary()?.kpis ?? []).map((kpi: any) => ({
...kpi, trend: kpi.trend ?? "neutral", change: kpi.change ?? "—",
@@ -204,7 +235,7 @@ export function DashboardDataProvider(props: { children: any }) {
const isDashboardReady = () => !!token() && !bootstrap.loading && !summary.loading && !billing.loading;
- const openCheckout = async () => {
+ const openCheckout = async (planCode?: string) => {
const bearer = token();
if (!bearer || bearer.startsWith("demo.")) { setDemoNotice(i18n.locale() === "cs" ? "V demo režimu nelze upravovat předplatné." : "Cannot modify billing in demo mode."); return; }
setBillingAction("checkout");
@@ -212,10 +243,10 @@ export function DashboardDataProvider(props: { children: any }) {
try {
const response = await (apiClient as any).POST("/v1/billing/checkout", {
headers: { Authorization: `Bearer ${bearer}` },
- body: { interval: billingInterval() },
+ body: { planCode: planCode ?? resolvedBilling()?.planCode ?? "pro", currency: "czk", billingInterval: billingInterval() },
});
- if (response.data?.url) window.location.href = response.data.url;
- else throw new Error("No checkout URL");
+ if (response.data?.checkoutUrl) window.location.href = response.data.checkoutUrl;
+ else throw new Error(response.error ? String(response.error) : "No checkout URL");
} catch (err) { setBillingError(err instanceof Error ? err.message : String(err)); }
finally { setBillingAction(null); }
};
@@ -256,6 +287,7 @@ export function DashboardDataProvider(props: { children: any }) {
token: () => token(),
isDemoMode,
resolvedSummary,
+ refetchSummary,
resolvedBootstrap,
resolvedBilling,
normalizedKpis,
diff --git a/apps/frontend/src/routes/dashboard/layout.tsx b/apps/frontend/src/routes/dashboard/layout.tsx
index a64bedb..dd053ee 100644
--- a/apps/frontend/src/routes/dashboard/layout.tsx
+++ b/apps/frontend/src/routes/dashboard/layout.tsx
@@ -31,8 +31,9 @@ function DashboardShell(props: { children: JSX.Element }) {
const activeSection = () => {
const p = location.pathname;
- if (p === "/dashboard" || p === "/dashboard/") return "overview";
- const match = navItems.find(item => p === item.path || p.startsWith(item.path + "/"));
+ const exact = navItems.find(item => p === item.path);
+ if (exact) return exact.id;
+ const match = navItems.find(item => item.id !== "overview" && p.startsWith(item.path + "/"));
return match?.id ?? "overview";
};
@@ -88,41 +89,49 @@ function DashboardShell(props: { children: JSX.Element }) {
const Sidebar = () => (
-
+
-
+
{navItems.map((item) => (
+
+
+
{data.i18n.t(item.label)}
))}
-
-
+
+
-
+
{getInitials(data.auth.session()?.user?.name)}
-
+
{data.auth.session()?.user?.name}
{data.auth.session()?.user?.email}
+
+
+ {data.resolvedBilling()?.planName}
+
+
setIsMobileMenuOpen(false)}
class={`
w-full flex items-center gap-3 px-4 py-3 rounded-xl text-sm font-medium transition-all
- ${activeSection() === item.id ? "bg-accent text-canvas" : "text-ink-muted hover:bg-canvas-subtle"}
+ ${activeSection() === item.id ? "bg-accent-subtle text-accent font-semibold" : "text-ink-muted hover:bg-canvas-subtle hover:text-ink"}
`}
>
{data.i18n.t(item.label)}
@@ -220,7 +229,7 @@ function DashboardShell(props: { children: JSX.Element }) {
{data.i18n.t("dashboard.bookingModal.dateTime")}
- {new Date(data.selectedBooking()?.startsAt).toLocaleString(undefined, { weekday: "long", year: "numeric", month: "long", day: "numeric", hour: "2-digit", minute: "2-digit" })}
+ {new Date(data.selectedBooking()?.startsAt).toLocaleString(data.i18n.locale() === "cs" ? "cs-CZ" : "en-US", { weekday: "long", year: "numeric", month: "long", day: "numeric", hour: "2-digit", minute: "2-digit" })}
{data.i18n.t("dashboard.bookingModal.duration")}: {getBookingDuration(data.selectedBooking()?.startsAt, data.selectedBooking()?.endsAt)}
@@ -258,7 +267,7 @@ function DashboardShell(props: { children: JSX.Element }) {
- setIsMobileMenuOpen(true)} aria-label={data.i18n.locale() === "cs" ? "Otevrit menu" : "Open menu"} class="p-2 hover:bg-canvas-subtle rounded-xl transition-all">
+ setIsMobileMenuOpen(true)} aria-label={data.i18n.locale() === "cs" ? "Otevřít menu" : "Open menu"} class="p-2 hover:bg-canvas-subtle rounded-xl transition-all">
@@ -286,7 +295,7 @@ function DashboardShell(props: { children: JSX.Element }) {
-
{data.i18n.locale() === "cs" ? "Vas rezervacni system ceka" : "Your booking system awaits"}
+
{data.i18n.locale() === "cs" ? "Váš rezervační systém čeká" : "Your booking system awaits"}
{data.i18n.t("dashboard.welcome.body")}
window.dispatchEvent(new CustomEvent("openAuthDialog", { detail: { mode: "sign-in" } }))} class="btn-primary w-full sm:w-auto">
@@ -297,7 +306,7 @@ function DashboardShell(props: { children: JSX.Element }) {
{data.i18n.t("dashboard.tryDemo")}
-
{data.i18n.locale() === "cs" ? "Jeste nemate ucet? " : "No account yet? "}
+
{data.i18n.locale() === "cs" ? "Ještě nemáte účet? " : "No account yet? "}
window.dispatchEvent(new CustomEvent("openAuthDialog", { detail: { mode: "register" } }))} class="text-accent hover:text-accent-hover font-medium underline underline-offset-2">{data.i18n.t("auth.createAccount")}
@@ -307,7 +316,7 @@ function DashboardShell(props: { children: JSX.Element }) {
-
{data.i18n.locale() === "cs" ? "Nacitani dashboardu..." : "Loading your dashboard..."}
+
{data.i18n.locale() === "cs" ? "Načítání dashboardu…" : "Loading your dashboard…"}
diff --git a/apps/frontend/src/routes/dashboard/overview-page.tsx b/apps/frontend/src/routes/dashboard/overview-page.tsx
index 4f788b0..3f6e640 100644
--- a/apps/frontend/src/routes/dashboard/overview-page.tsx
+++ b/apps/frontend/src/routes/dashboard/overview-page.tsx
@@ -43,9 +43,9 @@ function OverviewPage() {
))}
- {/* Setup Guide */}
-
-
+ {/* Setup Guide + Trend */}
+
+
@@ -106,8 +106,8 @@ function OverviewPage() {
/>
-
@@ -161,11 +161,10 @@ function OverviewPage() {
);
})()}
- {/* Revenue Chart + Calendar + Activity */}
+ {/* Calendar + Activity */}
-
-
-
+
+
@@ -197,7 +196,7 @@ function OverviewPage() {
{booking.service} • {booking.duration}
-
{new Date(booking.startsAt).toLocaleDateString(undefined, { month: "short", day: "numeric" })}
+
{new Date(booking.startsAt).toLocaleDateString(data.i18n.locale() === "cs" ? "cs-CZ" : "en-US", { weekday: "short", month: "short", day: "numeric" })}
data.token(),
+ async (bearer) => {
+ if (!bearer || bearer.startsWith("demo.")) return [];
+ try {
+ const response = await (apiClient as any).GET("/v1/tenants/email-templates", { headers: { Authorization: `Bearer ${bearer}` } });
+ return (response.data?.templates as any[]) ?? [];
+ } catch {
+ return [];
+ }
+ },
+ );
+
+ // Prefill the editor from the stored template whenever the type changes.
+ createEffect(() => {
+ const tpl = (emailTemplates() ?? []).find((t: any) => t.type === activeEmailType());
+ setEmailSubject(tpl?.subject ?? "");
+ setEmailBody(tpl?.bodyText ?? tpl?.bodyHtml ?? "");
+ });
+
const presetColors = [
{ name: data.i18n.locale() === "cs" ? "Hnědá" : "Terracotta", color: "#c25e3a" },
{ name: data.i18n.locale() === "cs" ? "Zelená" : "Sage", color: "#5a7c5a" },
@@ -68,7 +88,7 @@ function SettingsPage() {
B
Bookra
-
{data.i18n.locale() === "cs" ? "Rezervujte si termin" : "Book an appointment"}
+
{data.i18n.locale() === "cs" ? "Rezervujte si termín" : "Book an appointment"}
{data.i18n.locale() === "cs" ? "Rezervovat" : "Book Now"}
@@ -109,7 +129,8 @@ function SettingsPage() {
if (!bearer || bearer.startsWith("demo.")) { data.setDemoNotice(data.i18n.locale() === "cs" ? "V demo režimu nelze ukládat." : "Cannot save in demo mode."); return; }
setEmailSaving(true);
try {
- await (apiClient as any).PUT("/v1/tenants/email-template", { headers: { Authorization: `Bearer ${bearer}` }, body: { type: activeEmailType(), subject: emailSubject(), body: emailBody() } });
+ await (apiClient as any).PUT("/v1/tenants/email-template", { headers: { Authorization: `Bearer ${bearer}` }, body: { type: activeEmailType(), subject: emailSubject(), body: emailBody(), isEnabled: true } });
+ void refetchTemplates();
data.setDemoNotice(data.i18n.locale() === "cs" ? "Šablona uložena." : "Template saved.");
} catch { data.setDemoNotice(data.i18n.locale() === "cs" ? "Chyba při ukládání." : "Save failed."); }
finally { setEmailSaving(false); }
diff --git a/apps/frontend/src/routes/dashboard/zones-page.tsx b/apps/frontend/src/routes/dashboard/zones-page.tsx
index 593a890..476b836 100644
--- a/apps/frontend/src/routes/dashboard/zones-page.tsx
+++ b/apps/frontend/src/routes/dashboard/zones-page.tsx
@@ -1,31 +1,146 @@
-import { Show, createSignal } from "solid-js";
+import { For, Show, createResource, createSignal } from "solid-js";
+import { apiClient } from "../../lib/api-client";
import { Input } from "../../components/ui/input";
import { Select } from "../../components/ui/select";
-import { LocationMap } from "../../components/location-map";
-import { MapPinIcon, PlusIcon, XIcon, BanIcon, ClockIcon, SparklesIcon } from "../../components/dashboard/icons";
+import { MapPinIcon, PlusIcon, BanIcon, ClockIcon, SparklesIcon, Trash2Icon } from "../../components/dashboard/icons";
import { DashboardLayout, useDashboardData } from "./layout";
function ZonesPage() {
const data = useDashboardData();
+ const cs = () => data.i18n.locale() === "cs";
const [activeTab, setActiveTab] = createSignal<"zones" | "blocked" | "hours">("zones");
const [showAddZone, setShowAddZone] = createSignal(false);
const [newZoneName, setNewZoneName] = createSignal("");
const [newZoneType, setNewZoneType] = createSignal("room");
const [newZoneCapacity, setNewZoneCapacity] = createSignal(10);
const [showUpgradePrompt, setShowUpgradePrompt] = createSignal(false);
+ const [newBlockedDate, setNewBlockedDate] = createSignal("");
+ const [newBlockedReason, setNewBlockedReason] = createSignal("");
+ const [blockedSaving, setBlockedSaving] = createSignal(false);
+ const [hoursSaving, setHoursSaving] = createSignal
(null);
- const resolvedLocations = () => [
- { id: "z1", name: "Main Hall", type: "hall", capacity: 20, bookingsToday: 5 },
- { id: "z2", name: "Private Room A", type: "private", capacity: 4, bookingsToday: 2 },
- { id: "z3", name: "Treatment Room", type: "room", capacity: 2, bookingsToday: 8 },
- ];
+ const authHeaders = () => ({ headers: { Authorization: `Bearer ${data.token()}` } });
+ const [locations, { refetch: refetchLocations }] = createResource(
+ () => data.token(),
+ async (bearer) => {
+ if (!bearer) return [];
+ if (bearer.startsWith("demo.")) {
+ return [
+ { id: "z1", name: cs() ? "Hlavní sál" : "Main Hall", type: "hall", capacity: 20 },
+ { id: "z2", name: cs() ? "Soukromá místnost A" : "Private Room A", type: "private", capacity: 4 },
+ { id: "z3", name: cs() ? "Ošetřovna" : "Treatment Room", type: "room", capacity: 2 },
+ ];
+ }
+ const response = await (apiClient as any).GET("/v1/catalog/locations", authHeaders());
+ return (response.data as any[]) ?? [];
+ },
+ );
+
+ const [blockedDays, { refetch: refetchBlocked }] = createResource(
+ () => [data.token(), activeTab()] as const,
+ async ([bearer, tab]) => {
+ if (!bearer || tab !== "blocked") return [];
+ if (bearer.startsWith("demo.")) return [];
+ const response = await (apiClient as any).GET("/v1/catalog/blocked-days", authHeaders());
+ return (response.data as any[]) ?? [];
+ },
+ );
+
+ const [workingHours, { refetch: refetchHours, mutate: mutateHours }] = createResource(
+ () => [data.token(), activeTab()] as const,
+ async ([bearer, tab]) => {
+ if (!bearer || tab !== "hours") return [];
+ if (bearer.startsWith("demo.")) {
+ return [0, 1, 2, 3, 4, 5, 6].map((d) => ({ dayOfWeek: d, open: d === 0 ? "" : "09:00", close: d === 0 ? "" : "18:00", isOpen: d !== 0 }));
+ }
+ const response = await (apiClient as any).GET("/v1/catalog/working-hours", authHeaders());
+ const rows = (response.data as any[]) ?? [];
+ return [0, 1, 2, 3, 4, 5, 6].map((d) => {
+ const row = rows.find((r) => r.dayOfWeek === d);
+ return { dayOfWeek: d, open: (row?.open ?? "").slice(0, 5), close: (row?.close ?? "").slice(0, 5), isOpen: row?.isOpen ?? false };
+ });
+ },
+ );
+
+ const resolvedLocations = () => locations() ?? [];
const locationLimit = () => data.resolvedBilling()?.entitlements?.maxLocations ?? 3;
- const canAddLocation = () => resolvedLocations().length < locationLimit();
+ const canAddLocation = () => locationLimit() < 0 || resolvedLocations().length < locationLimit();
- const handleAddZone = () => {
+ const handleAddZone = async () => {
+ const bearer = data.token();
+ if (!newZoneName().trim()) return;
if (!canAddLocation()) { setShowUpgradePrompt(true); setShowAddZone(false); return; }
- setNewZoneName(""); setNewZoneType("room"); setNewZoneCapacity(10); setShowAddZone(false);
+ if (!bearer || bearer.startsWith("demo.")) {
+ data.setDemoNotice(cs() ? "V demo režimu nelze ukládat." : "Cannot save in demo mode.");
+ return;
+ }
+ try {
+ await (apiClient as any).POST("/v1/catalog/locations", {
+ ...authHeaders(),
+ body: { name: newZoneName().trim(), type: newZoneType(), capacity: newZoneCapacity() },
+ });
+ setNewZoneName(""); setNewZoneType("room"); setNewZoneCapacity(10); setShowAddZone(false);
+ void refetchLocations();
+ } catch {
+ data.setDemoNotice(cs() ? "Uložení zóny selhalo." : "Failed to save location.");
+ }
+ };
+
+ const handleDeleteZone = async (id: string) => {
+ const bearer = data.token();
+ if (!bearer || bearer.startsWith("demo.")) { data.setDemoNotice(cs() ? "V demo režimu nelze mazat." : "Cannot delete in demo mode."); return; }
+ try {
+ await (apiClient as any).DELETE(`/v1/catalog/locations/${id}`, authHeaders());
+ void refetchLocations();
+ } catch {
+ data.setDemoNotice(cs() ? "Smazání selhalo." : "Delete failed.");
+ }
+ };
+
+ const handleAddBlockedDay = async () => {
+ const bearer = data.token();
+ if (!newBlockedDate()) return;
+ if (!bearer || bearer.startsWith("demo.")) { data.setDemoNotice(cs() ? "V demo režimu nelze ukládat." : "Cannot save in demo mode."); return; }
+ setBlockedSaving(true);
+ try {
+ await (apiClient as any).POST("/v1/catalog/blocked-days", {
+ ...authHeaders(),
+ body: { date: new Date(`${newBlockedDate()}T00:00:00`).toISOString(), type: "closure", reason: newBlockedReason().trim() || (cs() ? "Zavřeno" : "Closed") },
+ });
+ setNewBlockedDate(""); setNewBlockedReason("");
+ void refetchBlocked();
+ } catch {
+ data.setDemoNotice(cs() ? "Uložení selhalo." : "Save failed.");
+ } finally {
+ setBlockedSaving(false);
+ }
+ };
+
+ const handleDeleteBlockedDay = async (id: string) => {
+ const bearer = data.token();
+ if (!bearer || bearer.startsWith("demo.")) return;
+ try {
+ await (apiClient as any).DELETE(`/v1/catalog/blocked-days/${id}`, authHeaders());
+ void refetchBlocked();
+ } catch { /* noop */ }
+ };
+
+ const handleSaveHours = async (day: { dayOfWeek: number; open: string; close: string; isOpen: boolean }) => {
+ const bearer = data.token();
+ if (!bearer || bearer.startsWith("demo.")) { data.setDemoNotice(cs() ? "V demo režimu nelze ukládat." : "Cannot save in demo mode."); return; }
+ setHoursSaving(day.dayOfWeek);
+ try {
+ await (apiClient as any).PUT(`/v1/catalog/working-hours/${day.dayOfWeek}`, {
+ ...authHeaders(),
+ body: { open: day.open, close: day.close, isOpen: day.isOpen },
+ });
+ void refetchHours();
+ } catch {
+ data.setDemoNotice(cs() ? "Uložení selhalo." : "Save failed.");
+ } finally {
+ setHoursSaving(null);
+ }
};
const typeLabel = (type: string) => {
@@ -33,12 +148,19 @@ function ZonesPage() {
return map[type] || type;
};
+ const dayLabel = (d: number) => {
+ const labels = cs()
+ ? ["Neděle", "Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota"]
+ : ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
+ return labels[d];
+ };
+
return (
{data.i18n.t("dashboard.zones")}
-
{resolvedLocations().length} {data.i18n.locale() === "cs" ? "zon" : "zones"}
+
{resolvedLocations().length} {cs() ? "zón" : "locations"}
@@ -55,39 +177,38 @@ function ZonesPage() {
{activeTab() === "zones" && (
-
-
-
-
-
{data.i18n.t("dashboard.zones")}
-
setShowUpgradePrompt(true)} class="flex items-center gap-2 px-4 py-2 bg-canvas-subtle text-ink-muted border border-border rounded-lg text-sm opacity-60 cursor-not-allowed">
-
- {data.i18n.t("dashboard.zone.limitReached")}
-
- }>
- setShowAddZone(true)} class="btn-primary text-sm"> {data.i18n.t("dashboard.zone.add")}
-
-
-
-
-
{data.i18n.t("dashboard.zone.add")}
-
- setNewZoneName(e.currentTarget.value)} placeholder={data.i18n.locale() === "cs" ? "např. Hlavní sál" : "e.g. Main Hall"} />
- setNewZoneType(v)} options={[{ value: "room", label: data.i18n.t("dashboard.zone.rooms") }, { value: "private", label: data.i18n.t("dashboard.zone.private") }, { value: "hall", label: data.i18n.t("dashboard.zone.hall") }]} />
- setNewZoneCapacity(parseInt(e.currentTarget.value) || 10)} />
-
-
- {data.i18n.t("dashboard.settings.save")}
- setShowAddZone(false)} class="btn-secondary text-sm">{data.i18n.t("common.cancel")}
-
-
+
+
+
{data.i18n.t("dashboard.zones")}
+
setShowUpgradePrompt(true)} class="flex items-center gap-2 px-4 py-2 bg-canvas-subtle text-ink-muted border border-border rounded-lg text-sm opacity-60 cursor-not-allowed">
+
+ {data.i18n.t("dashboard.zone.limitReached")}
+
+ }>
+ setShowAddZone(true)} class="btn-primary text-sm"> {data.i18n.t("dashboard.zone.add")}
+
+
+
+
{data.i18n.t("dashboard.zone.add")}
+
+ setNewZoneName(e.currentTarget.value)} placeholder={cs() ? "např. Hlavní sál" : "e.g. Main Hall"} />
+ setNewZoneType(v)} options={[{ value: "room", label: data.i18n.t("dashboard.zone.rooms") }, { value: "private", label: data.i18n.t("dashboard.zone.private") }, { value: "hall", label: data.i18n.t("dashboard.zone.hall") }]} />
+ setNewZoneCapacity(parseInt(e.currentTarget.value) || 10)} />
+
+
+ void handleAddZone()} class="btn-primary text-sm">{data.i18n.t("dashboard.settings.save")}
+ setShowAddZone(false)} class="btn-secondary text-sm">{data.i18n.t("common.cancel")}
+
+
+
+
0} fallback={
+
+
{data.i18n.t("dashboard.empty.title")}
+
{cs() ? "Přidejte první zónu nebo místnost." : "Add your first location or room."}
+
+ }>
{resolvedLocations().map((zone: any) => (
@@ -98,30 +219,98 @@ function ZonesPage() {
{typeLabel(zone.type)} • {data.i18n.t("dashboard.zone.capacity")}: {zone.capacity}
-
-
{zone.bookingsToday}
-
{zone.bookingsToday} {data.i18n.locale() === "cs" ? "rezervací dnes" : "bookings today"}
-
+ void handleDeleteZone(zone.id)} class="p-2 text-ink-subtle hover:text-red-600 hover:bg-red-50 rounded-lg transition-colors" aria-label={cs() ? "Smazat" : "Delete"}>
+
+
))}
-
+
)}
{activeTab() === "blocked" && (
-
-
-
{data.i18n.t("dashboard.empty.title")}
-
{data.i18n.locale() === "cs" ? "Spravujte zóny, blokované dny a pracovní dobu." : "Manage locations, blocked days and working hours."}
+
+
+
{data.i18n.t("dashboard.zone.blockedDays")}
+
{cs() ? "Dny, kdy nejsou dostupné rezervace." : "Days when bookings are unavailable."}
+
+
+
0} fallback={
+
+
+
{data.i18n.t("dashboard.empty.title")}
+
{cs() ? "Zatím žádné blokované dny." : "No blocked days yet."}
+
+ }>
+
+
+ {(day: any) => (
+
+
+
{new Date(day.date).toLocaleDateString(cs() ? "cs-CZ" : "en-US", { weekday: "long", day: "numeric", month: "long", year: "numeric" })}
+
{day.reason || "—"}
+
+
void handleDeleteBlockedDay(day.id)} class="p-2 text-ink-subtle hover:text-red-600 hover:bg-red-50 rounded-lg transition-colors">
+
+ )}
+
+
+
)}
{activeTab() === "hours" && (
-
-
-
{data.i18n.t("dashboard.empty.title")}
-
{data.i18n.locale() === "cs" ? "Nastavení pracovní doby bude dostupné brzy." : "Working hours settings coming soon."}
+
+
+
{data.i18n.t("dashboard.zone.workingHours")}
+
{cs() ? "Nastavte dny a časy, kdy přijímáte rezervace." : "Set the days and times you accept bookings."}
+
+
+
+ {(day) => {
+ const isOpen = () => day.isOpen;
+ const setField = (patch: Partial) => {
+ const updated = { ...day, ...patch };
+ mutateHours((workingHours() ?? []).map((d) => (d.dayOfWeek === day.dayOfWeek ? updated : d)));
+ };
+ return (
+
+ );
+ }}
+
+
)}
@@ -133,8 +322,8 @@ function ZonesPage() {
{data.i18n.t("dashboard.locationLimitReached")}
-
{data.i18n.locale() === "cs" ? "Váš plán umožňuje pouze omezený počet lokací. Pro více lokací upgradujte." : "Your plan only allows a limited number of locations. Upgrade for more."}
-
+
{cs() ? "Váš plán umožňuje pouze omezený počet lokací. Pro více lokací upgradujte." : "Your plan only allows a limited number of locations. Upgrade for more."}
+
{ setShowUpgradePrompt(false); void data.openCheckout(); }} class="px-4 py-2 bg-accent text-canvas text-sm font-medium rounded-lg hover:bg-accent-hover transition-colors">{data.i18n.t("dashboard.upgrade")}
setShowUpgradePrompt(false)} class="px-4 py-2 bg-canvas-subtle text-ink-muted text-sm font-medium rounded-lg hover:bg-canvas transition-colors">{data.i18n.t("dashboard.close")}
diff --git a/apps/frontend/src/routes/legal-route.tsx b/apps/frontend/src/routes/legal-route.tsx
index 84d8275..6caa543 100644
--- a/apps/frontend/src/routes/legal-route.tsx
+++ b/apps/frontend/src/routes/legal-route.tsx
@@ -44,8 +44,8 @@ export function LegalRoute() {
{
title: isCs() ? "3. Předplatné a platby" : "3. Subscription and payments",
body: isCs()
- ? "Placené plány se účtují předem prostřednictvím platební brány Paddle nebo Stripe. Aktivní plán určuje dostupné limity, rozšíření a podpůrné funkce. Při roční platbě je poskytována sleva oproti měsíčnímu zúčtování. Uživatel může předplatné kdykoliv zrušit; přístup zůstává do konce zaplaceného období. Neposkytujeme refundace za již zaplacená období."
- : "Paid plans are billed in advance through Paddle or Stripe. The active plan determines available limits, add-ons, and support features. Annual billing includes a discount compared to monthly billing. Users may cancel anytime; access continues until the end of the paid period. No refunds are provided for already-paid periods.",
+ ? "Placené plány se účtují předem prostřednictvím platební brány Stripe. Aktivní plán určuje dostupné limity, rozšíření a podpůrné funkce. Při roční platbě je poskytována sleva oproti měsíčnímu zúčtování. Uživatel může předplatné kdykoliv zrušit; přístup zůstává do konce zaplaceného období. Neposkytujeme refundace za již zaplacená období."
+ : "Paid plans are billed in advance through Stripe. The active plan determines available limits, add-ons, and support features. Annual billing includes a discount compared to monthly billing. Users may cancel anytime; access continues until the end of the paid period. No refunds are provided for already-paid periods.",
},
{
title: isCs() ? "4. Odpovědnost a omezení" : "4. Liability and limitations",
diff --git a/apps/frontend/tsconfig.tsbuildinfo b/apps/frontend/tsconfig.tsbuildinfo
index ae991e3..aea3823 100644
--- a/apps/frontend/tsconfig.tsbuildinfo
+++ b/apps/frontend/tsconfig.tsbuildinfo
@@ -1 +1 @@
-{"root":["./src/App.tsx","./src/main.tsx","./src/components/animated-list.tsx","./src/components/bookra-character.tsx","./src/components/dashboard-mockup.tsx","./src/components/floating-dock.tsx","./src/components/hover-feature-cards.tsx","./src/components/index.ts","./src/components/integration-modal.tsx","./src/components/location-map.tsx","./src/components/pinned-list.tsx","./src/components/shell.tsx","./src/components/sms-settings.tsx","./src/components/video-player.tsx","./src/components/widget-builder.tsx","./src/components/dashboard/activity-timeline.tsx","./src/components/dashboard/calendar-view.tsx","./src/components/dashboard/icons.tsx","./src/components/dashboard/kpi-card.tsx","./src/components/dashboard/notification-dropdown.tsx","./src/components/dashboard/revenue-chart.tsx","./src/components/dashboard/types.ts","./src/components/ui/avatar.tsx","./src/components/ui/badge.tsx","./src/components/ui/button.tsx","./src/components/ui/card.tsx","./src/components/ui/dialog.tsx","./src/components/ui/index.ts","./src/components/ui/input.tsx","./src/components/ui/select.tsx","./src/components/ui/skeleton.tsx","./src/components/ui/tabs.tsx","./src/components/ui/textarea.tsx","./src/components/ui/tooltip.tsx","./src/lib/api-client.ts","./src/lib/map.ts","./src/lib/paddle.ts","./src/lib/sentry.ts","./src/lib/stripe.ts","./src/lib/types.ts","./src/providers/auth-provider.tsx","./src/providers/i18n-provider.tsx","./src/providers/theme-provider.tsx","./src/routes/about-route.tsx","./src/routes/auth-callback-route.tsx","./src/routes/booking-manage-route.tsx","./src/routes/contact-route.tsx","./src/routes/dashboard-route.tsx","./src/routes/home-route.tsx","./src/routes/legal-route.tsx","./src/routes/not-found-route.tsx","./src/routes/pricing-route.tsx","./src/routes/public-booking-route.tsx","./src/routes/dashboard/billing-page.tsx","./src/routes/dashboard/bookings-page.tsx","./src/routes/dashboard/customers-page.tsx","./src/routes/dashboard/dashboard-data.ts","./src/routes/dashboard/layout.tsx","./src/routes/dashboard/overview-page.tsx","./src/routes/dashboard/settings-page.tsx","./src/routes/dashboard/zones-page.tsx","./vite.config.ts"],"version":"5.9.3"}
\ No newline at end of file
+{"root":["./src/App.tsx","./src/main.tsx","./src/components/animated-list.tsx","./src/components/bookra-character.tsx","./src/components/dashboard-mockup.tsx","./src/components/floating-dock.tsx","./src/components/hover-feature-cards.tsx","./src/components/index.ts","./src/components/integration-modal.tsx","./src/components/location-map.tsx","./src/components/pinned-list.tsx","./src/components/shell.tsx","./src/components/sms-settings.tsx","./src/components/video-player.tsx","./src/components/widget-builder.tsx","./src/components/dashboard/activity-timeline.tsx","./src/components/dashboard/calendar-view.tsx","./src/components/dashboard/icons.tsx","./src/components/dashboard/kpi-card.tsx","./src/components/dashboard/notification-dropdown.tsx","./src/components/dashboard/revenue-chart.tsx","./src/components/dashboard/types.ts","./src/components/ui/avatar.tsx","./src/components/ui/badge.tsx","./src/components/ui/button.tsx","./src/components/ui/card.tsx","./src/components/ui/dialog.tsx","./src/components/ui/index.ts","./src/components/ui/input.tsx","./src/components/ui/select.tsx","./src/components/ui/skeleton.tsx","./src/components/ui/tabs.tsx","./src/components/ui/textarea.tsx","./src/components/ui/tooltip.tsx","./src/lib/api-client.ts","./src/lib/map.ts","./src/lib/sentry.ts","./src/lib/types.ts","./src/providers/auth-provider.tsx","./src/providers/i18n-provider.tsx","./src/providers/theme-provider.tsx","./src/routes/about-route.tsx","./src/routes/auth-callback-route.tsx","./src/routes/booking-manage-route.tsx","./src/routes/contact-route.tsx","./src/routes/home-route.tsx","./src/routes/legal-route.tsx","./src/routes/not-found-route.tsx","./src/routes/pricing-route.tsx","./src/routes/public-booking-route.tsx","./src/routes/dashboard/billing-page.tsx","./src/routes/dashboard/bookings-page.tsx","./src/routes/dashboard/customers-page.tsx","./src/routes/dashboard/dashboard-data.ts","./src/routes/dashboard/layout.tsx","./src/routes/dashboard/overview-page.tsx","./src/routes/dashboard/settings-page.tsx","./src/routes/dashboard/zones-page.tsx","./vite.config.ts"],"version":"5.9.3"}
\ No newline at end of file
diff --git a/docs/ci-cd.md b/docs/ci-cd.md
index f8ec00c..5856ce5 100644
--- a/docs/ci-cd.md
+++ b/docs/ci-cd.md
@@ -3,10 +3,8 @@
## Current shape
- CI runs in GitHub Actions from `.github/workflows/ci.yml`.
-- Frontend CD should stay on Vercel Git deployments.
-- Backend and auth-service can stay on Railway Git autodeploys, or consume GHCR images built by CI.
-
-This keeps Vercel/Railway Git deployment simple while still producing immutable backend images on every production push.
+- Frontend CD stays on Vercel Git deployments.
+- Backend stays on Railway Git autodeploys, or consumes the GHCR image built by CI.
## CI coverage
@@ -14,11 +12,10 @@ Every pull request, push to `main`, and manual workflow run executes:
1. frontend install, API client generation, typecheck, and production build
2. backend `go test` + `go build`
-3. auth-service `go test` + `go build`
-4. Docker image builds for `apps/backend` and `apps/auth-service`
-5. GHCR publishing on push to `main` and manual workflow runs
+3. Docker image build for `apps/backend`
+4. GHCR publishing on push to `main` and manual workflow runs
-Go is pinned to `1.26.2`, the latest stable release at time of setup.
+Go is pinned via `apps/backend/go.mod`.
## Platform CD wiring
@@ -32,39 +29,31 @@ Go is pinned to `1.26.2`, the latest stable release at time of setup.
### Railway
-Create two Railway services from this repo:
+Create one Railway service from this repo:
- backend root directory: `apps/backend`
-- auth-service root directory: `apps/auth-service`
+- code-based config: [apps/backend/railway.json](/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/railway.json:1)
-Both services now have code-based Railway config:
-
-- [apps/backend/railway.json](/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/railway.json:1)
-- [apps/auth-service/railway.json](/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/railway.json:1)
-
-Enable for each service:
+Enable:
- GitHub Autodeploys
- Wait for CI
-Health checks:
+Health check:
- backend: `/healthz`
-- auth-service: `/health`
Published images:
- `ghcr.io/
/bookra-backend:`
-- `ghcr.io//bookra-auth-service:`
Use SHA tags for production rollouts. `latest` is emitted only from the default branch.
## Local mirror of CI
```bash
-PATH=/usr/local/go/bin:$PATH npm run verify
+npm run verify
docker build -t bookra-backend-ci ./apps/backend
-docker build -t bookra-auth-ci ./apps/auth-service
```
## Low-RAM act checks
@@ -81,9 +70,3 @@ act push -W .github/workflows/ci.yml -j go \
--concurrent-jobs 1 -b \
--container-options='--memory=3g --cpus=2'
```
-
-Notes:
-
-- `frontend` job was executed successfully with `act`.
-- `go` job was executed successfully with `act` for `apps/backend`.
-- Dockerfiles were validated with direct `docker build`, which is cheaper than running full Docker-action matrix through `act`.
diff --git a/docs/superpowers/specs/2026-04-21-paddle-billing-migration-design.md b/docs/superpowers/specs/2026-04-21-paddle-billing-migration-design.md
deleted file mode 100644
index b6240cc..0000000
--- a/docs/superpowers/specs/2026-04-21-paddle-billing-migration-design.md
+++ /dev/null
@@ -1,515 +0,0 @@
-# Paddle Billing Migration Design
-
-Date: 2026-04-21
-Project: Bookra
-Status: Proposed
-
-## Goal
-
-Replace all Stripe billing with Paddle, remove duplicate billing logic from `apps/auth-service`, and simplify runtime architecture to two deployables:
-
-- `apps/frontend`
-- `apps/backend`
-
-Target outcome:
-
-- one billing system only: Paddle
-- one backend only: `apps/backend`
-- frontend launches Paddle checkout directly through Paddle.js
-- backend owns all billing truth, webhook processing, and tenant entitlement sync
-- auth uses Neon Auth as primary production auth path
-- local and production env files match actual runtime needs
-
-## Current State
-
-Current repo has duplicated auth and billing responsibilities:
-
-- `apps/backend` already serves product APIs, tenant logic, scheduling, booking, and active dashboard billing APIs
-- `apps/auth-service` still carries standalone auth plus duplicate Stripe billing APIs and admin screens
-- frontend dashboard already talks to backend billing routes, not auth-service billing routes
-- backend billing implementation is fully Stripe-specific in config, DB columns, repository names, webhook route, OpenAPI, generated API client, and UI copy
-
-This creates three problems:
-
-1. duplicated billing implementations
-2. Stripe-specific naming embedded into core data model
-3. deploy/runtime confusion from keeping `auth-service` alive when production auth should use Neon Auth directly
-
-## Non-Goals
-
-This migration does not add:
-
-- end-customer booking checkout
-- multi-provider billing abstraction
-- migration support for existing live Stripe subscribers
-
-There are no published users yet, so clean cutover is correct.
-
-## Recommended Approach
-
-Do full hard cutover in single migration:
-
-- delete Stripe integration
-- add Paddle integration
-- move any still-needed auth-service auth capabilities into backend only if frontend/backend still require them
-- otherwise decommission auth-service entirely from runtime and docs
-
-Rationale:
-
-- project is not live
-- no customer migration burden
-- avoids carrying dead provider compatibility code
-- reduces long-term maintenance and deployment risk
-
-## Target Architecture
-
-### Runtime
-
-- frontend:
- - Neon Auth client
- - Paddle.js client-side token
- - generated API client for backend
-- backend:
- - Neon Auth JWT verification
- - Paddle API integration
- - Paddle webhook receiver
- - billing state persistence
- - customer portal session generation
-
-`apps/auth-service` becomes retired code. Preferred end state: remove it from active project workflows and docs. If any still-useful auth handlers remain, port only those needed pieces into backend first, then remove auth-service.
-
-### Billing Source of Truth
-
-Backend is sole source of truth for:
-
-- current plan
-- subscription status
-- billing customer ID
-- billing subscription ID
-- latest normalized billing snapshot
-- entitlement updates after Paddle webhooks or explicit refresh
-
-Frontend never treats checkout success redirect as proof of paid state. Redirect only triggers refetch.
-
-## Paddle Integration Model
-
-### Frontend
-
-Frontend loads Paddle.js using official hosted script or package wrapper and initializes once with `VITE_PADDLE_CLIENT_TOKEN`.
-
-When user starts checkout:
-
-- dashboard gets plan/price readiness from backend
-- frontend calls backend `POST /v1/billing/checkout`
-- backend returns resolved `priceId`, customer hints, and checkout metadata
-- frontend opens `Paddle.Checkout.open()` with:
- - `items`
- - customer email or Paddle customer ID if already known
- - `customData`
- - success/cancel URLs pointing back to dashboard
-
-Reason for backend-generated checkout input:
-
-- keeps plan/price resolution on server
-- prevents frontend drift from env/config
-- makes auditing easier
-
-`customData` must include at least:
-
-- `tenantId`
-- `tenantSlug`
-- `userId`
-- `userEmail`
-- `planCode`
-- `source=bookra-dashboard`
-
-Paddle docs state checkout `customData` is copied to resulting subscription for recurring purchases, making webhook reconciliation deterministic.
-
-### Backend
-
-Backend uses Paddle API key over Bearer auth.
-
-Backend responsibilities:
-
-- resolve plan/currency to Paddle price ID
-- return checkout launch payload
-- verify `Paddle-Signature`
-- dedupe webhook events
-- fetch and normalize Paddle customer/subscription data
-- update tenant billing state
-- create customer portal sessions for authenticated users
-
-### Customer Portal
-
-Do not build custom card-update or cancel-subscription UI.
-
-Backend adds `POST /v1/billing/portal`:
-
-- find tenant billing customer
-- create Paddle customer portal session
-- optionally include known subscription ID for deep links
-- return temporary portal URL
-
-Frontend opens returned URL.
-
-## Data Model Changes
-
-Current schema uses Stripe-specific names. Replace with provider-neutral billing names.
-
-### Tenants table
-
-Rename:
-
-- `stripe_customer_id` -> `billing_customer_id`
-- `stripe_subscription_id` -> `billing_subscription_id`
-
-Add:
-
-- `billing_provider text not null default 'paddle'`
-
-### billing_snapshots table
-
-Rename:
-
-- `stripe_customer_id` -> `billing_customer_id`
-- `stripe_subscription_id` -> `billing_subscription_id`
-
-Keep:
-
-- `tenant_id`
-- `status`
-- `plan_code`
-- `currency`
-- `price_id`
-- `current_period_start`
-- `current_period_end`
-- `cancel_at_period_end`
-- `updated_at`
-
-Add if absent:
-
-- `billing_provider text not null default 'paddle'`
-
-### subscription_events table
-
-Rename:
-
-- `stripe_event_id` -> `billing_provider_event_id`
-
-Add if absent:
-
-- `billing_provider text not null default 'paddle'`
-
-Webhook dedupe unique key becomes provider-aware:
-
-- unique (`billing_provider`, `billing_provider_event_id`)
-
-### Repository/API naming
-
-Rename repository methods away from Stripe:
-
-- `GetTenantByStripeCustomerID` -> `GetTenantByBillingCustomerID`
-- `UpdateTenantStripeCustomerID` -> `UpdateTenantBillingCustomerID`
-- `RecordStripeEvent` -> `RecordBillingEvent`
-
-Struct field names must match.
-
-## API Contract Changes
-
-### Keep
-
-Keep frontend-facing routes where practical to reduce frontend churn:
-
-- `GET /v1/billing/subscription`
-- `POST /v1/billing/checkout`
-- `POST /v1/billing/refresh`
-
-### Add
-
-- `POST /v1/billing/portal`
-
-### Replace
-
-- remove `POST /v1/webhooks/stripe`
-- add `POST /v1/webhooks/paddle`
-
-### Response shape updates
-
-Billing snapshot payload should remain mostly stable, but provider-specific wording changes:
-
-- `checkoutUrlAvailable` now means Paddle checkout ready
-- `syncAvailable` now means Paddle API configured
-
-Checkout creation response should carry data frontend needs for Paddle.js, not a Stripe hosted session URL:
-
-- `priceId`
-- `customerId` optional
-- `customerAuthToken` optional if needed later for saved payment methods
-- `successRedirectUrl`
-- `cancelRedirectUrl`
-- `customData`
-
-OpenAPI operation and backend type should use explicit name `CheckoutLaunchResponse`.
-
-### OpenAPI and generated client
-
-Must update:
-
-- `apps/backend/openapi/bookra.openapi.yaml`
-- generated package in `packages/api-client`
-
-No handwritten duplicated TS billing types after migration.
-
-## Auth-Service Collapse
-
-### Decision
-
-Move project to frontend + backend only.
-
-### Practical meaning
-
-- production auth stays Neon Auth
-- backend verifies Neon Auth JWTs
-- auth-service billing removed fully
-- auth-service docs/env/examples removed or replaced with deprecation note
-
-### Implementation path
-
-1. inspect whether frontend still depends on any auth-service-only endpoints
-2. move any still-needed endpoint behavior into backend if required
-3. remove auth-service billing code
-4. remove auth-service from root docs, env examples, verification flow, and deployment assumptions
-
-If no remaining required auth-service endpoint exists after Neon Auth-first changes already landed, app can retire auth-service immediately.
-
-## Config Contract
-
-### Frontend env
-
-Required:
-
-- `VITE_API_BASE_URL`
-- `VITE_NEON_AUTH_URL`
-- `VITE_PADDLE_CLIENT_TOKEN`
-
-Optional:
-
-- existing non-billing frontend vars
-
-### Backend env
-
-Required for billing:
-
-- `BOOKRA_PADDLE_API_KEY`
-- `BOOKRA_PADDLE_WEBHOOK_SECRET`
-- `BOOKRA_PADDLE_ENV`
-- `BOOKRA_PADDLE_STARTER_CZK_PRICE_ID`
-- `BOOKRA_PADDLE_STARTER_USD_PRICE_ID`
-- `BOOKRA_PADDLE_PRO_CZK_PRICE_ID`
-- `BOOKRA_PADDLE_PRO_USD_PRICE_ID`
-- `BOOKRA_PADDLE_BUSINESS_CZK_PRICE_ID`
-- `BOOKRA_PADDLE_BUSINESS_USD_PRICE_ID`
-
-Required for auth/runtime:
-
-- `BOOKRA_DATABASE_URL`
-- `BOOKRA_NEON_AUTH_URL`
-- existing backend app config vars already used for frontend URL, jobs, email, etc.
-
-### Remove from active env examples
-
-- all `STRIPE_*`
-- all `BOOKRA_STRIPE_*`
-- auth-service billing env
-
-## Billing State Mapping
-
-Normalize Paddle subscription states into internal states used by Bookra.
-
-Initial mapping:
-
-- Paddle active/trialing -> `active`
-- Paddle paused -> `past_due` or `paused` depending on internal enum support
-- Paddle canceled -> `canceled`
-- missing subscription with no billing customer -> `inactive`
-- incomplete/failed transaction states -> `past_due`
-
-If internal model lacks `paused`, keep current internal enum and map conservatively, documented in code comments.
-
-Plan mapping:
-
-- Paddle price ID -> internal `plan_code`
-- backend owns exact mapping through env-configured price matrix
-- no plan inference from frontend text labels
-
-## Webhook Handling
-
-Subscribe at minimum to:
-
-- `subscription.created`
-- `subscription.updated`
-- `subscription.activated`
-- `subscription.canceled`
-- `subscription.paused`
-- `subscription.resumed`
-- `transaction.completed`
-- `transaction.updated`
-- `transaction.payment_failed` if used by Paddle event catalog for current account
-
-Handler flow:
-
-1. read raw body
-2. verify `Paddle-Signature`
-3. extract event ID, type, customer/subscription IDs, and `custom_data`
-4. idempotency insert into `subscription_events`
-5. resolve tenant by:
- - `custom_data.tenantId` first if present and trustworthy
- - else `billing_customer_id`
-6. fetch latest subscription/customer state from Paddle API when needed
-7. write normalized billing snapshot
-8. update tenant plan/status
-9. return `200`
-
-Webhook payload is trigger, not final source of truth. Backend may fetch fresh Paddle entity state before persisting.
-
-## Error Handling
-
-Backend returns honest states only.
-
-Rules:
-
-- missing Paddle API key => checkout disabled, refresh unavailable, `503` for checkout/refresh attempts
-- missing price ID for selected plan => `400`
-- invalid webhook signature => `400`
-- duplicate webhook => `200` no-op
-- unknown tenant mapping => `202` or `200` with logged warning, depending on handler style
-- Paddle API failure during sync => `503` for user-triggered refresh, retryable log path for webhook
-
-Frontend rules:
-
-- no fake “paid” notice after redirect
-- success query param triggers backend refresh + refetch only
-- if checkout not ready, button disabled and message says Paddle not configured
-- “Manage billing” hidden or disabled until portal available
-
-## Testing Plan
-
-### Unit
-
-Backend unit tests for:
-
-- plan/currency -> price ID resolution
-- config readiness helpers
-- checkout launch payload creation
-- webhook signature validation
-- webhook idempotency
-- subscription normalization
-- customer portal session creation
-- repository rename/regression coverage
-
-### Integration
-
-Backend integration tests for:
-
-- DB migrations on fresh database
-- DB migrations from old Stripe-shaped schema
-- webhook event persistence
-- entitlement updates after simulated Paddle event payloads
-
-### Frontend verification
-
-- typecheck/build passes
-- billing UI opens Paddle checkout through injected abstraction or browser global
-- billing refresh/portal actions behave correctly for ready/not-ready states
-- copy no longer says Stripe anywhere
-
-### Live sandbox smoke
-
-Using Paddle sandbox:
-
-1. create sandbox API key
-2. create client-side token
-3. create sandbox prices for starter/pro/business in CZK/USD
-4. configure webhook destination to backend
-5. complete checkout from dashboard
-6. verify webhook updates tenant state
-7. verify refresh endpoint returns normalized active subscription
-8. verify customer portal session opens
-9. cancel/pause through portal if supported, then verify webhook sync
-
-## Documentation Changes
-
-Update:
-
-- root `README.md`
-- `project.md`
-- `apps/backend/README.md`
-- root `.env.example`
-- `apps/backend/.env.example`
-- `apps/frontend/.env.example`
-
-Remove or deprecate:
-
-- `apps/auth-service/README.md`
-- `apps/auth-service/.env.example`
-
-Frontend/legal copy must replace “Stripe” with “Paddle” or provider-neutral wording.
-
-## Implementation Order
-
-1. schema migration from Stripe names to billing names
-2. repository/model rename
-3. backend config rename from Stripe env to Paddle env
-4. backend Paddle service integration
-5. webhook route swap
-6. portal session endpoint
-7. OpenAPI update + client regeneration
-8. frontend Paddle.js integration + dashboard action changes
-9. auth-service billing removal
-10. docs/env cleanup
-11. full test + sandbox smoke
-
-## Risks
-
-### Risk: auth-service still secretly needed
-
-Mitigation:
-
-- inspect frontend/runtime references before deleting
-- port only remaining necessary auth endpoint behavior into backend
-
-### Risk: Paddle event/state model differs from current internal assumptions
-
-Mitigation:
-
-- normalize through dedicated mapping layer
-- use webhook-triggered sync against live Paddle API instead of trusting event payload alone
-
-### Risk: schema rename breaks old queries
-
-Mitigation:
-
-- update sqlc SQL and repository code in same change set
-- run all backend tests plus migration smoke
-
-### Risk: frontend Paddle global initialization issues
-
-Mitigation:
-
-- wrap Paddle.js loading/init in dedicated provider/module
-- initialize once
-- fail closed when token missing
-
-## Definition of Done
-
-Migration done when all conditions true:
-
-- no Stripe dependency in active codepaths
-- no frontend user-facing Stripe copy remains
-- backend billing routes use Paddle only
-- webhook route is Paddle only
-- auth-service not needed for production runtime
-- env examples document only actual required vars
-- OpenAPI and generated TS client match backend
-- local tests pass
-- Paddle sandbox checkout + webhook + portal smoke pass
diff --git a/graphify-out/.graphify_analysis.json b/graphify-out/.graphify_analysis.json
deleted file mode 100644
index bd4a133..0000000
--- a/graphify-out/.graphify_analysis.json
+++ /dev/null
@@ -1,1135 +0,0 @@
-{
- "communities": {
- "0": [
- "apps_auth_service_internal_auth_neon_go",
- "apps_auth_service_internal_billing_service_go",
- "apps_auth_service_internal_config_config_go",
- "apps_auth_service_internal_config_config_test_go",
- "apps_backend_internal_billing_service_go",
- "apps_backend_internal_config_config_go",
- "auth_neon_newneonverifier",
- "auth_neonverifier",
- "auth_neonverifier_close",
- "auth_neonverifier_enabled",
- "auth_neonverifier_verify",
- "billing_checkoutsession",
- "billing_paymentmethod",
- "billing_service",
- "billing_service_checkoutavailable",
- "billing_service_checkoutavailableforplan",
- "billing_service_createcheckoutsession",
- "billing_service_createportalsession",
- "billing_service_customdatastring",
- "billing_service_customersnapshotkey",
- "billing_service_defaultplancode",
- "billing_service_derefstring",
- "billing_service_displaypricesforplan",
- "billing_service_ensurecustomer",
- "billing_service_entitlementsforplan",
- "billing_service_extractcustomerid",
- "billing_service_firstnonempty",
- "billing_service_getcustomermapping",
- "billing_service_getcustomersnapshot",
- "billing_service_getsubscription",
- "billing_service_handlewebhook",
- "billing_service_hasconfiguredprices",
- "billing_service_newservice",
- "billing_service_nonesnapshot",
- "billing_service_normalizecurrency",
- "billing_service_normalizeplancode",
- "billing_service_normalizesubscriptionstatus",
- "billing_service_parserfc3339ptr",
- "billing_service_plancodeforprice",
- "billing_service_priceforplan",
- "billing_service_refresh",
- "billing_service_resolvewebhooktenant",
- "billing_service_storecustomermapping",
- "billing_service_subscriptionrank",
- "billing_service_syncpaddledata",
- "billing_service_syncstripedatatokv",
- "billing_service_test_testkvkeyshape",
- "billing_service_timeperiodend",
- "billing_service_timeperiodstart",
- "billing_service_tosnapshot",
- "billing_service_unixptr",
- "billing_service_usercustomerkey",
- "billing_subscriptionsnapshot",
- "billing_usercustomermapping",
- "billing_useridentity",
- "billing_webhookenvelope",
- "config_config",
- "config_config_boolfromenv",
- "config_config_getenv",
- "config_config_getenvallowempty",
- "config_config_load",
- "config_config_normalizepaddleenvironment",
- "config_config_normalizeplancode",
- "config_config_paddlecheckoutconfigured",
- "config_config_paddleconfigured",
- "config_config_paddlepricematrixfromenv",
- "config_config_paddlewebhookconfigured",
- "config_config_stripecheckoutready",
- "config_config_stripehasanypriceconfigured",
- "config_config_stripesecretconfigured",
- "config_config_stripewebhookconfigured",
- "config_config_test_testloaddefaultsauthserviceportto8081",
- "config_config_test_teststripecheckoutreadyrequiressecretandprice",
- "config_config_test_teststripereadinesshelpers",
- "config_config_uniquestrings",
- "config_config_validateruntimerequirements",
- "config_config_valueordefault",
- "handlers_handlers_new",
- "notifications_email_templates_trimspace"
- ],
- "1": [
- "apps_frontend_src_lib_paddle_ts",
- "apps_frontend_src_routes_booking_manage_route_tsx",
- "apps_frontend_src_routes_dashboard_route_tsx",
- "lib_paddle_getpaddle",
- "lib_paddle_paddleconfigured",
- "routes_booking_manage_route_formatdate",
- "routes_booking_manage_route_formattime",
- "routes_booking_manage_route_handlecancel",
- "routes_booking_manage_route_handlereschedule",
- "routes_booking_manage_route_iscancelling",
- "routes_booking_manage_route_isrescheduling",
- "routes_booking_manage_route_reference",
- "routes_booking_manage_route_token",
- "routes_dashboard_route_alertcircleicon",
- "routes_dashboard_route_bellicon",
- "routes_dashboard_route_billingpricelabel",
- "routes_dashboard_route_bookingstats",
- "routes_dashboard_route_calendardaysicon",
- "routes_dashboard_route_changemonth",
- "routes_dashboard_route_changesection",
- "routes_dashboard_route_checkcircleicon",
- "routes_dashboard_route_chevronlefticon",
- "routes_dashboard_route_chevronrighticon",
- "routes_dashboard_route_clockicon",
- "routes_dashboard_route_creditcardicon",
- "routes_dashboard_route_demodata",
- "routes_dashboard_route_filteredcustomers",
- "routes_dashboard_route_getcustomerbookings",
- "routes_dashboard_route_getdemocustomers",
- "routes_dashboard_route_handleaddblockedday",
- "routes_dashboard_route_handleaddzone",
- "routes_dashboard_route_handlecancelbooking",
- "routes_dashboard_route_handlecreatebooking",
- "routes_dashboard_route_handledeleteblockedday",
- "routes_dashboard_route_handlereschedulebooking",
- "routes_dashboard_route_handlesavebrand",
- "routes_dashboard_route_handleupdatebooking",
- "routes_dashboard_route_hastenant",
- "routes_dashboard_route_iscs",
- "routes_dashboard_route_isdashboardready",
- "routes_dashboard_route_isdemomode",
- "routes_dashboard_route_layoutdashboardicon",
- "routes_dashboard_route_logouticon",
- "routes_dashboard_route_menuicon",
- "routes_dashboard_route_morehorizontalicon",
- "routes_dashboard_route_nextmonth",
- "routes_dashboard_route_openbillingportal",
- "routes_dashboard_route_openbookingdetail",
- "routes_dashboard_route_opencheckout",
- "routes_dashboard_route_opencustomerdetail",
- "routes_dashboard_route_plusicon",
- "routes_dashboard_route_prevmonth",
- "routes_dashboard_route_refreshbilling",
- "routes_dashboard_route_resolvedallbookings",
- "routes_dashboard_route_resolvedbilling",
- "routes_dashboard_route_resolvedblockeddays",
- "routes_dashboard_route_resolvedbookings",
- "routes_dashboard_route_resolvedbootstrap",
- "routes_dashboard_route_resolvedcustomers",
- "routes_dashboard_route_resolvedlocations",
- "routes_dashboard_route_resolvedsummary",
- "routes_dashboard_route_resolvedworkinghours",
- "routes_dashboard_route_settings2icon",
- "routes_dashboard_route_sparklesicon",
- "routes_dashboard_route_sparklineclass",
- "routes_dashboard_route_trend",
- "routes_dashboard_route_trendclass",
- "routes_dashboard_route_trendingdownicon",
- "routes_dashboard_route_trendingupicon",
- "routes_dashboard_route_usercircleicon",
- "routes_dashboard_route_usersicon",
- "routes_dashboard_route_xicon"
- ],
- "2": [
- "db_memoryrepository",
- "db_memoryrepository_appendwaitlistentry",
- "db_memoryrepository_createblockedday",
- "db_memoryrepository_createbooking",
- "db_memoryrepository_createcustomer",
- "db_memoryrepository_createlocation",
- "db_memoryrepository_createnotificationdeliverylog",
- "db_memoryrepository_createreminderjob",
- "db_memoryrepository_createtenantforuser",
- "db_memoryrepository_deleteblockedday",
- "db_memoryrepository_deletecustomer",
- "db_memoryrepository_deletelocation",
- "db_memoryrepository_ensureuseridentity",
- "db_memoryrepository_getbookingbyreference",
- "db_memoryrepository_getbrandprofile",
- "db_memoryrepository_getcustomerbookingscount",
- "db_memoryrepository_getcustomerbyemail",
- "db_memoryrepository_getcustomerbyid",
- "db_memoryrepository_getcustomerlastbooking",
- "db_memoryrepository_getdashboardmetrics",
- "db_memoryrepository_getlocationbyid",
- "db_memoryrepository_getsubscriptionsnapshot",
- "db_memoryrepository_gettenantbybillingcustomerid",
- "db_memoryrepository_gettenantbyid",
- "db_memoryrepository_gettenantbyslug",
- "db_memoryrepository_gettenantmembershipbyuserid",
- "db_memoryrepository_listavailabilityrulesbytenant",
- "db_memoryrepository_listblockeddaysbytenant",
- "db_memoryrepository_listbookingsbytenantbetween",
- "db_memoryrepository_listclasssessionsbytenant",
- "db_memoryrepository_listcustomersbytenant",
- "db_memoryrepository_listduereminderjobs",
- "db_memoryrepository_listlocationsbytenant",
- "db_memoryrepository_listservicesbytenant",
- "db_memoryrepository_listworkinghoursbytenant",
- "db_memoryrepository_markreminderjobdispatched",
- "db_memoryrepository_reschedulebooking",
- "db_memoryrepository_updateblockedday",
- "db_memoryrepository_updatebookingstatus",
- "db_memoryrepository_updatecustomer",
- "db_memoryrepository_updatelocation",
- "db_memoryrepository_updatetenantbillingcustomerid",
- "db_memoryrepository_updatetenantbillingstate",
- "db_memoryrepository_updateworkinghours",
- "db_memoryrepository_upsertsubscriptionsnapshot",
- "db_pgrepository_createtenantforuser",
- "db_repository_defaultavailabilityblocks",
- "db_repository_maxint"
- ],
- "3": [
- "db_memoryrepository_recordbillingevent",
- "db_pgrepository",
- "db_pgrepository_appendwaitlistentry",
- "db_pgrepository_createblockedday",
- "db_pgrepository_createbooking",
- "db_pgrepository_createcustomer",
- "db_pgrepository_createlocation",
- "db_pgrepository_createnotificationdeliverylog",
- "db_pgrepository_createreminderjob",
- "db_pgrepository_deleteblockedday",
- "db_pgrepository_deletecustomer",
- "db_pgrepository_deletelocation",
- "db_pgrepository_ensureuseridentity",
- "db_pgrepository_getbookingbyreference",
- "db_pgrepository_getbrandprofile",
- "db_pgrepository_getcustomerbookingscount",
- "db_pgrepository_getcustomerbyemail",
- "db_pgrepository_getcustomerbyid",
- "db_pgrepository_getcustomerlastbooking",
- "db_pgrepository_getdashboardmetrics",
- "db_pgrepository_getlocationbyid",
- "db_pgrepository_getsubscriptionsnapshot",
- "db_pgrepository_gettenantbybillingcustomerid",
- "db_pgrepository_gettenantbyid",
- "db_pgrepository_gettenantbyslug",
- "db_pgrepository_gettenantmembershipbyuserid",
- "db_pgrepository_listavailabilityrulesbytenant",
- "db_pgrepository_listblockeddaysbytenant",
- "db_pgrepository_listbookingsbytenantbetween",
- "db_pgrepository_listclasssessionsbytenant",
- "db_pgrepository_listcustomersbytenant",
- "db_pgrepository_listduereminderjobs",
- "db_pgrepository_listlocationsbytenant",
- "db_pgrepository_listservicesbytenant",
- "db_pgrepository_listworkinghoursbytenant",
- "db_pgrepository_markreminderjobdispatched",
- "db_pgrepository_recordbillingevent",
- "db_pgrepository_reschedulebooking",
- "db_pgrepository_updateblockedday",
- "db_pgrepository_updatebookingstatus",
- "db_pgrepository_updatecustomer",
- "db_pgrepository_updatelocation",
- "db_pgrepository_updatetenantbillingcustomerid",
- "db_pgrepository_updatetenantbillingstate",
- "db_pgrepository_updateworkinghours",
- "db_pgrepository_upsertsubscriptionsnapshot",
- "db_repository_firstnonempty"
- ],
- "4": [
- "apps_backend_internal_domain_models_go",
- "domain_availabilityblockrequest",
- "domain_blockedday",
- "domain_bookingdefaultsrequest",
- "domain_brandprofile",
- "domain_cancelbookingrequest",
- "domain_checkoutlaunchresponse",
- "domain_checkoutsessionrequest",
- "domain_createblockeddayrequest",
- "domain_createbookingresponse",
- "domain_createcustomerrequest",
- "domain_createlocationrequest",
- "domain_customer",
- "domain_customerbookingview",
- "domain_dashboardkpi",
- "domain_dashboardsummary",
- "domain_dispatchreminderjobsrequest",
- "domain_dispatchreminderjobsresponse",
- "domain_emailnotification",
- "domain_emailtemplate",
- "domain_location",
- "domain_onboardtenantrequest",
- "domain_plandisplayprice",
- "domain_planentitlements",
- "domain_portalsessionresponse",
- "domain_principal",
- "domain_publicavailability",
- "domain_reschedulebookingrequest",
- "domain_sendemailrequest",
- "domain_subscriptionsnapshot",
- "domain_teaminviterequest",
- "domain_tenantbootstrap",
- "domain_timeslot",
- "domain_trackingstatus",
- "domain_upcomingbooking",
- "domain_updateblockeddayrequest",
- "domain_updatecustomerrequest",
- "domain_updatelocationrequest",
- "domain_updateworkinghoursrequest",
- "domain_widgetsnippet",
- "domain_workinghours"
- ],
- "5": [
- "api_main_main",
- "api_main_runmigrations",
- "api_server",
- "api_server_allowedorigins",
- "api_server_authorizejobrunner",
- "api_server_close",
- "api_server_handler",
- "api_server_newserver",
- "api_server_test_testdispatchreminderjobsacceptsconfiguredjobrunnerkey",
- "api_server_test_testdispatchreminderjobsrequiresjobrunnerkey",
- "api_server_widgetjavascript",
- "apps_auth_service_cmd_api_main_go",
- "apps_backend_cmd_api_main_go",
- "apps_backend_internal_api_server_go",
- "apps_backend_internal_api_server_test_go",
- "apps_backend_internal_auth_middleware_go",
- "apps_backend_internal_auth_neon_go",
- "apps_backend_internal_db_pool_go",
- "apps_backend_internal_httpx_middleware_go",
- "auth_middleware_principalfromcontext",
- "auth_middleware_requireauth",
- "auth_neon_newverifier",
- "auth_verifier",
- "auth_verifier_close",
- "auth_verifier_enabled",
- "auth_verifier_verify",
- "db_pool_connect",
- "db_pool_newpools",
- "db_pools",
- "db_pools_close",
- "db_pools_databaseconfigured",
- "db_repository_newrepository",
- "domain_createbookingrequest",
- "httpx_middleware_newratelimiter",
- "httpx_middleware_securityheaders",
- "httpx_ratelimiter",
- "httpx_ratelimiter_cleanuploop",
- "httpx_ratelimiter_getvisitor",
- "httpx_ratelimiter_middleware",
- "httpx_visitor"
- ],
- "6": [
- "apps_auth_service_internal_handlers_admin_go",
- "apps_auth_service_internal_handlers_handlers_go",
- "handlers_admin_newadmindashboard",
- "handlers_admindashboard",
- "handlers_admindashboard_getconfig",
- "handlers_admindashboard_getprices",
- "handlers_admindashboard_getstats",
- "handlers_admindashboard_registerroutes",
- "handlers_admindashboard_renderdashboard",
- "handlers_checkoutrequest",
- "handlers_handler",
- "handlers_handler_claimsfromcontext",
- "handlers_handler_createcheckoutsession",
- "handlers_handler_getme",
- "handlers_handler_getsubscription",
- "handlers_handler_googleauth",
- "handlers_handler_googlecallback",
- "handlers_handler_listplans",
- "handlers_handler_listproviders",
- "handlers_handler_loginwithpassword",
- "handlers_handler_logout",
- "handlers_handler_refreshsubscription",
- "handlers_handler_refreshtoken",
- "handlers_handler_registerroutes",
- "handlers_handler_registerwithpassword",
- "handlers_handler_requireauth",
- "handlers_handler_sendmagiclink",
- "handlers_handler_stripewebhook",
- "handlers_handler_verifybearertoken",
- "handlers_handler_verifymagiclink",
- "handlers_handlers_detectlocale",
- "handlers_handlers_generatestate",
- "handlers_handlers_oauthcookiesecure",
- "handlers_handlers_timeoutmiddleware",
- "handlers_loginrequest",
- "handlers_passwordloginrequest",
- "handlers_passwordregisterrequest",
- "handlers_refreshrequest",
- "handlers_verifyrequest"
- ],
- "7": [
- "apps_auth_service_internal_auth_service_test_go",
- "apps_auth_service_internal_billing_service_test_go",
- "apps_backend_internal_billing_service_test_go",
- "apps_backend_internal_bookings_service_test_go",
- "apps_backend_internal_notifications_service_test_go",
- "apps_backend_internal_tenancy_service_test_go",
- "auth_service_test_testgeneratetokensproducesverifiableaccessandrefreshtokens",
- "auth_service_test_testrefreshtokensrejectsinvalidtoken",
- "auth_service_test_testrefreshtokensreturnsrotatedpair",
- "billing_service_test_testcheckoutavailableforplanrequiresconfiguredplan",
- "billing_service_test_testcheckoutavailableforplanrequiressecret",
- "billing_service_test_testconfig",
- "billing_service_test_testcreatecheckoutrequirespaddleconfig",
- "billing_service_test_testcreatecheckoutreturnslaunchpayload",
- "billing_service_test_testcreateportalsessionrequirescustomer",
- "billing_service_test_testgetsubscriptiondisablescheckoutwhenwebhookmissing",
- "billing_service_test_testgetsubscriptionenablescheckoutwhenpaddleconfigured",
- "billing_service_test_testgetsubscriptionfallsbacktosnapshotandentitlements",
- "billing_service_test_testpriceforplanusesconfiguredplancodesonly",
- "billing_service_test_testrefreshrequirespaddlekeywhencustomerexists",
- "bookings_service_test_testavailabilitygeneratesupcomingslots",
- "bookings_service_test_testcreateappointmentrejectsconflict",
- "bookings_service_test_testcreateappointmentrequirestenantservice",
- "bookings_service_test_testcreateclassfallsbacktowaitlistwhencapacityreached",
- "bookings_service_test_testcreateclassrequiresexistingsession",
- "bookings_service_test_testcreateschedulesreminderjobforupcomingappointment",
- "db_repository_newmemoryrepository",
- "notifications_service_test_testdispatchduefailsunknownchannel",
- "notifications_service_test_testdispatchdueprocessespendingemailreminders",
- "notifications_service_test_testdispatchrequestcontractshape",
- "tenancy_service_newservice",
- "tenancy_service_test_testbootstrapresolvesmembershipafteridentitysync",
- "tenancy_service_test_testbootstrapreturnsshellwhenmembershipmissing",
- "tenancy_service_test_testonboardcreatestenantforauthenticateduser",
- "tenancy_service_test_testonboardrejectsinvalidslug"
- ],
- "8": [
- "apps_backend_internal_db_repository_go",
- "db_availabilityblockrecord",
- "db_availabilityrulerecord",
- "db_billingsnapshotrecord",
- "db_blockeddayrecord",
- "db_bookingrecord",
- "db_brandprofilerecord",
- "db_classsessionrecord",
- "db_createblockeddayparams",
- "db_createbookingparams",
- "db_createcustomerparams",
- "db_createdbooking",
- "db_createlocationparams",
- "db_createtenantforuserparams",
- "db_customerrecord",
- "db_dashboardmetrics",
- "db_locationrecord",
- "db_notificationdeliverylogparams",
- "db_reminderjobparams",
- "db_reminderjobrecord",
- "db_repository",
- "db_repository_reference",
- "db_repository_stringptr",
- "db_servicerecord",
- "db_teaminviterecord",
- "db_tenantmembershiprecord",
- "db_tenantrecord",
- "db_updateblockeddayparams",
- "db_updatecustomerparams",
- "db_updatelocationparams",
- "db_updateworkinghoursparams",
- "db_waitlistentryparams",
- "db_workinghoursrecord"
- ],
- "9": [
- "apps_frontend_src_components_widget_builder_tsx",
- "components_widget_builder_buttonicon",
- "components_widget_builder_calendaricon",
- "components_widget_builder_checkicon",
- "components_widget_builder_codeicon",
- "components_widget_builder_copyicon",
- "components_widget_builder_copytoclipboard",
- "components_widget_builder_dragicon",
- "components_widget_builder_externallinkicon",
- "components_widget_builder_eyeicon",
- "components_widget_builder_floatingicon",
- "components_widget_builder_generatecode",
- "components_widget_builder_generatedmapelementid",
- "components_widget_builder_generatemapcode",
- "components_widget_builder_handledragend",
- "components_widget_builder_handledragover",
- "components_widget_builder_handledragstart",
- "components_widget_builder_iframeicon",
- "components_widget_builder_json",
- "components_widget_builder_lockicon",
- "components_widget_builder_mapicon",
- "components_widget_builder_modalicon",
- "components_widget_builder_moonicon",
- "components_widget_builder_moveicon",
- "components_widget_builder_paletteicon",
- "components_widget_builder_refreshicon",
- "components_widget_builder_safehexcolor",
- "components_widget_builder_sunicon"
- ],
- "10": [
- "apps_auth_service_internal_email_service_go",
- "apps_auth_service_internal_email_templates_go",
- "email_config",
- "email_emailtemplate",
- "email_service",
- "email_service_new",
- "email_service_send",
- "email_service_sendbookingconfirmation",
- "email_service_sendmagiclink",
- "email_service_sendpasswordreset",
- "email_service_sendtemplate",
- "email_service_sendwelcomeemail",
- "email_templates_bookingconfirmationcs",
- "email_templates_bookingconfirmationemail",
- "email_templates_bookingconfirmationen",
- "email_templates_magiclinkemail",
- "email_templates_magiclinkemailcs",
- "email_templates_magiclinkemailen",
- "email_templates_passwordresetcs",
- "email_templates_passwordresetemail",
- "email_templates_passwordreseten",
- "email_templates_welcomeemail",
- "email_templates_welcomeemailcs",
- "email_templates_welcomeemailen"
- ],
- "11": [
- "apps_backend_internal_bookings_service_go",
- "bookings_noopnotifier",
- "bookings_noopnotifier_sendbookingconfirmation",
- "bookings_noopnotifier_sendbusinessnotification",
- "bookings_notifier",
- "bookings_service",
- "bookings_service_availability",
- "bookings_service_classsessionforrequest",
- "bookings_service_collides",
- "bookings_service_countclassbookings",
- "bookings_service_create",
- "bookings_service_dashboardsummary",
- "bookings_service_generateappointmentslots",
- "bookings_service_generateclassslots",
- "bookings_service_newservice",
- "bookings_service_normalizeplancode",
- "bookings_service_reminderschedule",
- "bookings_service_sameresource",
- "bookings_service_samesecond",
- "bookings_service_sendbookingconfirmationemails",
- "bookings_service_serviceforrequest",
- "bookings_service_trackingstatus",
- "bookings_service_widgetsnippets"
- ],
- "12": [
- "apps_auth_service_internal_db_db_go",
- "db_db",
- "db_db_close",
- "db_db_createmagiclink",
- "db_db_createuser",
- "db_db_exec",
- "db_db_getkv",
- "db_db_getmagiclink",
- "db_db_getstats",
- "db_db_getuserbyemail",
- "db_db_getuserbyid",
- "db_db_getuserbyproviderid",
- "db_db_markmagiclinkused",
- "db_db_new",
- "db_db_pool",
- "db_db_putkv",
- "db_db_query",
- "db_db_queryrow",
- "db_db_updatelastlogin",
- "db_db_updateuser",
- "db_stats"
- ],
- "13": [
- "apps_frontend_src_components_dashboard_icons_tsx",
- "dashboard_icons_alertcircleicon",
- "dashboard_icons_bellicon",
- "dashboard_icons_calendardaysicon",
- "dashboard_icons_checkcircleicon",
- "dashboard_icons_chevronlefticon",
- "dashboard_icons_chevronrighticon",
- "dashboard_icons_clockicon",
- "dashboard_icons_creditcardicon",
- "dashboard_icons_layoutdashboardicon",
- "dashboard_icons_logouticon",
- "dashboard_icons_menuicon",
- "dashboard_icons_plusicon",
- "dashboard_icons_settings2icon",
- "dashboard_icons_sparklesicon",
- "dashboard_icons_trendingdownicon",
- "dashboard_icons_trendingupicon",
- "dashboard_icons_usercircleicon",
- "dashboard_icons_usersicon",
- "dashboard_icons_xicon"
- ],
- "14": [
- "apps_backend_internal_notifications_service_go",
- "notifications_deliveryreceipt",
- "notifications_emailmessage",
- "notifications_emailprovider",
- "notifications_noopemailprovider",
- "notifications_noopemailprovider_send",
- "notifications_service",
- "notifications_service_dispatchdue",
- "notifications_service_localizedstartsat",
- "notifications_service_newservice",
- "notifications_service_reminderrecipient",
- "notifications_service_renderemailmessage",
- "notifications_service_renderremindercopy",
- "notifications_service_sendbookingcancellation",
- "notifications_service_sendbookingconfirmation",
- "notifications_service_sendbookingreschedule",
- "notifications_service_sendbusinessnotification",
- "notifications_smtpemailprovider",
- "notifications_smtpemailprovider_send"
- ],
- "15": [
- "apps_auth_service_internal_auth_service_go",
- "auth_claims",
- "auth_service",
- "auth_service_generatemagiclink",
- "auth_service_generaterandomtoken",
- "auth_service_generatetokens",
- "auth_service_generatetokensat",
- "auth_service_loginwithpassword",
- "auth_service_newservice",
- "auth_service_oauthloginorcreate",
- "auth_service_refreshtokens",
- "auth_service_registerwithpassword",
- "auth_service_signtoken",
- "auth_service_verifymagiclink",
- "auth_service_verifyrefreshtoken",
- "auth_service_verifytoken",
- "auth_service_verifytokenoftype",
- "auth_tokenpair"
- ],
- "16": [
- "apps_backend_internal_catalog_service_go",
- "catalog_service",
- "catalog_service_createblockedday",
- "catalog_service_createcustomer",
- "catalog_service_createlocation",
- "catalog_service_deleteblockedday",
- "catalog_service_deletecustomer",
- "catalog_service_deletelocation",
- "catalog_service_listblockeddays",
- "catalog_service_listcustomers",
- "catalog_service_listlocations",
- "catalog_service_listworkinghours",
- "catalog_service_newservice",
- "catalog_service_updateblockedday",
- "catalog_service_updatecustomer",
- "catalog_service_updatelocation",
- "catalog_service_updateworkinghours"
- ],
- "17": [
- "apps_frontend_src_components_shell_tsx",
- "components_shell_globeicon",
- "components_shell_googleicon",
- "components_shell_handleopenauth",
- "components_shell_hideheader",
- "components_shell_isdemomode",
- "components_shell_menuicon",
- "components_shell_moonicon",
- "components_shell_sendmagiclink",
- "components_shell_showgooglesignin",
- "components_shell_signinwithgoogle",
- "components_shell_submitsignin",
- "components_shell_sunicon",
- "components_shell_translateautherror",
- "components_shell_xicon"
- ],
- "18": [
- "apps_frontend_src_routes_home_route_tsx",
- "routes_home_route_arrowrighticon",
- "routes_home_route_bellicon",
- "routes_home_route_calendaricon",
- "routes_home_route_checkicon",
- "routes_home_route_clockicon",
- "routes_home_route_moonicon",
- "routes_home_route_nextmonth",
- "routes_home_route_prevmonth",
- "routes_home_route_shieldicon",
- "routes_home_route_stepcard",
- "routes_home_route_sunicon",
- "routes_home_route_usersicon",
- "routes_home_route_zapicon"
- ],
- "19": [
- "apps_backend_internal_notifications_email_templates_go",
- "notifications_bookingemaildata",
- "notifications_email_templates_formatlocalizeddatetime",
- "notifications_email_templates_formatlocalizedtime",
- "notifications_email_templates_renderemailmessage",
- "notifications_email_templates_renderhtmlbody",
- "notifications_email_templates_renderreminderemail",
- "notifications_email_templates_rendersubject",
- "notifications_email_templates_rendertextbody",
- "notifications_email_templates_splitlines",
- "notifications_email_templates_splitparagraphs",
- "notifications_emailtype"
- ],
- "20": [
- "apps_backend_internal_bookings_customer_service_go",
- "bookings_customer_service_newcustomerservice",
- "bookings_customernoopnotifier",
- "bookings_customernoopnotifier_sendbookingcancellation",
- "bookings_customernoopnotifier_sendbookingreschedule",
- "bookings_customernotifier",
- "bookings_customerservice",
- "bookings_customerservice_cancelbooking",
- "bookings_customerservice_getbookingbyreference",
- "bookings_customerservice_reschedulebooking",
- "bookings_customerservice_sendcancellationemail",
- "bookings_customerservice_sendrescheduleemail"
- ],
- "21": [
- "apps_frontend_src_lib_map_ts",
- "components_widget_builder_resolvemaplocation",
- "lib_map_geocodelocation",
- "lib_map_mapstylebyid",
- "lib_map_parsecoordinatetext",
- "lib_map_parsegooglemapsurl",
- "lib_map_parsemapurl",
- "lib_map_parsemapyczurl",
- "lib_map_resolvelocationinput",
- "lib_map_resolvemaptilestyle",
- "lib_map_reversegeocode",
- "lib_map_validatecoordinates"
- ],
- "22": [
- "apps_backend_internal_tenancy_service_go",
- "tenancy_service",
- "tenancy_service_bootstrap",
- "tenancy_service_brandprofile",
- "tenancy_service_firstnonempty",
- "tenancy_service_normalizeclock",
- "tenancy_service_normalizeplancode",
- "tenancy_service_onboard",
- "tenancy_service_toavailabilityblocks",
- "tenancy_service_toteaminvites",
- "tenancy_service_validateavailabilityblocks"
- ],
- "23": [
- "apps_frontend_src_components_ui_dialog_tsx",
- "ui_dialog_dialog",
- "ui_dialog_dialogclosebutton",
- "ui_dialog_dialogcontent",
- "ui_dialog_dialogdescription",
- "ui_dialog_dialogfooter",
- "ui_dialog_dialogheader",
- "ui_dialog_dialogtitle",
- "ui_dialog_usedialog"
- ],
- "24": [
- "apps_auth_service_internal_oauth_google_go",
- "oauth_google_newgoogleprovider",
- "oauth_googleprovider",
- "oauth_googleprovider_enabled",
- "oauth_googleprovider_exchangecode",
- "oauth_googleprovider_getauthurl",
- "oauth_googleprovider_parseuser",
- "oauth_googleuser"
- ],
- "25": [
- "apps_frontend_src_components_ui_card_tsx",
- "ui_card_card",
- "ui_card_cardcontent",
- "ui_card_carddescription",
- "ui_card_cardfooter",
- "ui_card_cardheader",
- "ui_card_cardtitle"
- ],
- "26": [
- "bookra_map_parsegooglemapsurl",
- "bookra_map_parsemapurl",
- "bookra_map_parsemapyczurl",
- "bookra_map_reversegeocode",
- "bookra_map_validatecoordinates",
- "map_ts"
- ],
- "27": [
- "apps_frontend_src_components_location_map_tsx",
- "components_location_map_createmarkericon",
- "components_location_map_escapehtml",
- "components_location_map_loadleaflet",
- "components_location_map_locationmap",
- "components_location_map_safemarkercolor"
- ],
- "28": [
- "apps_frontend_src_components_ui_tabs_tsx",
- "ui_tabs_tabs",
- "ui_tabs_tabscontent",
- "ui_tabs_tabslist",
- "ui_tabs_tabstrigger",
- "ui_tabs_usetabs"
- ],
- "29": [
- "apps_frontend_src_routes_legal_route_tsx",
- "routes_legal_route_helperpose",
- "routes_legal_route_heropose",
- "routes_legal_route_kind",
- "routes_legal_route_sections"
- ],
- "30": [
- "apps_frontend_src_providers_auth_provider_tsx",
- "providers_auth_provider_authprovider",
- "providers_auth_provider_parsejwtpayload",
- "providers_auth_provider_sessionfromlocaltoken",
- "providers_auth_provider_useauth"
- ],
- "31": [
- "apps_frontend_src_components_ui_skeleton_tsx",
- "ui_skeleton_skeleton",
- "ui_skeleton_skeletoncard",
- "ui_skeleton_skeletontext"
- ],
- "32": [
- "apps_frontend_src_providers_theme_provider_tsx",
- "providers_theme_provider_getinitialtheme",
- "providers_theme_provider_getresolvedtheme",
- "providers_theme_provider_usetheme"
- ],
- "33": [
- "apps_auth_service_internal_db_repository_go",
- "db_magiclink",
- "db_user"
- ],
- "34": [
- "apps_backend_internal_config_config_test_go",
- "config_config_test_testpaddlecheckoutconfigured",
- "config_config_test_testpaddlecheckoutconfiguredrequireswebhook"
- ],
- "35": [
- "apps_frontend_src_app_tsx",
- "src_app_app",
- "src_app_scrolltotop"
- ],
- "36": [
- "apps_frontend_src_routes_public_booking_route_tsx",
- "routes_public_booking_route_bookslot",
- "routes_public_booking_route_tenantslug"
- ],
- "37": [
- "apps_frontend_src_components_bookra_character_tsx",
- "components_bookra_character_bookracharacter",
- "components_bookra_character_characterwithmessage"
- ],
- "38": [
- "apps_frontend_src_components_dashboard_types_ts",
- "dashboard_types_getbookingduration",
- "dashboard_types_getinitials"
- ],
- "39": [
- "bookra_generate_map_contactmap",
- "generate_map_tsx"
- ],
- "40": [
- "apps_frontend_src_routes_about_route_tsx",
- "routes_about_route_aboutroute"
- ],
- "41": [
- "apps_frontend_src_routes_auth_callback_route_tsx",
- "routes_auth_callback_route_authcallbackroute"
- ],
- "42": [
- "apps_frontend_src_routes_contact_route_tsx",
- "routes_contact_route_handlesubmit"
- ],
- "43": [
- "apps_frontend_src_routes_not_found_route_tsx",
- "routes_not_found_route_notfoundroute"
- ],
- "44": [
- "apps_frontend_src_components_integration_modal_tsx",
- "components_integration_modal_copytoclipboard"
- ],
- "45": [
- "apps_frontend_src_components_ui_tooltip_tsx",
- "ui_tooltip_tooltip"
- ],
- "46": [
- "apps_frontend_src_components_ui_input_tsx",
- "ui_input_input"
- ],
- "47": [
- "apps_frontend_src_components_ui_badge_tsx",
- "ui_badge_badge"
- ],
- "48": [
- "apps_frontend_src_components_ui_select_tsx",
- "ui_select_select"
- ],
- "49": [
- "apps_frontend_src_components_ui_textarea_tsx",
- "ui_textarea_resizeclass"
- ],
- "50": [
- "apps_frontend_src_components_ui_avatar_tsx",
- "ui_avatar_avatar"
- ],
- "51": [
- "apps_frontend_vite_config_ts"
- ],
- "52": [
- "apps_frontend_src_main_tsx"
- ],
- "53": [
- "apps_frontend_src_components_index_ts"
- ],
- "54": [
- "apps_frontend_src_components_ui_button_tsx"
- ],
- "55": [
- "apps_frontend_src_components_ui_index_ts"
- ],
- "56": [
- "apps_frontend_src_providers_i18n_provider_tsx"
- ],
- "57": [
- "apps_frontend_src_lib_api_client_ts"
- ],
- "58": [
- "apps_frontend_src_lib_types_ts"
- ],
- "59": [
- "packages_shared_types_src_index_ts"
- ],
- "60": [
- "packages_api_client_src_index_ts"
- ],
- "61": [
- "packages_api_client_src_generated_types_ts"
- ],
- "62": [
- "packages_api_client_scripts_generate_mjs"
- ]
- },
- "cohesion": {
- "0": 0.06,
- "1": 0.04,
- "2": 0.04,
- "3": 0.04,
- "4": 0.05,
- "5": 0.06,
- "6": 0.06,
- "7": 0.13,
- "8": 0.06,
- "9": 0.08,
- "10": 0.14,
- "11": 0.15,
- "12": 0.1,
- "13": 0.1,
- "14": 0.18,
- "15": 0.19,
- "16": 0.12,
- "17": 0.14,
- "18": 0.14,
- "19": 0.3,
- "20": 0.26,
- "21": 0.36,
- "22": 0.33,
- "23": 0.22,
- "24": 0.25,
- "25": 0.29,
- "26": 0.47,
- "27": 0.4,
- "28": 0.47,
- "29": 0.7,
- "30": 0.5,
- "31": 0.5,
- "32": 0.5,
- "33": 0.67,
- "34": 0.67,
- "35": 0.67,
- "36": 1.0,
- "37": 0.67,
- "38": 0.67,
- "39": 1.0,
- "40": 1.0,
- "41": 1.0,
- "42": 1.0,
- "43": 1.0,
- "44": 1.0,
- "45": 1.0,
- "46": 1.0,
- "47": 1.0,
- "48": 1.0,
- "49": 1.0,
- "50": 1.0,
- "51": 1.0,
- "52": 1.0,
- "53": 1.0,
- "54": 1.0,
- "55": 1.0,
- "56": 1.0,
- "57": 1.0,
- "58": 1.0,
- "59": 1.0,
- "60": 1.0,
- "61": 1.0,
- "62": 1.0
- },
- "gods": [
- {
- "id": "notifications_email_templates_trimspace",
- "label": "trimSpace()",
- "degree": 47
- },
- {
- "id": "db_pgrepository",
- "label": "PGRepository",
- "degree": 46
- },
- {
- "id": "db_memoryrepository",
- "label": "MemoryRepository",
- "degree": 46
- },
- {
- "id": "tenancy_service_newservice",
- "label": "NewService()",
- "degree": 28
- },
- {
- "id": "db_repository_newmemoryrepository",
- "label": "NewMemoryRepository()",
- "degree": 22
- },
- {
- "id": "handlers_handler",
- "label": "Handler",
- "degree": 20
- },
- {
- "id": "billing_service",
- "label": "Service",
- "degree": 20
- },
- {
- "id": "db_db",
- "label": "DB",
- "degree": 18
- },
- {
- "id": "handlers_handlers_new",
- "label": "New()",
- "degree": 17
- },
- {
- "id": "api_server_newserver",
- "label": "NewServer()",
- "degree": 17
- }
- ],
- "surprises": [
- {
- "source": "New()",
- "target": "NewGoogleProvider()",
- "source_files": [
- "apps/auth-service/internal/handlers/handlers.go",
- "apps/auth-service/internal/oauth/google.go"
- ],
- "confidence": "INFERRED",
- "relation": "calls",
- "why": "inferred connection - not explicitly stated in source; bridges separate communities; peripheral node `NewGoogleProvider()` unexpectedly reaches hub `New()`"
- },
- {
- "source": "NewServer()",
- "target": "NewCustomerService()",
- "source_files": [
- "apps/backend/internal/api/server.go",
- "apps/backend/internal/bookings/customer_service.go"
- ],
- "confidence": "INFERRED",
- "relation": "calls",
- "why": "inferred connection - not explicitly stated in source; bridges separate communities; peripheral node `NewCustomerService()` unexpectedly reaches hub `NewServer()`"
- },
- {
- "source": "main()",
- "target": "Load()",
- "source_files": [
- "apps/backend/cmd/api/main.go",
- "apps/backend/internal/config/config.go"
- ],
- "confidence": "INFERRED",
- "relation": "calls",
- "why": "inferred connection - not explicitly stated in source; bridges separate communities"
- },
- {
- "source": "main()",
- "target": "getEnv()",
- "source_files": [
- "apps/backend/cmd/api/main.go",
- "apps/auth-service/internal/config/config.go"
- ],
- "confidence": "INFERRED",
- "relation": "calls",
- "why": "inferred connection - not explicitly stated in source; bridges separate communities"
- },
- {
- "source": "main()",
- "target": "New()",
- "source_files": [
- "apps/backend/cmd/api/main.go",
- "apps/auth-service/internal/handlers/handlers.go"
- ],
- "confidence": "INFERRED",
- "relation": "calls",
- "why": "inferred connection - not explicitly stated in source; bridges separate communities"
- }
- ],
- "questions": [
- {
- "type": "bridge_node",
- "question": "Why does `trimSpace()` connect `Community 0` to `Community 2`, `Community 3`, `Community 5`, `Community 6`, `Community 11`, `Community 14`, `Community 19`, `Community 22`?",
- "why": "High betweenness centrality (0.246) - this node is a cross-community bridge."
- },
- {
- "type": "bridge_node",
- "question": "Why does `NewServer()` connect `Community 5` to `Community 0`, `Community 20`, `Community 7`?",
- "why": "High betweenness centrality (0.116) - this node is a cross-community bridge."
- },
- {
- "type": "bridge_node",
- "question": "Why does `reference()` connect `Community 1` to `Community 11`?",
- "why": "High betweenness centrality (0.101) - this node is a cross-community bridge."
- },
- {
- "type": "verify_inferred",
- "question": "Are the 45 inferred relationships involving `trimSpace()` (e.g. with `.StripeSecretConfigured()` and `.StripeWebhookConfigured()`) actually correct?",
- "why": "`trimSpace()` has 45 INFERRED edges - model-reasoned connections that need verification."
- },
- {
- "type": "verify_inferred",
- "question": "Are the 27 inferred relationships involving `NewService()` (e.g. with `New()` and `TestPriceForPlanUsesConfiguredPlanCodesOnly()`) actually correct?",
- "why": "`NewService()` has 27 INFERRED edges - model-reasoned connections that need verification."
- },
- {
- "type": "verify_inferred",
- "question": "Are the 19 inferred relationships involving `NewMemoryRepository()` (e.g. with `TestDispatchDueProcessesPendingEmailReminders()` and `TestDispatchDueFailsUnknownChannel()`) actually correct?",
- "why": "`NewMemoryRepository()` has 19 INFERRED edges - model-reasoned connections that need verification."
- },
- {
- "type": "isolated_nodes",
- "question": "What connects `EmailTemplate`, `Config`, `Stats` to the rest of the system?",
- "why": "97 weakly-connected nodes found - possible documentation gaps or missing edges."
- }
- ]
-}
\ No newline at end of file
diff --git a/graphify-out/.graphify_ast.json b/graphify-out/.graphify_ast.json
deleted file mode 100644
index 265f5ef..0000000
--- a/graphify-out/.graphify_ast.json
+++ /dev/null
@@ -1,19249 +0,0 @@
-{
- "nodes": [
- {
- "id": "generate_map_tsx",
- "label": "generate_map.tsx",
- "file_type": "code",
- "source_file": "generate_map.tsx",
- "source_location": "L1"
- },
- {
- "id": "bookra_generate_map_contactmap",
- "label": "ContactMap()",
- "file_type": "code",
- "source_file": "generate_map.tsx",
- "source_location": "L100"
- },
- {
- "id": "map_ts",
- "label": "map.ts",
- "file_type": "code",
- "source_file": "map.ts",
- "source_location": "L1"
- },
- {
- "id": "bookra_map_parsemapyczurl",
- "label": "parseMapyCzUrl()",
- "file_type": "code",
- "source_file": "map.ts",
- "source_location": "L24"
- },
- {
- "id": "bookra_map_parsegooglemapsurl",
- "label": "parseGoogleMapsUrl()",
- "file_type": "code",
- "source_file": "map.ts",
- "source_location": "L71"
- },
- {
- "id": "bookra_map_parsemapurl",
- "label": "parseMapUrl()",
- "file_type": "code",
- "source_file": "map.ts",
- "source_location": "L149"
- },
- {
- "id": "bookra_map_validatecoordinates",
- "label": "validateCoordinates()",
- "file_type": "code",
- "source_file": "map.ts",
- "source_location": "L178"
- },
- {
- "id": "bookra_map_reversegeocode",
- "label": "reverseGeocode()",
- "file_type": "code",
- "source_file": "map.ts",
- "source_location": "L193"
- },
- {
- "id": "apps_auth_service_cmd_api_main_go",
- "label": "main.go",
- "file_type": "code",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L1"
- },
- {
- "id": "api_main_main",
- "label": "main()",
- "file_type": "code",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L24"
- },
- {
- "id": "api_main_runmigrations",
- "label": "runMigrations()",
- "file_type": "code",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L105"
- },
- {
- "id": "apps_auth_service_internal_email_templates_go",
- "label": "templates.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L1"
- },
- {
- "id": "email_emailtemplate",
- "label": "EmailTemplate",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L27"
- },
- {
- "id": "email_templates_magiclinkemail",
- "label": "MagicLinkEmail()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L33"
- },
- {
- "id": "email_templates_welcomeemail",
- "label": "WelcomeEmail()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L40"
- },
- {
- "id": "email_templates_bookingconfirmationemail",
- "label": "BookingConfirmationEmail()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L47"
- },
- {
- "id": "email_templates_passwordresetemail",
- "label": "PasswordResetEmail()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L54"
- },
- {
- "id": "email_templates_magiclinkemailen",
- "label": "magicLinkEmailEN()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L61"
- },
- {
- "id": "email_templates_magiclinkemailcs",
- "label": "magicLinkEmailCS()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L157"
- },
- {
- "id": "email_templates_welcomeemailen",
- "label": "welcomeEmailEN()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L253"
- },
- {
- "id": "email_templates_welcomeemailcs",
- "label": "welcomeEmailCS()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L335"
- },
- {
- "id": "email_templates_bookingconfirmationen",
- "label": "bookingConfirmationEN()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L417"
- },
- {
- "id": "email_templates_bookingconfirmationcs",
- "label": "bookingConfirmationCS()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L507"
- },
- {
- "id": "email_templates_passwordreseten",
- "label": "passwordResetEN()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L597"
- },
- {
- "id": "email_templates_passwordresetcs",
- "label": "passwordResetCS()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L671"
- },
- {
- "id": "apps_auth_service_internal_email_service_go",
- "label": "service.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L1"
- },
- {
- "id": "email_config",
- "label": "Config",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L11"
- },
- {
- "id": "email_service",
- "label": "Service",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L19"
- },
- {
- "id": "email_service_new",
- "label": "New()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L23"
- },
- {
- "id": "email_service_sendmagiclink",
- "label": ".SendMagicLink()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L28"
- },
- {
- "id": "email_service_sendwelcomeemail",
- "label": ".SendWelcomeEmail()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L34"
- },
- {
- "id": "email_service_sendbookingconfirmation",
- "label": ".SendBookingConfirmation()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L40"
- },
- {
- "id": "email_service_sendpasswordreset",
- "label": ".SendPasswordReset()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L46"
- },
- {
- "id": "email_service_sendtemplate",
- "label": ".sendTemplate()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L52"
- },
- {
- "id": "email_service_send",
- "label": ".send()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L64"
- },
- {
- "id": "apps_auth_service_internal_db_db_go",
- "label": "db.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L1"
- },
- {
- "id": "db_db",
- "label": "DB",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L11"
- },
- {
- "id": "db_db_new",
- "label": "New()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L15"
- },
- {
- "id": "db_db_close",
- "label": ".Close()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L33"
- },
- {
- "id": "db_db_pool",
- "label": ".Pool()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L37"
- },
- {
- "id": "db_db_queryrow",
- "label": ".QueryRow()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L41"
- },
- {
- "id": "db_db_query",
- "label": ".Query()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L45"
- },
- {
- "id": "db_db_exec",
- "label": ".Exec()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L49"
- },
- {
- "id": "db_stats",
- "label": "Stats",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L55"
- },
- {
- "id": "db_db_getstats",
- "label": ".GetStats()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L70"
- },
- {
- "id": "apps_auth_service_internal_db_repository_go",
- "label": "repository.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L1"
- },
- {
- "id": "db_user",
- "label": "User",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L13"
- },
- {
- "id": "db_magiclink",
- "label": "MagicLink",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L26"
- },
- {
- "id": "db_db",
- "label": "DB",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L35"
- },
- {
- "id": "db_db_getuserbyemail",
- "label": ".GetUserByEmail()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L35"
- },
- {
- "id": "db_db_getuserbyid",
- "label": ".GetUserByID()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L63"
- },
- {
- "id": "db_db_getuserbyproviderid",
- "label": ".GetUserByProviderID()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L91"
- },
- {
- "id": "db_db_createuser",
- "label": ".CreateUser()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L118"
- },
- {
- "id": "db_db_updateuser",
- "label": ".UpdateUser()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L138"
- },
- {
- "id": "db_db_updatelastlogin",
- "label": ".UpdateLastLogin()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L152"
- },
- {
- "id": "db_db_createmagiclink",
- "label": ".CreateMagicLink()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L159"
- },
- {
- "id": "db_db_getmagiclink",
- "label": ".GetMagicLink()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L167"
- },
- {
- "id": "db_db_markmagiclinkused",
- "label": ".MarkMagicLinkUsed()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L187"
- },
- {
- "id": "db_db_putkv",
- "label": ".PutKV()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L192"
- },
- {
- "id": "db_db_getkv",
- "label": ".GetKV()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L207"
- },
- {
- "id": "apps_auth_service_internal_config_config_test_go",
- "label": "config_test.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L1"
- },
- {
- "id": "config_config_test_teststripereadinesshelpers",
- "label": "TestStripeReadinessHelpers()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L8"
- },
- {
- "id": "config_config_test_teststripecheckoutreadyrequiressecretandprice",
- "label": "TestStripeCheckoutReadyRequiresSecretAndPrice()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L30"
- },
- {
- "id": "config_config_test_testloaddefaultsauthserviceportto8081",
- "label": "TestLoadDefaultsAuthServicePortTo8081()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L47"
- },
- {
- "id": "apps_auth_service_internal_config_config_go",
- "label": "config.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L1"
- },
- {
- "id": "config_config",
- "label": "Config",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L10"
- },
- {
- "id": "config_config_load",
- "label": "Load()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L33"
- },
- {
- "id": "config_config_getenv",
- "label": "getEnv()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L80"
- },
- {
- "id": "config_config_getenvallowempty",
- "label": "getEnvAllowEmpty()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L87"
- },
- {
- "id": "config_config_stripesecretconfigured",
- "label": ".StripeSecretConfigured()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L94"
- },
- {
- "id": "config_config_stripewebhookconfigured",
- "label": ".StripeWebhookConfigured()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L98"
- },
- {
- "id": "config_config_stripehasanypriceconfigured",
- "label": ".StripeHasAnyPriceConfigured()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L102"
- },
- {
- "id": "config_config_stripecheckoutready",
- "label": ".StripeCheckoutReady()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L111"
- },
- {
- "id": "apps_auth_service_internal_oauth_google_go",
- "label": "google.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L1"
- },
- {
- "id": "oauth_googleuser",
- "label": "GoogleUser",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L15"
- },
- {
- "id": "oauth_googleprovider",
- "label": "GoogleProvider",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L23"
- },
- {
- "id": "oauth_google_newgoogleprovider",
- "label": "NewGoogleProvider()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L27"
- },
- {
- "id": "oauth_googleprovider_enabled",
- "label": ".Enabled()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L52"
- },
- {
- "id": "oauth_googleprovider_getauthurl",
- "label": ".GetAuthURL()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L56"
- },
- {
- "id": "oauth_googleprovider_exchangecode",
- "label": ".ExchangeCode()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L60"
- },
- {
- "id": "oauth_googleprovider_parseuser",
- "label": ".ParseUser()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L86"
- },
- {
- "id": "apps_auth_service_internal_handlers_handlers_go",
- "label": "handlers.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L1"
- },
- {
- "id": "handlers_handler",
- "label": "Handler",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L24"
- },
- {
- "id": "handlers_loginrequest",
- "label": "LoginRequest",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L33"
- },
- {
- "id": "handlers_verifyrequest",
- "label": "VerifyRequest",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L38"
- },
- {
- "id": "handlers_refreshrequest",
- "label": "RefreshRequest",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L42"
- },
- {
- "id": "handlers_passwordregisterrequest",
- "label": "PasswordRegisterRequest",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L46"
- },
- {
- "id": "handlers_passwordloginrequest",
- "label": "PasswordLoginRequest",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L52"
- },
- {
- "id": "handlers_checkoutrequest",
- "label": "CheckoutRequest",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L57"
- },
- {
- "id": "handlers_handlers_new",
- "label": "New()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L62"
- },
- {
- "id": "handlers_handler_registerroutes",
- "label": ".RegisterRoutes()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L77"
- },
- {
- "id": "handlers_handler_sendmagiclink",
- "label": ".SendMagicLink()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L109"
- },
- {
- "id": "handlers_handlers_detectlocale",
- "label": "detectLocale()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L132"
- },
- {
- "id": "handlers_handler_verifymagiclink",
- "label": ".VerifyMagicLink()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L141"
- },
- {
- "id": "handlers_handler_registerwithpassword",
- "label": ".RegisterWithPassword()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L157"
- },
- {
- "id": "handlers_handler_loginwithpassword",
- "label": ".LoginWithPassword()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L177"
- },
- {
- "id": "handlers_handler_refreshtoken",
- "label": ".RefreshToken()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L193"
- },
- {
- "id": "handlers_handler_getme",
- "label": ".GetMe()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L221"
- },
- {
- "id": "handlers_handler_logout",
- "label": ".Logout()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L237"
- },
- {
- "id": "handlers_handler_listproviders",
- "label": ".ListProviders()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L241"
- },
- {
- "id": "handlers_handler_googleauth",
- "label": ".GoogleAuth()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L260"
- },
- {
- "id": "handlers_handler_googlecallback",
- "label": ".GoogleCallback()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L273"
- },
- {
- "id": "handlers_handler_getsubscription",
- "label": ".GetSubscription()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L314"
- },
- {
- "id": "handlers_handler_createcheckoutsession",
- "label": ".CreateCheckoutSession()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L329"
- },
- {
- "id": "handlers_handler_refreshsubscription",
- "label": ".RefreshSubscription()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L361"
- },
- {
- "id": "handlers_handler_listplans",
- "label": ".ListPlans()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L381"
- },
- {
- "id": "handlers_handler_stripewebhook",
- "label": ".StripeWebhook()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L414"
- },
- {
- "id": "handlers_handler_requireauth",
- "label": ".RequireAuth()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L435"
- },
- {
- "id": "handlers_handler_verifybearertoken",
- "label": ".verifyBearerToken()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L462"
- },
- {
- "id": "handlers_handler_claimsfromcontext",
- "label": ".claimsFromContext()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L472"
- },
- {
- "id": "handlers_handlers_generatestate",
- "label": "generateState()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L488"
- },
- {
- "id": "handlers_handlers_oauthcookiesecure",
- "label": "oauthCookieSecure()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L496"
- },
- {
- "id": "handlers_handlers_timeoutmiddleware",
- "label": "timeoutMiddleware()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L506"
- },
- {
- "id": "apps_auth_service_internal_handlers_admin_go",
- "label": "admin.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L1"
- },
- {
- "id": "handlers_admindashboard",
- "label": "AdminDashboard",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L13"
- },
- {
- "id": "handlers_admin_newadmindashboard",
- "label": "NewAdminDashboard()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L18"
- },
- {
- "id": "handlers_admindashboard_registerroutes",
- "label": ".RegisterRoutes()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L23"
- },
- {
- "id": "handlers_admindashboard_getconfig",
- "label": ".GetConfig()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L34"
- },
- {
- "id": "handlers_admindashboard_getprices",
- "label": ".GetPrices()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L54"
- },
- {
- "id": "handlers_admindashboard_getstats",
- "label": ".GetStats()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L108"
- },
- {
- "id": "handlers_admindashboard_renderdashboard",
- "label": ".RenderDashboard()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L124"
- },
- {
- "id": "apps_auth_service_internal_billing_service_go",
- "label": "service.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L1"
- },
- {
- "id": "billing_service",
- "label": "Service",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L43"
- },
- {
- "id": "billing_checkoutsession",
- "label": "CheckoutSession",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L48"
- },
- {
- "id": "billing_subscriptionsnapshot",
- "label": "SubscriptionSnapshot",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L52"
- },
- {
- "id": "billing_paymentmethod",
- "label": "PaymentMethod",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L68"
- },
- {
- "id": "billing_useridentity",
- "label": "UserIdentity",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L73"
- },
- {
- "id": "billing_usercustomermapping",
- "label": "userCustomerMapping",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L79"
- },
- {
- "id": "billing_service_newservice",
- "label": "NewService()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L84"
- },
- {
- "id": "billing_service_getsubscription",
- "label": ".GetSubscription()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L88"
- },
- {
- "id": "billing_service_createcheckoutsession",
- "label": ".CreateCheckoutSession()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L112"
- },
- {
- "id": "billing_service_refresh",
- "label": ".Refresh()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L161"
- },
- {
- "id": "billing_service_handlewebhook",
- "label": ".HandleWebhook()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L175"
- },
- {
- "id": "billing_service_ensurecustomer",
- "label": ".ensureCustomer()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L203"
- },
- {
- "id": "billing_service_syncstripedatatokv",
- "label": ".syncStripeDataToKV()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L234"
- },
- {
- "id": "billing_service_storecustomermapping",
- "label": ".storeCustomerMapping()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L290"
- },
- {
- "id": "billing_service_getcustomermapping",
- "label": ".getCustomerMapping()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L298"
- },
- {
- "id": "billing_service_getcustomersnapshot",
- "label": ".getCustomerSnapshot()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L310"
- },
- {
- "id": "billing_service_nonesnapshot",
- "label": ".noneSnapshot()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L319"
- },
- {
- "id": "billing_service_priceforplan",
- "label": ".priceForPlan()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L327"
- },
- {
- "id": "billing_service_defaultplancode",
- "label": ".defaultPlanCode()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L360"
- },
- {
- "id": "billing_service_plancodeforprice",
- "label": ".planCodeForPrice()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L372"
- },
- {
- "id": "billing_service_hasconfiguredprices",
- "label": ".hasConfiguredPrices()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L381"
- },
- {
- "id": "billing_service_checkoutavailableforplan",
- "label": ".checkoutAvailableForPlan()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L385"
- },
- {
- "id": "billing_service_normalizeplancode",
- "label": "normalizePlanCode()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L396"
- },
- {
- "id": "billing_service_normalizecurrency",
- "label": "normalizeCurrency()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L407"
- },
- {
- "id": "billing_service_usercustomerkey",
- "label": "userCustomerKey()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L416"
- },
- {
- "id": "billing_service_customersnapshotkey",
- "label": "customerSnapshotKey()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L420"
- },
- {
- "id": "billing_service_unixptr",
- "label": "unixPtr()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L424"
- },
- {
- "id": "billing_service_subscriptionrank",
- "label": "subscriptionRank()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L432"
- },
- {
- "id": "billing_service_extractcustomerid",
- "label": "extractCustomerID()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L453"
- },
- {
- "id": "apps_auth_service_internal_billing_service_test_go",
- "label": "service_test.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L1"
- },
- {
- "id": "billing_service_test_testpriceforplanusesconfiguredplancodesonly",
- "label": "TestPriceForPlanUsesConfiguredPlanCodesOnly()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L10"
- },
- {
- "id": "billing_service_test_testkvkeyshape",
- "label": "TestKVKeyShape()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L40"
- },
- {
- "id": "billing_service_test_testcheckoutavailableforplanrequiressecret",
- "label": "TestCheckoutAvailableForPlanRequiresSecret()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L49"
- },
- {
- "id": "billing_service_test_testcheckoutavailableforplanrequiresconfiguredplan",
- "label": "TestCheckoutAvailableForPlanRequiresConfiguredPlan()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L61"
- },
- {
- "id": "apps_auth_service_internal_auth_service_go",
- "label": "service.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L1"
- },
- {
- "id": "auth_service",
- "label": "Service",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L23"
- },
- {
- "id": "auth_tokenpair",
- "label": "TokenPair",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L30"
- },
- {
- "id": "auth_claims",
- "label": "Claims",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L37"
- },
- {
- "id": "auth_service_newservice",
- "label": "NewService()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L46"
- },
- {
- "id": "auth_service_generatemagiclink",
- "label": ".GenerateMagicLink()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L55"
- },
- {
- "id": "auth_service_verifymagiclink",
- "label": ".VerifyMagicLink()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L93"
- },
- {
- "id": "auth_service_oauthloginorcreate",
- "label": ".OAuthLoginOrCreate()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L127"
- },
- {
- "id": "auth_service_registerwithpassword",
- "label": ".RegisterWithPassword()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L170"
- },
- {
- "id": "auth_service_loginwithpassword",
- "label": ".LoginWithPassword()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L201"
- },
- {
- "id": "auth_service_generatetokens",
- "label": ".generateTokens()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L221"
- },
- {
- "id": "auth_service_generatetokensat",
- "label": ".generateTokensAt()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L226"
- },
- {
- "id": "auth_service_verifytoken",
- "label": ".VerifyToken()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L250"
- },
- {
- "id": "auth_service_verifyrefreshtoken",
- "label": ".VerifyRefreshToken()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L254"
- },
- {
- "id": "auth_service_refreshtokens",
- "label": ".RefreshTokens()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L258"
- },
- {
- "id": "auth_service_verifytokenoftype",
- "label": ".verifyTokenOfType()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L286"
- },
- {
- "id": "auth_service_signtoken",
- "label": ".signToken()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L308"
- },
- {
- "id": "auth_service_generaterandomtoken",
- "label": "generateRandomToken()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L329"
- },
- {
- "id": "apps_auth_service_internal_auth_neon_go",
- "label": "neon.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L1"
- },
- {
- "id": "auth_neonverifier",
- "label": "NeonVerifier",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L15"
- },
- {
- "id": "auth_neon_newneonverifier",
- "label": "NewNeonVerifier()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L22"
- },
- {
- "id": "auth_neonverifier_enabled",
- "label": ".Enabled()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L42"
- },
- {
- "id": "auth_neonverifier_close",
- "label": ".Close()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L46"
- },
- {
- "id": "auth_neonverifier_verify",
- "label": ".Verify()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L52"
- },
- {
- "id": "apps_auth_service_internal_auth_service_test_go",
- "label": "service_test.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L1"
- },
- {
- "id": "auth_service_test_testgeneratetokensproducesverifiableaccessandrefreshtokens",
- "label": "TestGenerateTokensProducesVerifiableAccessAndRefreshTokens()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L13"
- },
- {
- "id": "auth_service_test_testrefreshtokensreturnsrotatedpair",
- "label": "TestRefreshTokensReturnsRotatedPair()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L51"
- },
- {
- "id": "auth_service_test_testrefreshtokensrejectsinvalidtoken",
- "label": "TestRefreshTokensRejectsInvalidToken()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L82"
- },
- {
- "id": "apps_backend_cmd_api_main_go",
- "label": "main.go",
- "file_type": "code",
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L1"
- },
- {
- "id": "api_main_main",
- "label": "main()",
- "file_type": "code",
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L16"
- },
- {
- "id": "apps_backend_internal_catalog_service_go",
- "label": "service.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L1"
- },
- {
- "id": "catalog_service",
- "label": "Service",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L22"
- },
- {
- "id": "catalog_service_newservice",
- "label": "NewService()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L26"
- },
- {
- "id": "catalog_service_listlocations",
- "label": ".ListLocations()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L34"
- },
- {
- "id": "catalog_service_createlocation",
- "label": ".CreateLocation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L60"
- },
- {
- "id": "catalog_service_updatelocation",
- "label": ".UpdateLocation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L88"
- },
- {
- "id": "catalog_service_deletelocation",
- "label": ".DeleteLocation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L124"
- },
- {
- "id": "catalog_service_listblockeddays",
- "label": ".ListBlockedDays()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L145"
- },
- {
- "id": "catalog_service_createblockedday",
- "label": ".CreateBlockedDay()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L171"
- },
- {
- "id": "catalog_service_updateblockedday",
- "label": ".UpdateBlockedDay()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L207"
- },
- {
- "id": "catalog_service_deleteblockedday",
- "label": ".DeleteBlockedDay()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L254"
- },
- {
- "id": "catalog_service_listcustomers",
- "label": ".ListCustomers()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L284"
- },
- {
- "id": "catalog_service_createcustomer",
- "label": ".CreateCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L319"
- },
- {
- "id": "catalog_service_updatecustomer",
- "label": ".UpdateCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L356"
- },
- {
- "id": "catalog_service_deletecustomer",
- "label": ".DeleteCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L410"
- },
- {
- "id": "catalog_service_listworkinghours",
- "label": ".ListWorkingHours()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L431"
- },
- {
- "id": "catalog_service_updateworkinghours",
- "label": ".UpdateWorkingHours()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L454"
- },
- {
- "id": "apps_backend_internal_httpx_middleware_go",
- "label": "middleware.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L1"
- },
- {
- "id": "httpx_middleware_securityheaders",
- "label": "SecurityHeaders()",
- "file_type": "code",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L12"
- },
- {
- "id": "httpx_visitor",
- "label": "visitor",
- "file_type": "code",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L22"
- },
- {
- "id": "httpx_ratelimiter",
- "label": "RateLimiter",
- "file_type": "code",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L27"
- },
- {
- "id": "httpx_middleware_newratelimiter",
- "label": "NewRateLimiter()",
- "file_type": "code",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L34"
- },
- {
- "id": "httpx_ratelimiter_middleware",
- "label": ".Middleware()",
- "file_type": "code",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L42"
- },
- {
- "id": "httpx_ratelimiter_getvisitor",
- "label": ".getVisitor()",
- "file_type": "code",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L59"
- },
- {
- "id": "httpx_ratelimiter_cleanuploop",
- "label": ".cleanupLoop()",
- "file_type": "code",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L77"
- },
- {
- "id": "apps_backend_internal_db_repository_go",
- "label": "repository.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1"
- },
- {
- "id": "db_repository",
- "label": "Repository",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L16"
- },
- {
- "id": "db_tenantrecord",
- "label": "TenantRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L74"
- },
- {
- "id": "db_tenantmembershiprecord",
- "label": "TenantMembershipRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L88"
- },
- {
- "id": "db_createtenantforuserparams",
- "label": "CreateTenantForUserParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L94"
- },
- {
- "id": "db_brandprofilerecord",
- "label": "BrandProfileRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L115"
- },
- {
- "id": "db_availabilityblockrecord",
- "label": "AvailabilityBlockRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L124"
- },
- {
- "id": "db_teaminviterecord",
- "label": "TeamInviteRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L131"
- },
- {
- "id": "db_servicerecord",
- "label": "ServiceRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L136"
- },
- {
- "id": "db_availabilityrulerecord",
- "label": "AvailabilityRuleRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L146"
- },
- {
- "id": "db_classsessionrecord",
- "label": "ClassSessionRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L155"
- },
- {
- "id": "db_bookingrecord",
- "label": "BookingRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L166"
- },
- {
- "id": "db_createbookingparams",
- "label": "CreateBookingParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L181"
- },
- {
- "id": "db_createdbooking",
- "label": "CreatedBooking",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L197"
- },
- {
- "id": "db_waitlistentryparams",
- "label": "WaitlistEntryParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L203"
- },
- {
- "id": "db_dashboardmetrics",
- "label": "DashboardMetrics",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L211"
- },
- {
- "id": "db_reminderjobparams",
- "label": "ReminderJobParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L217"
- },
- {
- "id": "db_reminderjobrecord",
- "label": "ReminderJobRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L224"
- },
- {
- "id": "db_notificationdeliverylogparams",
- "label": "NotificationDeliveryLogParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L240"
- },
- {
- "id": "db_billingsnapshotrecord",
- "label": "BillingSnapshotRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L251"
- },
- {
- "id": "db_locationrecord",
- "label": "LocationRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L269"
- },
- {
- "id": "db_createlocationparams",
- "label": "CreateLocationParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L277"
- },
- {
- "id": "db_updatelocationparams",
- "label": "UpdateLocationParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L283"
- },
- {
- "id": "db_blockeddayrecord",
- "label": "BlockedDayRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L289"
- },
- {
- "id": "db_createblockeddayparams",
- "label": "CreateBlockedDayParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L300"
- },
- {
- "id": "db_updateblockeddayparams",
- "label": "UpdateBlockedDayParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L309"
- },
- {
- "id": "db_customerrecord",
- "label": "CustomerRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L317"
- },
- {
- "id": "db_createcustomerparams",
- "label": "CreateCustomerParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L328"
- },
- {
- "id": "db_updatecustomerparams",
- "label": "UpdateCustomerParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L337"
- },
- {
- "id": "db_workinghoursrecord",
- "label": "WorkingHoursRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L346"
- },
- {
- "id": "db_updateworkinghoursparams",
- "label": "UpdateWorkingHoursParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L354"
- },
- {
- "id": "db_pgrepository",
- "label": "PGRepository",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L360"
- },
- {
- "id": "db_repository_newrepository",
- "label": "NewRepository()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L364"
- },
- {
- "id": "db_pgrepository_gettenantbyslug",
- "label": ".GetTenantBySlug()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L374"
- },
- {
- "id": "db_pgrepository_gettenantbyid",
- "label": ".GetTenantByID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L399"
- },
- {
- "id": "db_pgrepository_gettenantbybillingcustomerid",
- "label": ".GetTenantByBillingCustomerID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L424"
- },
- {
- "id": "db_pgrepository_ensureuseridentity",
- "label": ".EnsureUserIdentity()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L449"
- },
- {
- "id": "db_pgrepository_createtenantforuser",
- "label": ".CreateTenantForUser()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L461"
- },
- {
- "id": "db_pgrepository_getbrandprofile",
- "label": ".GetBrandProfile()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L603"
- },
- {
- "id": "db_pgrepository_gettenantmembershipbyuserid",
- "label": ".GetTenantMembershipByUserID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L620"
- },
- {
- "id": "db_pgrepository_listservicesbytenant",
- "label": ".ListServicesByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L652"
- },
- {
- "id": "db_pgrepository_listavailabilityrulesbytenant",
- "label": ".ListAvailabilityRulesByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L683"
- },
- {
- "id": "db_pgrepository_listclasssessionsbytenant",
- "label": ".ListClassSessionsByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L713"
- },
- {
- "id": "db_pgrepository_listbookingsbytenantbetween",
- "label": ".ListBookingsByTenantBetween()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L747"
- },
- {
- "id": "db_pgrepository_createbooking",
- "label": ".CreateBooking()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L784"
- },
- {
- "id": "db_pgrepository_appendwaitlistentry",
- "label": ".AppendWaitlistEntry()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L812"
- },
- {
- "id": "db_pgrepository_createreminderjob",
- "label": ".CreateReminderJob()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L820"
- },
- {
- "id": "db_pgrepository_listduereminderjobs",
- "label": ".ListDueReminderJobs()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L828"
- },
- {
- "id": "db_pgrepository_markreminderjobdispatched",
- "label": ".MarkReminderJobDispatched()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L870"
- },
- {
- "id": "db_pgrepository_createnotificationdeliverylog",
- "label": ".CreateNotificationDeliveryLog()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L879"
- },
- {
- "id": "db_pgrepository_getdashboardmetrics",
- "label": ".GetDashboardMetrics()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L891"
- },
- {
- "id": "db_pgrepository_getsubscriptionsnapshot",
- "label": ".GetSubscriptionSnapshot()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L914"
- },
- {
- "id": "db_pgrepository_upsertsubscriptionsnapshot",
- "label": ".UpsertSubscriptionSnapshot()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L941"
- },
- {
- "id": "db_pgrepository_updatetenantbillingcustomerid",
- "label": ".UpdateTenantBillingCustomerID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L969"
- },
- {
- "id": "db_pgrepository_updatetenantbillingstate",
- "label": ".UpdateTenantBillingState()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L978"
- },
- {
- "id": "db_pgrepository_recordbillingevent",
- "label": ".RecordBillingEvent()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L987"
- },
- {
- "id": "db_pgrepository_listlocationsbytenant",
- "label": ".ListLocationsByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1003"
- },
- {
- "id": "db_pgrepository_getlocationbyid",
- "label": ".GetLocationByID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1026"
- },
- {
- "id": "db_pgrepository_createlocation",
- "label": ".CreateLocation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1036"
- },
- {
- "id": "db_pgrepository_updatelocation",
- "label": ".UpdateLocation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1046"
- },
- {
- "id": "db_pgrepository_deletelocation",
- "label": ".DeleteLocation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1059"
- },
- {
- "id": "db_pgrepository_listblockeddaysbytenant",
- "label": ".ListBlockedDaysByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1068"
- },
- {
- "id": "db_pgrepository_createblockedday",
- "label": ".CreateBlockedDay()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1091"
- },
- {
- "id": "db_pgrepository_updateblockedday",
- "label": ".UpdateBlockedDay()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1101"
- },
- {
- "id": "db_pgrepository_deleteblockedday",
- "label": ".DeleteBlockedDay()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1115"
- },
- {
- "id": "db_pgrepository_listcustomersbytenant",
- "label": ".ListCustomersByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1124"
- },
- {
- "id": "db_pgrepository_getcustomerbyid",
- "label": ".GetCustomerByID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1148"
- },
- {
- "id": "db_pgrepository_getcustomerbyemail",
- "label": ".GetCustomerByEmail()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1158"
- },
- {
- "id": "db_pgrepository_createcustomer",
- "label": ".CreateCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1168"
- },
- {
- "id": "db_pgrepository_updatecustomer",
- "label": ".UpdateCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1178"
- },
- {
- "id": "db_pgrepository_deletecustomer",
- "label": ".DeleteCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1193"
- },
- {
- "id": "db_pgrepository_getcustomerbookingscount",
- "label": ".GetCustomerBookingsCount()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1198"
- },
- {
- "id": "db_pgrepository_getcustomerlastbooking",
- "label": ".GetCustomerLastBooking()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1207"
- },
- {
- "id": "db_pgrepository_getbookingbyreference",
- "label": ".GetBookingByReference()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1220"
- },
- {
- "id": "db_pgrepository_updatebookingstatus",
- "label": ".UpdateBookingStatus()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1232"
- },
- {
- "id": "db_pgrepository_reschedulebooking",
- "label": ".RescheduleBooking()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1239"
- },
- {
- "id": "db_pgrepository_listworkinghoursbytenant",
- "label": ".ListWorkingHoursByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1250"
- },
- {
- "id": "db_pgrepository_updateworkinghours",
- "label": ".UpdateWorkingHours()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1273"
- },
- {
- "id": "db_memoryrepository",
- "label": "MemoryRepository",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1283"
- },
- {
- "id": "db_repository_newmemoryrepository",
- "label": "NewMemoryRepository()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1302"
- },
- {
- "id": "db_memoryrepository_gettenantbyslug",
- "label": ".GetTenantBySlug()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1411"
- },
- {
- "id": "db_memoryrepository_gettenantbyid",
- "label": ".GetTenantByID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1418"
- },
- {
- "id": "db_memoryrepository_gettenantbybillingcustomerid",
- "label": ".GetTenantByBillingCustomerID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1425"
- },
- {
- "id": "db_memoryrepository_ensureuseridentity",
- "label": ".EnsureUserIdentity()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1432"
- },
- {
- "id": "db_memoryrepository_createtenantforuser",
- "label": ".CreateTenantForUser()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1442"
- },
- {
- "id": "db_memoryrepository_gettenantmembershipbyuserid",
- "label": ".GetTenantMembershipByUserID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1503"
- },
- {
- "id": "db_memoryrepository_getbrandprofile",
- "label": ".GetBrandProfile()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1513"
- },
- {
- "id": "db_memoryrepository_listservicesbytenant",
- "label": ".ListServicesByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1523"
- },
- {
- "id": "db_memoryrepository_listavailabilityrulesbytenant",
- "label": ".ListAvailabilityRulesByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1530"
- },
- {
- "id": "db_memoryrepository_listclasssessionsbytenant",
- "label": ".ListClassSessionsByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1537"
- },
- {
- "id": "db_memoryrepository_listbookingsbytenantbetween",
- "label": ".ListBookingsByTenantBetween()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1555"
- },
- {
- "id": "db_memoryrepository_createbooking",
- "label": ".CreateBooking()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1569"
- },
- {
- "id": "db_memoryrepository_appendwaitlistentry",
- "label": ".AppendWaitlistEntry()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1592"
- },
- {
- "id": "db_memoryrepository_createreminderjob",
- "label": ".CreateReminderJob()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1597"
- },
- {
- "id": "db_memoryrepository_listduereminderjobs",
- "label": ".ListDueReminderJobs()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1629"
- },
- {
- "id": "db_memoryrepository_markreminderjobdispatched",
- "label": ".MarkReminderJobDispatched()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1643"
- },
- {
- "id": "db_memoryrepository_createnotificationdeliverylog",
- "label": ".CreateNotificationDeliveryLog()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1653"
- },
- {
- "id": "db_memoryrepository_getdashboardmetrics",
- "label": ".GetDashboardMetrics()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1658"
- },
- {
- "id": "db_memoryrepository_getsubscriptionsnapshot",
- "label": ".GetSubscriptionSnapshot()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1683"
- },
- {
- "id": "db_memoryrepository_upsertsubscriptionsnapshot",
- "label": ".UpsertSubscriptionSnapshot()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1690"
- },
- {
- "id": "db_memoryrepository_updatetenantbillingcustomerid",
- "label": ".UpdateTenantBillingCustomerID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1695"
- },
- {
- "id": "db_memoryrepository_updatetenantbillingstate",
- "label": ".UpdateTenantBillingState()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1708"
- },
- {
- "id": "db_memoryrepository_recordbillingevent",
- "label": ".RecordBillingEvent()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1725"
- },
- {
- "id": "db_memoryrepository_listlocationsbytenant",
- "label": ".ListLocationsByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1744"
- },
- {
- "id": "db_memoryrepository_getlocationbyid",
- "label": ".GetLocationByID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1751"
- },
- {
- "id": "db_memoryrepository_createlocation",
- "label": ".CreateLocation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1760"
- },
- {
- "id": "db_memoryrepository_updatelocation",
- "label": ".UpdateLocation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1772"
- },
- {
- "id": "db_memoryrepository_deletelocation",
- "label": ".DeleteLocation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1787"
- },
- {
- "id": "db_memoryrepository_listblockeddaysbytenant",
- "label": ".ListBlockedDaysByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1801"
- },
- {
- "id": "db_memoryrepository_createblockedday",
- "label": ".CreateBlockedDay()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1814"
- },
- {
- "id": "db_memoryrepository_updateblockedday",
- "label": ".UpdateBlockedDay()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1829"
- },
- {
- "id": "db_memoryrepository_deleteblockedday",
- "label": ".DeleteBlockedDay()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1850"
- },
- {
- "id": "db_memoryrepository_listcustomersbytenant",
- "label": ".ListCustomersByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1864"
- },
- {
- "id": "db_memoryrepository_getcustomerbyid",
- "label": ".GetCustomerByID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1879"
- },
- {
- "id": "db_memoryrepository_getcustomerbyemail",
- "label": ".GetCustomerByEmail()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1888"
- },
- {
- "id": "db_memoryrepository_createcustomer",
- "label": ".CreateCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1897"
- },
- {
- "id": "db_memoryrepository_updatecustomer",
- "label": ".UpdateCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1912"
- },
- {
- "id": "db_memoryrepository_deletecustomer",
- "label": ".DeleteCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1936"
- },
- {
- "id": "db_memoryrepository_getcustomerbookingscount",
- "label": ".GetCustomerBookingsCount()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1946"
- },
- {
- "id": "db_memoryrepository_getcustomerlastbooking",
- "label": ".GetCustomerLastBooking()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1958"
- },
- {
- "id": "db_memoryrepository_getbookingbyreference",
- "label": ".GetBookingByReference()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1984"
- },
- {
- "id": "db_memoryrepository_updatebookingstatus",
- "label": ".UpdateBookingStatus()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1993"
- },
- {
- "id": "db_memoryrepository_reschedulebooking",
- "label": ".RescheduleBooking()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2003"
- },
- {
- "id": "db_memoryrepository_listworkinghoursbytenant",
- "label": ".ListWorkingHoursByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2018"
- },
- {
- "id": "db_memoryrepository_updateworkinghours",
- "label": ".UpdateWorkingHours()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2025"
- },
- {
- "id": "db_repository_reference",
- "label": "Reference()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2043"
- },
- {
- "id": "db_repository_stringptr",
- "label": "stringPtr()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2047"
- },
- {
- "id": "db_repository_maxint",
- "label": "maxInt()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2051"
- },
- {
- "id": "db_repository_firstnonempty",
- "label": "firstNonEmpty()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2058"
- },
- {
- "id": "db_repository_defaultavailabilityblocks",
- "label": "defaultAvailabilityBlocks()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2067"
- },
- {
- "id": "apps_backend_internal_db_pool_go",
- "label": "pool.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L1"
- },
- {
- "id": "db_pools",
- "label": "Pools",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L12"
- },
- {
- "id": "db_pool_newpools",
- "label": "NewPools()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L17"
- },
- {
- "id": "db_pools_close",
- "label": ".Close()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L39"
- },
- {
- "id": "db_pools_databaseconfigured",
- "label": ".DatabaseConfigured()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L48"
- },
- {
- "id": "db_pool_connect",
- "label": "connect()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L52"
- },
- {
- "id": "apps_backend_internal_domain_models_go",
- "label": "models.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L1"
- },
- {
- "id": "domain_principal",
- "label": "Principal",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L5"
- },
- {
- "id": "domain_dashboardkpi",
- "label": "DashboardKPI",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L12"
- },
- {
- "id": "domain_upcomingbooking",
- "label": "UpcomingBooking",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L18"
- },
- {
- "id": "domain_widgetsnippet",
- "label": "WidgetSnippet",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L28"
- },
- {
- "id": "domain_trackingstatus",
- "label": "TrackingStatus",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L33"
- },
- {
- "id": "domain_dashboardsummary",
- "label": "DashboardSummary",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L40"
- },
- {
- "id": "domain_brandprofile",
- "label": "BrandProfile",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L54"
- },
- {
- "id": "domain_tenantbootstrap",
- "label": "TenantBootstrap",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L61"
- },
- {
- "id": "domain_teaminviterequest",
- "label": "TeamInviteRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L74"
- },
- {
- "id": "domain_availabilityblockrequest",
- "label": "AvailabilityBlockRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L79"
- },
- {
- "id": "domain_bookingdefaultsrequest",
- "label": "BookingDefaultsRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L86"
- },
- {
- "id": "domain_onboardtenantrequest",
- "label": "OnboardTenantRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L94"
- },
- {
- "id": "domain_timeslot",
- "label": "TimeSlot",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L107"
- },
- {
- "id": "domain_publicavailability",
- "label": "PublicAvailability",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L119"
- },
- {
- "id": "domain_createbookingrequest",
- "label": "CreateBookingRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L126"
- },
- {
- "id": "domain_createbookingresponse",
- "label": "CreateBookingResponse",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L140"
- },
- {
- "id": "domain_planentitlements",
- "label": "PlanEntitlements",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L146"
- },
- {
- "id": "domain_plandisplayprice",
- "label": "PlanDisplayPrice",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L155"
- },
- {
- "id": "domain_subscriptionsnapshot",
- "label": "SubscriptionSnapshot",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L161"
- },
- {
- "id": "domain_checkoutsessionrequest",
- "label": "CheckoutSessionRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L184"
- },
- {
- "id": "domain_checkoutlaunchresponse",
- "label": "CheckoutLaunchResponse",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L189"
- },
- {
- "id": "domain_portalsessionresponse",
- "label": "PortalSessionResponse",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L198"
- },
- {
- "id": "domain_dispatchreminderjobsrequest",
- "label": "DispatchReminderJobsRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L202"
- },
- {
- "id": "domain_dispatchreminderjobsresponse",
- "label": "DispatchReminderJobsResponse",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L206"
- },
- {
- "id": "domain_location",
- "label": "Location",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L216"
- },
- {
- "id": "domain_createlocationrequest",
- "label": "CreateLocationRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L226"
- },
- {
- "id": "domain_updatelocationrequest",
- "label": "UpdateLocationRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L232"
- },
- {
- "id": "domain_blockedday",
- "label": "BlockedDay",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L242"
- },
- {
- "id": "domain_createblockeddayrequest",
- "label": "CreateBlockedDayRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L252"
- },
- {
- "id": "domain_updateblockeddayrequest",
- "label": "UpdateBlockedDayRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L259"
- },
- {
- "id": "domain_customer",
- "label": "Customer",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L268"
- },
- {
- "id": "domain_createcustomerrequest",
- "label": "CreateCustomerRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L281"
- },
- {
- "id": "domain_updatecustomerrequest",
- "label": "UpdateCustomerRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L289"
- },
- {
- "id": "domain_customerbookingview",
- "label": "CustomerBookingView",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L301"
- },
- {
- "id": "domain_reschedulebookingrequest",
- "label": "RescheduleBookingRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L314"
- },
- {
- "id": "domain_cancelbookingrequest",
- "label": "CancelBookingRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L320"
- },
- {
- "id": "domain_workinghours",
- "label": "WorkingHours",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L328"
- },
- {
- "id": "domain_updateworkinghoursrequest",
- "label": "UpdateWorkingHoursRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L335"
- },
- {
- "id": "domain_emailtemplate",
- "label": "EmailTemplate",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L345"
- },
- {
- "id": "domain_sendemailrequest",
- "label": "SendEmailRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L355"
- },
- {
- "id": "domain_emailnotification",
- "label": "EmailNotification",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L362"
- },
- {
- "id": "apps_backend_internal_config_config_test_go",
- "label": "config_test.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config_test.go",
- "source_location": "L1"
- },
- {
- "id": "config_config_test_testpaddlecheckoutconfigured",
- "label": "TestPaddleCheckoutConfigured()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config_test.go",
- "source_location": "L5"
- },
- {
- "id": "config_config_test_testpaddlecheckoutconfiguredrequireswebhook",
- "label": "TestPaddleCheckoutConfiguredRequiresWebhook()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config_test.go",
- "source_location": "L21"
- },
- {
- "id": "apps_backend_internal_config_config_go",
- "label": "config.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L1"
- },
- {
- "id": "config_config",
- "label": "Config",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L10"
- },
- {
- "id": "config_config_load",
- "label": "Load()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L34"
- },
- {
- "id": "config_config_validateruntimerequirements",
- "label": ".validateRuntimeRequirements()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L69"
- },
- {
- "id": "config_config_paddleconfigured",
- "label": ".PaddleConfigured()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L106"
- },
- {
- "id": "config_config_paddlewebhookconfigured",
- "label": ".PaddleWebhookConfigured()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L110"
- },
- {
- "id": "config_config_paddlecheckoutconfigured",
- "label": ".PaddleCheckoutConfigured()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L114"
- },
- {
- "id": "config_config_paddlepricematrixfromenv",
- "label": "paddlePriceMatrixFromEnv()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L119"
- },
- {
- "id": "config_config_normalizepaddleenvironment",
- "label": "normalizePaddleEnvironment()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L133"
- },
- {
- "id": "config_config_normalizeplancode",
- "label": "normalizePlanCode()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L142"
- },
- {
- "id": "config_config_valueordefault",
- "label": "valueOrDefault()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L153"
- },
- {
- "id": "config_config_boolfromenv",
- "label": "boolFromEnv()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L160"
- },
- {
- "id": "config_config_uniquestrings",
- "label": "uniqueStrings()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L169"
- },
- {
- "id": "apps_backend_internal_notifications_service_go",
- "label": "service.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L1"
- },
- {
- "id": "notifications_deliveryreceipt",
- "label": "DeliveryReceipt",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L19"
- },
- {
- "id": "notifications_emailmessage",
- "label": "EmailMessage",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L24"
- },
- {
- "id": "notifications_emailprovider",
- "label": "EmailProvider",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L32"
- },
- {
- "id": "notifications_service",
- "label": "Service",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L36"
- },
- {
- "id": "notifications_service_newservice",
- "label": "NewService()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L43"
- },
- {
- "id": "notifications_service_dispatchdue",
- "label": ".DispatchDue()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L57"
- },
- {
- "id": "notifications_service_sendbookingconfirmation",
- "label": ".SendBookingConfirmation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L124"
- },
- {
- "id": "notifications_service_sendbookingreschedule",
- "label": ".SendBookingReschedule()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L135"
- },
- {
- "id": "notifications_service_sendbookingcancellation",
- "label": ".SendBookingCancellation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L146"
- },
- {
- "id": "notifications_service_sendbusinessnotification",
- "label": ".SendBusinessNotification()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L157"
- },
- {
- "id": "notifications_service_renderemailmessage",
- "label": "renderEmailMessage()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L168"
- },
- {
- "id": "notifications_service_renderremindercopy",
- "label": "renderReminderCopy()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L172"
- },
- {
- "id": "notifications_service_localizedstartsat",
- "label": "localizedStartsAt()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L196"
- },
- {
- "id": "notifications_service_reminderrecipient",
- "label": "reminderRecipient()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L208"
- },
- {
- "id": "notifications_noopemailprovider",
- "label": "noopEmailProvider",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L212"
- },
- {
- "id": "notifications_noopemailprovider_send",
- "label": ".Send()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L214"
- },
- {
- "id": "notifications_smtpemailprovider",
- "label": "smtpEmailProvider",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L224"
- },
- {
- "id": "notifications_smtpemailprovider_send",
- "label": ".Send()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L228"
- },
- {
- "id": "apps_backend_internal_notifications_email_templates_go",
- "label": "email_templates.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L1"
- },
- {
- "id": "notifications_emailtype",
- "label": "EmailType",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L10"
- },
- {
- "id": "notifications_bookingemaildata",
- "label": "BookingEmailData",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L20"
- },
- {
- "id": "notifications_email_templates_renderemailmessage",
- "label": "RenderEmailMessage()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L42"
- },
- {
- "id": "notifications_email_templates_rendersubject",
- "label": "renderSubject()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L56"
- },
- {
- "id": "notifications_email_templates_rendertextbody",
- "label": "renderTextBody()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L90"
- },
- {
- "id": "notifications_email_templates_renderhtmlbody",
- "label": "renderHTMLBody()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L241"
- },
- {
- "id": "notifications_email_templates_formatlocalizedtime",
- "label": "formatLocalizedTime()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L266"
- },
- {
- "id": "notifications_email_templates_formatlocalizeddatetime",
- "label": "formatLocalizedDateTime()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L278"
- },
- {
- "id": "notifications_email_templates_splitparagraphs",
- "label": "splitParagraphs()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L290"
- },
- {
- "id": "notifications_email_templates_splitlines",
- "label": "splitLines()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L313"
- },
- {
- "id": "notifications_email_templates_trimspace",
- "label": "trimSpace()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L326"
- },
- {
- "id": "notifications_email_templates_renderreminderemail",
- "label": "RenderReminderEmail()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L339"
- },
- {
- "id": "apps_backend_internal_notifications_service_test_go",
- "label": "service_test.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L1"
- },
- {
- "id": "notifications_service_test_testdispatchdueprocessespendingemailreminders",
- "label": "TestDispatchDueProcessesPendingEmailReminders()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L13"
- },
- {
- "id": "notifications_service_test_testdispatchduefailsunknownchannel",
- "label": "TestDispatchDueFailsUnknownChannel()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L66"
- },
- {
- "id": "notifications_service_test_testdispatchrequestcontractshape",
- "label": "TestDispatchRequestContractShape()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L87"
- },
- {
- "id": "apps_backend_internal_bookings_service_go",
- "label": "service.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L1"
- },
- {
- "id": "bookings_service",
- "label": "Service",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L27"
- },
- {
- "id": "bookings_notifier",
- "label": "Notifier",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L32"
- },
- {
- "id": "bookings_service_newservice",
- "label": "NewService()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L37"
- },
- {
- "id": "bookings_noopnotifier",
- "label": "noopNotifier",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L44"
- },
- {
- "id": "bookings_noopnotifier_sendbookingconfirmation",
- "label": ".SendBookingConfirmation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L46"
- },
- {
- "id": "bookings_noopnotifier_sendbusinessnotification",
- "label": ".SendBusinessNotification()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L50"
- },
- {
- "id": "bookings_service_availability",
- "label": ".Availability()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L54"
- },
- {
- "id": "bookings_service_create",
- "label": ".Create()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L98"
- },
- {
- "id": "bookings_service_sendbookingconfirmationemails",
- "label": ".sendBookingConfirmationEmails()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L240"
- },
- {
- "id": "bookings_service_serviceforrequest",
- "label": ".serviceForRequest()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L273"
- },
- {
- "id": "bookings_service_classsessionforrequest",
- "label": ".classSessionForRequest()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L286"
- },
- {
- "id": "bookings_service_dashboardsummary",
- "label": ".DashboardSummary()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L299"
- },
- {
- "id": "bookings_service_widgetsnippets",
- "label": "widgetSnippets()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L352"
- },
- {
- "id": "bookings_service_trackingstatus",
- "label": "trackingStatus()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L361"
- },
- {
- "id": "bookings_service_normalizeplancode",
- "label": "normalizePlanCode()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L369"
- },
- {
- "id": "bookings_service_generateappointmentslots",
- "label": "generateAppointmentSlots()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L380"
- },
- {
- "id": "bookings_service_generateclassslots",
- "label": "generateClassSlots()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L449"
- },
- {
- "id": "bookings_service_collides",
- "label": "collides()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L471"
- },
- {
- "id": "bookings_service_sameresource",
- "label": "sameResource()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L486"
- },
- {
- "id": "bookings_service_samesecond",
- "label": "sameSecond()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L493"
- },
- {
- "id": "bookings_service_countclassbookings",
- "label": "countClassBookings()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L497"
- },
- {
- "id": "bookings_service_reminderschedule",
- "label": "reminderSchedule()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L510"
- },
- {
- "id": "apps_backend_internal_bookings_customer_service_go",
- "label": "customer_service.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L1"
- },
- {
- "id": "bookings_customerservice",
- "label": "CustomerService",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L19"
- },
- {
- "id": "bookings_customernotifier",
- "label": "CustomerNotifier",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L24"
- },
- {
- "id": "bookings_customer_service_newcustomerservice",
- "label": "NewCustomerService()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L29"
- },
- {
- "id": "bookings_customernoopnotifier",
- "label": "customerNoopNotifier",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L36"
- },
- {
- "id": "bookings_customernoopnotifier_sendbookingreschedule",
- "label": ".SendBookingReschedule()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L38"
- },
- {
- "id": "bookings_customernoopnotifier_sendbookingcancellation",
- "label": ".SendBookingCancellation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L42"
- },
- {
- "id": "bookings_customerservice_getbookingbyreference",
- "label": ".GetBookingByReference()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L47"
- },
- {
- "id": "bookings_customerservice_reschedulebooking",
- "label": ".RescheduleBooking()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L73"
- },
- {
- "id": "bookings_customerservice_cancelbooking",
- "label": ".CancelBooking()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L112"
- },
- {
- "id": "bookings_customerservice_sendrescheduleemail",
- "label": ".sendRescheduleEmail()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L132"
- },
- {
- "id": "bookings_customerservice_sendcancellationemail",
- "label": ".sendCancellationEmail()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L168"
- },
- {
- "id": "apps_backend_internal_bookings_service_test_go",
- "label": "service_test.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L1"
- },
- {
- "id": "bookings_service_test_testcreateappointmentrejectsconflict",
- "label": "TestCreateAppointmentRejectsConflict()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L13"
- },
- {
- "id": "bookings_service_test_testcreateclassfallsbacktowaitlistwhencapacityreached",
- "label": "TestCreateClassFallsBackToWaitlistWhenCapacityReached()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L70"
- },
- {
- "id": "bookings_service_test_testcreateappointmentrequirestenantservice",
- "label": "TestCreateAppointmentRequiresTenantService()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L127"
- },
- {
- "id": "bookings_service_test_testcreateclassrequiresexistingsession",
- "label": "TestCreateClassRequiresExistingSession()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L144"
- },
- {
- "id": "bookings_service_test_testavailabilitygeneratesupcomingslots",
- "label": "TestAvailabilityGeneratesUpcomingSlots()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L163"
- },
- {
- "id": "bookings_service_test_testcreateschedulesreminderjobforupcomingappointment",
- "label": "TestCreateSchedulesReminderJobForUpcomingAppointment()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L186"
- },
- {
- "id": "apps_backend_internal_billing_service_go",
- "label": "service.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L1"
- },
- {
- "id": "billing_service",
- "label": "Service",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L44"
- },
- {
- "id": "billing_webhookenvelope",
- "label": "webhookEnvelope",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L51"
- },
- {
- "id": "billing_service_newservice",
- "label": "NewService()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L62"
- },
- {
- "id": "billing_service_getsubscription",
- "label": ".GetSubscription()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L85"
- },
- {
- "id": "billing_service_createcheckoutsession",
- "label": ".CreateCheckoutSession()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L111"
- },
- {
- "id": "billing_service_refresh",
- "label": ".Refresh()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L146"
- },
- {
- "id": "billing_service_createportalsession",
- "label": ".CreatePortalSession()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L177"
- },
- {
- "id": "billing_service_handlewebhook",
- "label": ".HandleWebhook()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L218"
- },
- {
- "id": "billing_service_resolvewebhooktenant",
- "label": ".resolveWebhookTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L279"
- },
- {
- "id": "billing_service_syncpaddledata",
- "label": ".syncPaddleData()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L292"
- },
- {
- "id": "billing_service_tosnapshot",
- "label": "toSnapshot()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L353"
- },
- {
- "id": "billing_service_entitlementsforplan",
- "label": "entitlementsForPlan()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L390"
- },
- {
- "id": "billing_service_plancodeforprice",
- "label": ".planCodeForPrice()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L401"
- },
- {
- "id": "billing_service_priceforplan",
- "label": ".priceForPlan()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L412"
- },
- {
- "id": "billing_service_subscriptionrank",
- "label": "subscriptionRank()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L429"
- },
- {
- "id": "billing_service_displaypricesforplan",
- "label": "displayPricesForPlan()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L446"
- },
- {
- "id": "billing_service_normalizeplancode",
- "label": "normalizePlanCode()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L466"
- },
- {
- "id": "billing_service_normalizecurrency",
- "label": "normalizeCurrency()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L477"
- },
- {
- "id": "billing_service_normalizesubscriptionstatus",
- "label": "normalizeSubscriptionStatus()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L488"
- },
- {
- "id": "billing_service_checkoutavailable",
- "label": "checkoutAvailable()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L497"
- },
- {
- "id": "billing_service_customdatastring",
- "label": "customDataString()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L510"
- },
- {
- "id": "billing_service_parserfc3339ptr",
- "label": "parseRFC3339Ptr()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L526"
- },
- {
- "id": "billing_service_timeperiodstart",
- "label": "timePeriodStart()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L538"
- },
- {
- "id": "billing_service_timeperiodend",
- "label": "timePeriodEnd()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L545"
- },
- {
- "id": "billing_service_derefstring",
- "label": "derefString()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L552"
- },
- {
- "id": "billing_service_firstnonempty",
- "label": "firstNonEmpty()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L559"
- },
- {
- "id": "apps_backend_internal_billing_service_test_go",
- "label": "service_test.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L1"
- },
- {
- "id": "billing_service_test_testconfig",
- "label": "testConfig()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L12"
- },
- {
- "id": "billing_service_test_testgetsubscriptionfallsbacktosnapshotandentitlements",
- "label": "TestGetSubscriptionFallsBackToSnapshotAndEntitlements()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L25"
- },
- {
- "id": "billing_service_test_testcreatecheckoutrequirespaddleconfig",
- "label": "TestCreateCheckoutRequiresPaddleConfig()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L47"
- },
- {
- "id": "billing_service_test_testcreatecheckoutreturnslaunchpayload",
- "label": "TestCreateCheckoutReturnsLaunchPayload()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L61"
- },
- {
- "id": "billing_service_test_testrefreshrequirespaddlekeywhencustomerexists",
- "label": "TestRefreshRequiresPaddleKeyWhenCustomerExists()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L82"
- },
- {
- "id": "billing_service_test_testgetsubscriptiondisablescheckoutwhenwebhookmissing",
- "label": "TestGetSubscriptionDisablesCheckoutWhenWebhookMissing()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L96"
- },
- {
- "id": "billing_service_test_testgetsubscriptionenablescheckoutwhenpaddleconfigured",
- "label": "TestGetSubscriptionEnablesCheckoutWhenPaddleConfigured()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L113"
- },
- {
- "id": "billing_service_test_testcreateportalsessionrequirescustomer",
- "label": "TestCreatePortalSessionRequiresCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L131"
- },
- {
- "id": "apps_backend_internal_auth_middleware_go",
- "label": "middleware.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L1"
- },
- {
- "id": "auth_middleware_requireauth",
- "label": "RequireAuth()",
- "file_type": "code",
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L23"
- },
- {
- "id": "auth_middleware_principalfromcontext",
- "label": "PrincipalFromContext()",
- "file_type": "code",
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L82"
- },
- {
- "id": "apps_backend_internal_auth_neon_go",
- "label": "neon.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L1"
- },
- {
- "id": "auth_verifier",
- "label": "Verifier",
- "file_type": "code",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L15"
- },
- {
- "id": "auth_neon_newverifier",
- "label": "NewVerifier()",
- "file_type": "code",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L23"
- },
- {
- "id": "auth_verifier_enabled",
- "label": ".Enabled()",
- "file_type": "code",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L58"
- },
- {
- "id": "auth_verifier_close",
- "label": ".Close()",
- "file_type": "code",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L62"
- },
- {
- "id": "auth_verifier_verify",
- "label": ".Verify()",
- "file_type": "code",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L68"
- },
- {
- "id": "apps_backend_internal_api_server_go",
- "label": "server.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L1"
- },
- {
- "id": "api_server",
- "label": "Server",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L26"
- },
- {
- "id": "api_server_newserver",
- "label": "NewServer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L33"
- },
- {
- "id": "api_server_handler",
- "label": ".Handler()",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L590"
- },
- {
- "id": "api_server_close",
- "label": ".Close()",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L594"
- },
- {
- "id": "api_server_authorizejobrunner",
- "label": "authorizeJobRunner()",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L600"
- },
- {
- "id": "api_server_allowedorigins",
- "label": "allowedOrigins()",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L607"
- },
- {
- "id": "api_server_widgetjavascript",
- "label": "widgetJavaScript()",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L634"
- },
- {
- "id": "apps_backend_internal_api_server_test_go",
- "label": "server_test.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L1"
- },
- {
- "id": "api_server_test_testdispatchreminderjobsrequiresjobrunnerkey",
- "label": "TestDispatchReminderJobsRequiresJobRunnerKey()",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L11"
- },
- {
- "id": "api_server_test_testdispatchreminderjobsacceptsconfiguredjobrunnerkey",
- "label": "TestDispatchReminderJobsAcceptsConfiguredJobRunnerKey()",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L33"
- },
- {
- "id": "apps_backend_internal_tenancy_service_go",
- "label": "service.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L1"
- },
- {
- "id": "tenancy_service",
- "label": "Service",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L25"
- },
- {
- "id": "tenancy_service_newservice",
- "label": "NewService()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L29"
- },
- {
- "id": "tenancy_service_bootstrap",
- "label": ".Bootstrap()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L33"
- },
- {
- "id": "tenancy_service_onboard",
- "label": ".Onboard()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L73"
- },
- {
- "id": "tenancy_service_brandprofile",
- "label": ".brandProfile()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L182"
- },
- {
- "id": "tenancy_service_validateavailabilityblocks",
- "label": "validateAvailabilityBlocks()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L195"
- },
- {
- "id": "tenancy_service_toavailabilityblocks",
- "label": "toAvailabilityBlocks()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L218"
- },
- {
- "id": "tenancy_service_toteaminvites",
- "label": "toTeamInvites()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L231"
- },
- {
- "id": "tenancy_service_normalizeclock",
- "label": "normalizeClock()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L247"
- },
- {
- "id": "tenancy_service_normalizeplancode",
- "label": "normalizePlanCode()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L255"
- },
- {
- "id": "tenancy_service_firstnonempty",
- "label": "firstNonEmpty()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L266"
- },
- {
- "id": "apps_backend_internal_tenancy_service_test_go",
- "label": "service_test.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L1"
- },
- {
- "id": "tenancy_service_test_testbootstrapresolvesmembershipafteridentitysync",
- "label": "TestBootstrapResolvesMembershipAfterIdentitySync()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L11"
- },
- {
- "id": "tenancy_service_test_testbootstrapreturnsshellwhenmembershipmissing",
- "label": "TestBootstrapReturnsShellWhenMembershipMissing()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L40"
- },
- {
- "id": "tenancy_service_test_testonboardcreatestenantforauthenticateduser",
- "label": "TestOnboardCreatesTenantForAuthenticatedUser()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L62"
- },
- {
- "id": "tenancy_service_test_testonboardrejectsinvalidslug",
- "label": "TestOnboardRejectsInvalidSlug()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L89"
- },
- {
- "id": "apps_frontend_vite_config_ts",
- "label": "vite.config.ts",
- "file_type": "code",
- "source_file": "apps/frontend/vite.config.ts",
- "source_location": "L1"
- },
- {
- "id": "apps_frontend_src_app_tsx",
- "label": "App.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L1"
- },
- {
- "id": "src_app_scrolltotop",
- "label": "ScrollToTop()",
- "file_type": "code",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L10"
- },
- {
- "id": "src_app_app",
- "label": "App()",
- "file_type": "code",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L22"
- },
- {
- "id": "apps_frontend_src_main_tsx",
- "label": "main.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/main.tsx",
- "source_location": "L1"
- },
- {
- "id": "apps_frontend_src_routes_about_route_tsx",
- "label": "about-route.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/about-route.tsx",
- "source_location": "L1"
- },
- {
- "id": "routes_about_route_aboutroute",
- "label": "AboutRoute()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/about-route.tsx",
- "source_location": "L6"
- },
- {
- "id": "apps_frontend_src_routes_auth_callback_route_tsx",
- "label": "auth-callback-route.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/auth-callback-route.tsx",
- "source_location": "L1"
- },
- {
- "id": "routes_auth_callback_route_authcallbackroute",
- "label": "AuthCallbackRoute()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/auth-callback-route.tsx",
- "source_location": "L6"
- },
- {
- "id": "apps_frontend_src_routes_public_booking_route_tsx",
- "label": "public-booking-route.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L1"
- },
- {
- "id": "routes_public_booking_route_tenantslug",
- "label": "tenantSlug()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L12"
- },
- {
- "id": "routes_public_booking_route_bookslot",
- "label": "bookSlot()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L31"
- },
- {
- "id": "apps_frontend_src_routes_dashboard_route_tsx",
- "label": "dashboard-route.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1"
- },
- {
- "id": "routes_dashboard_route_layoutdashboardicon",
- "label": "LayoutDashboardIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L33"
- },
- {
- "id": "routes_dashboard_route_calendardaysicon",
- "label": "CalendarDaysIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L42"
- },
- {
- "id": "routes_dashboard_route_creditcardicon",
- "label": "CreditCardIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L52"
- },
- {
- "id": "routes_dashboard_route_settings2icon",
- "label": "Settings2Icon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L59"
- },
- {
- "id": "routes_dashboard_route_logouticon",
- "label": "LogOutIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L67"
- },
- {
- "id": "routes_dashboard_route_menuicon",
- "label": "MenuIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L75"
- },
- {
- "id": "routes_dashboard_route_xicon",
- "label": "XIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L81"
- },
- {
- "id": "routes_dashboard_route_trendingupicon",
- "label": "TrendingUpIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L87"
- },
- {
- "id": "routes_dashboard_route_trendingdownicon",
- "label": "TrendingDownIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L94"
- },
- {
- "id": "routes_dashboard_route_clockicon",
- "label": "ClockIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L101"
- },
- {
- "id": "routes_dashboard_route_checkcircleicon",
- "label": "CheckCircleIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L107"
- },
- {
- "id": "routes_dashboard_route_alertcircleicon",
- "label": "AlertCircleIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L113"
- },
- {
- "id": "routes_dashboard_route_morehorizontalicon",
- "label": "MoreHorizontalIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L119"
- },
- {
- "id": "routes_dashboard_route_chevronlefticon",
- "label": "ChevronLeftIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L125"
- },
- {
- "id": "routes_dashboard_route_chevronrighticon",
- "label": "ChevronRightIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L131"
- },
- {
- "id": "routes_dashboard_route_sparklesicon",
- "label": "SparklesIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L137"
- },
- {
- "id": "routes_dashboard_route_bellicon",
- "label": "BellIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L143"
- },
- {
- "id": "routes_dashboard_route_plusicon",
- "label": "PlusIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L149"
- },
- {
- "id": "routes_dashboard_route_usersicon",
- "label": "UsersIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L155"
- },
- {
- "id": "routes_dashboard_route_usercircleicon",
- "label": "UserCircleIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L161"
- },
- {
- "id": "routes_dashboard_route_iscs",
- "label": "isCs()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L319"
- },
- {
- "id": "routes_dashboard_route_changemonth",
- "label": "changeMonth()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L347"
- },
- {
- "id": "routes_dashboard_route_prevmonth",
- "label": "prevMonth()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L355"
- },
- {
- "id": "routes_dashboard_route_nextmonth",
- "label": "nextMonth()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L356"
- },
- {
- "id": "routes_dashboard_route_trend",
- "label": "trend()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L449"
- },
- {
- "id": "routes_dashboard_route_trendclass",
- "label": "trendClass()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L450"
- },
- {
- "id": "routes_dashboard_route_sparklineclass",
- "label": "sparklineClass()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L460"
- },
- {
- "id": "routes_dashboard_route_isdemomode",
- "label": "isDemoMode()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L571"
- },
- {
- "id": "routes_dashboard_route_resolvedsummary",
- "label": "resolvedSummary()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L595"
- },
- {
- "id": "routes_dashboard_route_resolvedbootstrap",
- "label": "resolvedBootstrap()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L596"
- },
- {
- "id": "routes_dashboard_route_resolvedbilling",
- "label": "resolvedBilling()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L597"
- },
- {
- "id": "routes_dashboard_route_hastenant",
- "label": "hasTenant()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L642"
- },
- {
- "id": "routes_dashboard_route_isdashboardready",
- "label": "isDashboardReady()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L643"
- },
- {
- "id": "routes_dashboard_route_refreshbilling",
- "label": "refreshBilling()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L645"
- },
- {
- "id": "routes_dashboard_route_opencheckout",
- "label": "openCheckout()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L669"
- },
- {
- "id": "routes_dashboard_route_openbillingportal",
- "label": "openBillingPortal()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L716"
- },
- {
- "id": "routes_dashboard_route_changesection",
- "label": "changeSection()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L754"
- },
- {
- "id": "routes_dashboard_route_resolvedallbookings",
- "label": "resolvedAllBookings()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L895"
- },
- {
- "id": "routes_dashboard_route_handlecreatebooking",
- "label": "handleCreateBooking()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L954"
- },
- {
- "id": "routes_dashboard_route_handleupdatebooking",
- "label": "handleUpdateBooking()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L989"
- },
- {
- "id": "routes_dashboard_route_handlecancelbooking",
- "label": "handleCancelBooking()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1015"
- },
- {
- "id": "routes_dashboard_route_handlereschedulebooking",
- "label": "handleRescheduleBooking()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1028"
- },
- {
- "id": "routes_dashboard_route_openbookingdetail",
- "label": "openBookingDetail()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1045"
- },
- {
- "id": "routes_dashboard_route_bookingstats",
- "label": "bookingStats()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1076"
- },
- {
- "id": "routes_dashboard_route_billingpricelabel",
- "label": "billingPriceLabel()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1538"
- },
- {
- "id": "routes_dashboard_route_handlesavebrand",
- "label": "handleSaveBrand()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1592"
- },
- {
- "id": "routes_dashboard_route_getdemocustomers",
- "label": "getDemoCustomers()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2184"
- },
- {
- "id": "routes_dashboard_route_resolvedcustomers",
- "label": "resolvedCustomers()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2192"
- },
- {
- "id": "routes_dashboard_route_resolvedbookings",
- "label": "resolvedBookings()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2193"
- },
- {
- "id": "routes_dashboard_route_getcustomerbookings",
- "label": "getCustomerBookings()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2223"
- },
- {
- "id": "routes_dashboard_route_opencustomerdetail",
- "label": "openCustomerDetail()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2229"
- },
- {
- "id": "routes_dashboard_route_filteredcustomers",
- "label": "filteredCustomers()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2259"
- },
- {
- "id": "routes_dashboard_route_demodata",
- "label": "demoData()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2496"
- },
- {
- "id": "routes_dashboard_route_resolvedlocations",
- "label": "resolvedLocations()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2519"
- },
- {
- "id": "routes_dashboard_route_resolvedblockeddays",
- "label": "resolvedBlockedDays()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2520"
- },
- {
- "id": "routes_dashboard_route_resolvedworkinghours",
- "label": "resolvedWorkingHours()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2521"
- },
- {
- "id": "routes_dashboard_route_handleaddzone",
- "label": "handleAddZone()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2523"
- },
- {
- "id": "routes_dashboard_route_handleaddblockedday",
- "label": "handleAddBlockedDay()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2540"
- },
- {
- "id": "routes_dashboard_route_handledeleteblockedday",
- "label": "handleDeleteBlockedDay()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2562"
- },
- {
- "id": "apps_frontend_src_routes_contact_route_tsx",
- "label": "contact-route.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/contact-route.tsx",
- "source_location": "L1"
- },
- {
- "id": "routes_contact_route_handlesubmit",
- "label": "handleSubmit()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/contact-route.tsx",
- "source_location": "L14"
- },
- {
- "id": "apps_frontend_src_routes_home_route_tsx",
- "label": "home-route.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L1"
- },
- {
- "id": "routes_home_route_calendaricon",
- "label": "CalendarIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L7"
- },
- {
- "id": "routes_home_route_clockicon",
- "label": "ClockIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L16"
- },
- {
- "id": "routes_home_route_usersicon",
- "label": "UsersIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L23"
- },
- {
- "id": "routes_home_route_bellicon",
- "label": "BellIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L32"
- },
- {
- "id": "routes_home_route_shieldicon",
- "label": "ShieldIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L39"
- },
- {
- "id": "routes_home_route_zapicon",
- "label": "ZapIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L45"
- },
- {
- "id": "routes_home_route_arrowrighticon",
- "label": "ArrowRightIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L51"
- },
- {
- "id": "routes_home_route_checkicon",
- "label": "CheckIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L58"
- },
- {
- "id": "routes_home_route_sunicon",
- "label": "SunIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L64"
- },
- {
- "id": "routes_home_route_moonicon",
- "label": "MoonIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L78"
- },
- {
- "id": "routes_home_route_stepcard",
- "label": "StepCard()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L91"
- },
- {
- "id": "routes_home_route_prevmonth",
- "label": "prevMonth()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L121"
- },
- {
- "id": "routes_home_route_nextmonth",
- "label": "nextMonth()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L127"
- },
- {
- "id": "apps_frontend_src_routes_not_found_route_tsx",
- "label": "not-found-route.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/not-found-route.tsx",
- "source_location": "L1"
- },
- {
- "id": "routes_not_found_route_notfoundroute",
- "label": "NotFoundRoute()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/not-found-route.tsx",
- "source_location": "L5"
- },
- {
- "id": "apps_frontend_src_routes_legal_route_tsx",
- "label": "legal-route.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L1"
- },
- {
- "id": "routes_legal_route_kind",
- "label": "kind()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L10"
- },
- {
- "id": "routes_legal_route_heropose",
- "label": "heroPose()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L11"
- },
- {
- "id": "routes_legal_route_helperpose",
- "label": "helperPose()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L12"
- },
- {
- "id": "routes_legal_route_sections",
- "label": "sections()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L13"
- },
- {
- "id": "apps_frontend_src_routes_booking_manage_route_tsx",
- "label": "booking-manage-route.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L1"
- },
- {
- "id": "routes_booking_manage_route_token",
- "label": "token()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L20"
- },
- {
- "id": "routes_booking_manage_route_reference",
- "label": "reference()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L21"
- },
- {
- "id": "routes_booking_manage_route_handlereschedule",
- "label": "handleReschedule()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L51"
- },
- {
- "id": "routes_booking_manage_route_handlecancel",
- "label": "handleCancel()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L96"
- },
- {
- "id": "routes_booking_manage_route_formatdate",
- "label": "formatDate()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L126"
- },
- {
- "id": "routes_booking_manage_route_formattime",
- "label": "formatTime()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L136"
- },
- {
- "id": "routes_booking_manage_route_isrescheduling",
- "label": "isRescheduling()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L352"
- },
- {
- "id": "routes_booking_manage_route_iscancelling",
- "label": "isCancelling()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L411"
- },
- {
- "id": "apps_frontend_src_components_bookra_character_tsx",
- "label": "bookra-character.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/bookra-character.tsx",
- "source_location": "L1"
- },
- {
- "id": "components_bookra_character_bookracharacter",
- "label": "BookraCharacter()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/bookra-character.tsx",
- "source_location": "L79"
- },
- {
- "id": "components_bookra_character_characterwithmessage",
- "label": "CharacterWithMessage()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/bookra-character.tsx",
- "source_location": "L125"
- },
- {
- "id": "apps_frontend_src_components_index_ts",
- "label": "index.ts",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/index.ts",
- "source_location": "L1"
- },
- {
- "id": "apps_frontend_src_components_integration_modal_tsx",
- "label": "integration-modal.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/integration-modal.tsx",
- "source_location": "L1"
- },
- {
- "id": "components_integration_modal_copytoclipboard",
- "label": "copyToClipboard()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/integration-modal.tsx",
- "source_location": "L16"
- },
- {
- "id": "apps_frontend_src_components_location_map_tsx",
- "label": "location-map.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L1"
- },
- {
- "id": "components_location_map_loadleaflet",
- "label": "loadLeaflet()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L29"
- },
- {
- "id": "components_location_map_safemarkercolor",
- "label": "safeMarkerColor()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L61"
- },
- {
- "id": "components_location_map_escapehtml",
- "label": "escapeHtml()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L68"
- },
- {
- "id": "components_location_map_createmarkericon",
- "label": "createMarkerIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L77"
- },
- {
- "id": "components_location_map_locationmap",
- "label": "LocationMap()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L88"
- },
- {
- "id": "apps_frontend_src_components_shell_tsx",
- "label": "shell.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L1"
- },
- {
- "id": "components_shell_sunicon",
- "label": "SunIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L19"
- },
- {
- "id": "components_shell_moonicon",
- "label": "MoonIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L33"
- },
- {
- "id": "components_shell_globeicon",
- "label": "GlobeIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L39"
- },
- {
- "id": "components_shell_menuicon",
- "label": "MenuIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L47"
- },
- {
- "id": "components_shell_xicon",
- "label": "XIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L55"
- },
- {
- "id": "components_shell_googleicon",
- "label": "GoogleIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L62"
- },
- {
- "id": "components_shell_hideheader",
- "label": "hideHeader()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L78"
- },
- {
- "id": "components_shell_showgooglesignin",
- "label": "showGoogleSignIn()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L88"
- },
- {
- "id": "components_shell_isdemomode",
- "label": "isDemoMode()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L96"
- },
- {
- "id": "components_shell_handleopenauth",
- "label": "handleOpenAuth()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L103"
- },
- {
- "id": "components_shell_submitsignin",
- "label": "submitSignIn()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L114"
- },
- {
- "id": "components_shell_translateautherror",
- "label": "translateAuthError()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L146"
- },
- {
- "id": "components_shell_sendmagiclink",
- "label": "sendMagicLink()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L179"
- },
- {
- "id": "components_shell_signinwithgoogle",
- "label": "signInWithGoogle()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L194"
- },
- {
- "id": "apps_frontend_src_components_widget_builder_tsx",
- "label": "widget-builder.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L1"
- },
- {
- "id": "components_widget_builder_copyicon",
- "label": "CopyIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L39"
- },
- {
- "id": "components_widget_builder_checkicon",
- "label": "CheckIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L46"
- },
- {
- "id": "components_widget_builder_codeicon",
- "label": "CodeIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L52"
- },
- {
- "id": "components_widget_builder_externallinkicon",
- "label": "ExternalLinkIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L59"
- },
- {
- "id": "components_widget_builder_iframeicon",
- "label": "IframeIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L67"
- },
- {
- "id": "components_widget_builder_buttonicon",
- "label": "ButtonIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L75"
- },
- {
- "id": "components_widget_builder_calendaricon",
- "label": "CalendarIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L81"
- },
- {
- "id": "components_widget_builder_modalicon",
- "label": "ModalIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L90"
- },
- {
- "id": "components_widget_builder_floatingicon",
- "label": "FloatingIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L100"
- },
- {
- "id": "components_widget_builder_sunicon",
- "label": "SunIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L108"
- },
- {
- "id": "components_widget_builder_moonicon",
- "label": "MoonIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L122"
- },
- {
- "id": "components_widget_builder_refreshicon",
- "label": "RefreshIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L128"
- },
- {
- "id": "components_widget_builder_lockicon",
- "label": "LockIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L137"
- },
- {
- "id": "components_widget_builder_dragicon",
- "label": "DragIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L144"
- },
- {
- "id": "components_widget_builder_moveicon",
- "label": "MoveIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L155"
- },
- {
- "id": "components_widget_builder_paletteicon",
- "label": "PaletteIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L166"
- },
- {
- "id": "components_widget_builder_mapicon",
- "label": "MapIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L176"
- },
- {
- "id": "components_widget_builder_eyeicon",
- "label": "EyeIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L184"
- },
- {
- "id": "components_widget_builder_json",
- "label": "json()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L199"
- },
- {
- "id": "components_widget_builder_generatedmapelementid",
- "label": "generatedMapElementId()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L203"
- },
- {
- "id": "components_widget_builder_safehexcolor",
- "label": "safeHexColor()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L207"
- },
- {
- "id": "components_widget_builder_resolvemaplocation",
- "label": "resolveMapLocation()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L281"
- },
- {
- "id": "components_widget_builder_generatemapcode",
- "label": "generateMapCode()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L305"
- },
- {
- "id": "components_widget_builder_handledragstart",
- "label": "handleDragStart()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L429"
- },
- {
- "id": "components_widget_builder_handledragover",
- "label": "handleDragOver()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L433"
- },
- {
- "id": "components_widget_builder_handledragend",
- "label": "handleDragEnd()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L445"
- },
- {
- "id": "components_widget_builder_generatecode",
- "label": "generateCode()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L449"
- },
- {
- "id": "components_widget_builder_copytoclipboard",
- "label": "copyToClipboard()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L1076"
- },
- {
- "id": "apps_frontend_src_components_dashboard_icons_tsx",
- "label": "icons.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L1"
- },
- {
- "id": "dashboard_icons_layoutdashboardicon",
- "label": "LayoutDashboardIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L1"
- },
- {
- "id": "dashboard_icons_calendardaysicon",
- "label": "CalendarDaysIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L10"
- },
- {
- "id": "dashboard_icons_creditcardicon",
- "label": "CreditCardIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L20"
- },
- {
- "id": "dashboard_icons_settings2icon",
- "label": "Settings2Icon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L27"
- },
- {
- "id": "dashboard_icons_logouticon",
- "label": "LogOutIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L35"
- },
- {
- "id": "dashboard_icons_menuicon",
- "label": "MenuIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L43"
- },
- {
- "id": "dashboard_icons_xicon",
- "label": "XIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L49"
- },
- {
- "id": "dashboard_icons_trendingupicon",
- "label": "TrendingUpIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L55"
- },
- {
- "id": "dashboard_icons_trendingdownicon",
- "label": "TrendingDownIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L62"
- },
- {
- "id": "dashboard_icons_clockicon",
- "label": "ClockIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L69"
- },
- {
- "id": "dashboard_icons_checkcircleicon",
- "label": "CheckCircleIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L75"
- },
- {
- "id": "dashboard_icons_alertcircleicon",
- "label": "AlertCircleIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L81"
- },
- {
- "id": "dashboard_icons_chevronlefticon",
- "label": "ChevronLeftIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L87"
- },
- {
- "id": "dashboard_icons_chevronrighticon",
- "label": "ChevronRightIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L93"
- },
- {
- "id": "dashboard_icons_sparklesicon",
- "label": "SparklesIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L99"
- },
- {
- "id": "dashboard_icons_bellicon",
- "label": "BellIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L105"
- },
- {
- "id": "dashboard_icons_plusicon",
- "label": "PlusIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L111"
- },
- {
- "id": "dashboard_icons_usersicon",
- "label": "UsersIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L117"
- },
- {
- "id": "dashboard_icons_usercircleicon",
- "label": "UserCircleIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L123"
- },
- {
- "id": "apps_frontend_src_components_dashboard_types_ts",
- "label": "types.ts",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/types.ts",
- "source_location": "L1"
- },
- {
- "id": "dashboard_types_getinitials",
- "label": "getInitials()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/types.ts",
- "source_location": "L14"
- },
- {
- "id": "dashboard_types_getbookingduration",
- "label": "getBookingDuration()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/types.ts",
- "source_location": "L22"
- },
- {
- "id": "apps_frontend_src_components_ui_tooltip_tsx",
- "label": "tooltip.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/tooltip.tsx",
- "source_location": "L1"
- },
- {
- "id": "ui_tooltip_tooltip",
- "label": "Tooltip()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/tooltip.tsx",
- "source_location": "L10"
- },
- {
- "id": "apps_frontend_src_components_ui_input_tsx",
- "label": "input.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/input.tsx",
- "source_location": "L1"
- },
- {
- "id": "ui_input_input",
- "label": "Input()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/input.tsx",
- "source_location": "L9"
- },
- {
- "id": "apps_frontend_src_components_ui_badge_tsx",
- "label": "badge.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/badge.tsx",
- "source_location": "L1"
- },
- {
- "id": "ui_badge_badge",
- "label": "Badge()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/badge.tsx",
- "source_location": "L8"
- },
- {
- "id": "apps_frontend_src_components_ui_select_tsx",
- "label": "select.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/select.tsx",
- "source_location": "L1"
- },
- {
- "id": "ui_select_select",
- "label": "Select()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/select.tsx",
- "source_location": "L17"
- },
- {
- "id": "apps_frontend_src_components_ui_button_tsx",
- "label": "button.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/button.tsx",
- "source_location": "L1"
- },
- {
- "id": "apps_frontend_src_components_ui_textarea_tsx",
- "label": "textarea.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/textarea.tsx",
- "source_location": "L1"
- },
- {
- "id": "ui_textarea_resizeclass",
- "label": "resizeClass()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/textarea.tsx",
- "source_location": "L15"
- },
- {
- "id": "apps_frontend_src_components_ui_index_ts",
- "label": "index.ts",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/index.ts",
- "source_location": "L1"
- },
- {
- "id": "apps_frontend_src_components_ui_card_tsx",
- "label": "card.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L1"
- },
- {
- "id": "ui_card_card",
- "label": "Card()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L8"
- },
- {
- "id": "ui_card_cardheader",
- "label": "CardHeader()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L42"
- },
- {
- "id": "ui_card_cardtitle",
- "label": "CardTitle()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L53"
- },
- {
- "id": "ui_card_carddescription",
- "label": "CardDescription()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L67"
- },
- {
- "id": "ui_card_cardcontent",
- "label": "CardContent()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L78"
- },
- {
- "id": "ui_card_cardfooter",
- "label": "CardFooter()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L89"
- },
- {
- "id": "apps_frontend_src_components_ui_skeleton_tsx",
- "label": "skeleton.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/skeleton.tsx",
- "source_location": "L1"
- },
- {
- "id": "ui_skeleton_skeleton",
- "label": "Skeleton()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/skeleton.tsx",
- "source_location": "L9"
- },
- {
- "id": "ui_skeleton_skeletoncard",
- "label": "SkeletonCard()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/skeleton.tsx",
- "source_location": "L28"
- },
- {
- "id": "ui_skeleton_skeletontext",
- "label": "SkeletonText()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/skeleton.tsx",
- "source_location": "L38"
- },
- {
- "id": "apps_frontend_src_components_ui_avatar_tsx",
- "label": "avatar.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/avatar.tsx",
- "source_location": "L1"
- },
- {
- "id": "ui_avatar_avatar",
- "label": "Avatar()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/avatar.tsx",
- "source_location": "L12"
- },
- {
- "id": "apps_frontend_src_components_ui_tabs_tsx",
- "label": "tabs.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L1"
- },
- {
- "id": "ui_tabs_usetabs",
- "label": "useTabs()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L12"
- },
- {
- "id": "ui_tabs_tabs",
- "label": "Tabs()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L29"
- },
- {
- "id": "ui_tabs_tabslist",
- "label": "TabsList()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L60"
- },
- {
- "id": "ui_tabs_tabstrigger",
- "label": "TabsTrigger()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L89"
- },
- {
- "id": "ui_tabs_tabscontent",
- "label": "TabsContent()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L120"
- },
- {
- "id": "apps_frontend_src_components_ui_dialog_tsx",
- "label": "dialog.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L1"
- },
- {
- "id": "ui_dialog_dialog",
- "label": "Dialog()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L10"
- },
- {
- "id": "ui_dialog_dialogheader",
- "label": "DialogHeader()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L78"
- },
- {
- "id": "ui_dialog_dialogtitle",
- "label": "DialogTitle()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L88"
- },
- {
- "id": "ui_dialog_dialogdescription",
- "label": "DialogDescription()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L104"
- },
- {
- "id": "ui_dialog_dialogcontent",
- "label": "DialogContent()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L120"
- },
- {
- "id": "ui_dialog_dialogfooter",
- "label": "DialogFooter()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L130"
- },
- {
- "id": "ui_dialog_dialogclosebutton",
- "label": "DialogCloseButton()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L151"
- },
- {
- "id": "ui_dialog_usedialog",
- "label": "useDialog()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L185"
- },
- {
- "id": "apps_frontend_src_providers_theme_provider_tsx",
- "label": "theme-provider.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/theme-provider.tsx",
- "source_location": "L1"
- },
- {
- "id": "providers_theme_provider_getinitialtheme",
- "label": "getInitialTheme()",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/theme-provider.tsx",
- "source_location": "L13"
- },
- {
- "id": "providers_theme_provider_getresolvedtheme",
- "label": "getResolvedTheme()",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/theme-provider.tsx",
- "source_location": "L19"
- },
- {
- "id": "providers_theme_provider_usetheme",
- "label": "useTheme()",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/theme-provider.tsx",
- "source_location": "L82"
- },
- {
- "id": "apps_frontend_src_providers_auth_provider_tsx",
- "label": "auth-provider.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L1"
- },
- {
- "id": "providers_auth_provider_sessionfromlocaltoken",
- "label": "sessionFromLocalToken()",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L21"
- },
- {
- "id": "providers_auth_provider_parsejwtpayload",
- "label": "parseJwtPayload()",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L40"
- },
- {
- "id": "providers_auth_provider_authprovider",
- "label": "AuthProvider()",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L69"
- },
- {
- "id": "providers_auth_provider_useauth",
- "label": "useAuth()",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L208"
- },
- {
- "id": "apps_frontend_src_providers_i18n_provider_tsx",
- "label": "i18n-provider.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/i18n-provider.tsx",
- "source_location": "L1"
- },
- {
- "id": "apps_frontend_src_lib_map_ts",
- "label": "map.ts",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L1"
- },
- {
- "id": "lib_map_mapstylebyid",
- "label": "mapStyleById()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L84"
- },
- {
- "id": "lib_map_resolvemaptilestyle",
- "label": "resolveMapTileStyle()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L88"
- },
- {
- "id": "lib_map_validatecoordinates",
- "label": "validateCoordinates()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L102"
- },
- {
- "id": "lib_map_parsecoordinatetext",
- "label": "parseCoordinateText()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L113"
- },
- {
- "id": "lib_map_parsemapyczurl",
- "label": "parseMapyCzUrl()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L133"
- },
- {
- "id": "lib_map_parsegooglemapsurl",
- "label": "parseGoogleMapsUrl()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L159"
- },
- {
- "id": "lib_map_parsemapurl",
- "label": "parseMapUrl()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L217"
- },
- {
- "id": "lib_map_geocodelocation",
- "label": "geocodeLocation()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L228"
- },
- {
- "id": "lib_map_reversegeocode",
- "label": "reverseGeocode()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L282"
- },
- {
- "id": "lib_map_resolvelocationinput",
- "label": "resolveLocationInput()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L320"
- },
- {
- "id": "apps_frontend_src_lib_api_client_ts",
- "label": "api-client.ts",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/api-client.ts",
- "source_location": "L1"
- },
- {
- "id": "apps_frontend_src_lib_types_ts",
- "label": "types.ts",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/types.ts",
- "source_location": "L1"
- },
- {
- "id": "apps_frontend_src_lib_paddle_ts",
- "label": "paddle.ts",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/paddle.ts",
- "source_location": "L1"
- },
- {
- "id": "lib_paddle_paddleconfigured",
- "label": "paddleConfigured()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/paddle.ts",
- "source_location": "L8"
- },
- {
- "id": "lib_paddle_getpaddle",
- "label": "getPaddle()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/paddle.ts",
- "source_location": "L12"
- },
- {
- "id": "packages_shared_types_src_index_ts",
- "label": "index.ts",
- "file_type": "code",
- "source_file": "packages/shared-types/src/index.ts",
- "source_location": "L1"
- },
- {
- "id": "packages_api_client_src_index_ts",
- "label": "index.ts",
- "file_type": "code",
- "source_file": "packages/api-client/src/index.ts",
- "source_location": "L1"
- },
- {
- "id": "packages_api_client_src_generated_types_ts",
- "label": "types.ts",
- "file_type": "code",
- "source_file": "packages/api-client/src/generated/types.ts",
- "source_location": "L1"
- },
- {
- "id": "packages_api_client_scripts_generate_mjs",
- "label": "generate.mjs",
- "file_type": "code",
- "source_file": "packages/api-client/scripts/generate.mjs",
- "source_location": "L1"
- }
- ],
- "edges": [
- {
- "source": "generate_map_tsx",
- "target": "react",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "generate_map.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "generate_map_tsx",
- "target": "react",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "generate_map.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "generate_map_tsx",
- "target": "bookra_generate_map_contactmap",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "generate_map.tsx",
- "source_location": "L100",
- "weight": 1.0
- },
- {
- "source": "map_ts",
- "target": "bookra_map_parsemapyczurl",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "map.ts",
- "source_location": "L24",
- "weight": 1.0
- },
- {
- "source": "map_ts",
- "target": "bookra_map_parsegooglemapsurl",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "map.ts",
- "source_location": "L71",
- "weight": 1.0
- },
- {
- "source": "map_ts",
- "target": "bookra_map_parsemapurl",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "map.ts",
- "source_location": "L149",
- "weight": 1.0
- },
- {
- "source": "map_ts",
- "target": "bookra_map_validatecoordinates",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "map.ts",
- "source_location": "L178",
- "weight": 1.0
- },
- {
- "source": "map_ts",
- "target": "bookra_map_reversegeocode",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "map.ts",
- "source_location": "L193",
- "weight": 1.0
- },
- {
- "source": "bookra_map_parsemapurl",
- "target": "bookra_map_parsemapyczurl",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "map.ts",
- "source_location": "L161",
- "weight": 1.0
- },
- {
- "source": "bookra_map_parsemapurl",
- "target": "bookra_map_parsegooglemapsurl",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "map.ts",
- "source_location": "L167",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_email",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_handlers",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_log",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_net_http",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_os",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_os_signal",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_syscall",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L15",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_github_com_gin_contrib_cors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L17",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_github_com_gin_gonic_gin",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L18",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_github_com_jackc_pgx_v5_stdlib",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L19",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_github_com_joho_godotenv",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L20",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_github_com_pressly_goose_v3",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L21",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "api_main_main",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L24",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "api_main_runmigrations",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L105",
- "weight": 1.0
- },
- {
- "source": "api_main_main",
- "target": "api_main_runmigrations",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L42",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_emailtemplate",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L27",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_magiclinkemail",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L33",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_welcomeemail",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L40",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_bookingconfirmationemail",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L47",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_passwordresetemail",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L54",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_magiclinkemailen",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L61",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_magiclinkemailcs",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L157",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_welcomeemailen",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L253",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_welcomeemailcs",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L335",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_bookingconfirmationen",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L417",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_bookingconfirmationcs",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L507",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_passwordreseten",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L597",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_passwordresetcs",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L671",
- "weight": 1.0
- },
- {
- "source": "email_templates_magiclinkemail",
- "target": "email_templates_magiclinkemailcs",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L35",
- "weight": 1.0
- },
- {
- "source": "email_templates_magiclinkemail",
- "target": "email_templates_magiclinkemailen",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L37",
- "weight": 1.0
- },
- {
- "source": "email_templates_welcomeemail",
- "target": "email_templates_welcomeemailcs",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L42",
- "weight": 1.0
- },
- {
- "source": "email_templates_welcomeemail",
- "target": "email_templates_welcomeemailen",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L44",
- "weight": 1.0
- },
- {
- "source": "email_templates_bookingconfirmationemail",
- "target": "email_templates_bookingconfirmationcs",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L49",
- "weight": 1.0
- },
- {
- "source": "email_templates_bookingconfirmationemail",
- "target": "email_templates_bookingconfirmationen",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L51",
- "weight": 1.0
- },
- {
- "source": "email_templates_passwordresetemail",
- "target": "email_templates_passwordresetcs",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L56",
- "weight": 1.0
- },
- {
- "source": "email_templates_passwordresetemail",
- "target": "email_templates_passwordreseten",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L58",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_service_go",
- "target": "go_pkg_crypto_tls",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_service_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_service_go",
- "target": "go_pkg_net_smtp",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_service_go",
- "target": "go_pkg_github_com_jordan_wright_email",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_service_go",
- "target": "email_config",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_service_go",
- "target": "email_service",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L19",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_service_go",
- "target": "email_service_new",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L23",
- "weight": 1.0
- },
- {
- "source": "email_service",
- "target": "email_service_sendmagiclink",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L28",
- "weight": 1.0
- },
- {
- "source": "email_service",
- "target": "email_service_sendwelcomeemail",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L34",
- "weight": 1.0
- },
- {
- "source": "email_service",
- "target": "email_service_sendbookingconfirmation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L40",
- "weight": 1.0
- },
- {
- "source": "email_service",
- "target": "email_service_sendpasswordreset",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L46",
- "weight": 1.0
- },
- {
- "source": "email_service",
- "target": "email_service_sendtemplate",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L52",
- "weight": 1.0
- },
- {
- "source": "email_service",
- "target": "email_service_send",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L64",
- "weight": 1.0
- },
- {
- "source": "email_service_sendmagiclink",
- "target": "email_service_sendtemplate",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L30",
- "weight": 1.0
- },
- {
- "source": "email_service_sendwelcomeemail",
- "target": "email_service_sendtemplate",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L36",
- "weight": 1.0
- },
- {
- "source": "email_service_sendbookingconfirmation",
- "target": "email_service_sendtemplate",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L42",
- "weight": 1.0
- },
- {
- "source": "email_service_sendpasswordreset",
- "target": "email_service_sendtemplate",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L48",
- "weight": 1.0
- },
- {
- "source": "email_service_sendtemplate",
- "target": "email_service_send",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L60",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_db_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_db_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_db_go",
- "target": "go_pkg_github_com_jackc_pgx_v5",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_db_go",
- "target": "go_pkg_github_com_jackc_pgx_v5_pgxpool",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_db_go",
- "target": "db_db",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_db_go",
- "target": "db_db_new",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L15",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_close",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L33",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_pool",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L37",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_queryrow",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L41",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_query",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L45",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_exec",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L49",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_db_go",
- "target": "db_stats",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L55",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_getstats",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L70",
- "weight": 1.0
- },
- {
- "source": "db_db_getstats",
- "target": "db_db_queryrow",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L74",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_repository_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_repository_go",
- "target": "go_pkg_encoding_json",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_repository_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_repository_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_repository_go",
- "target": "go_pkg_github_com_google_uuid",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_repository_go",
- "target": "go_pkg_github_com_jackc_pgx_v5",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_repository_go",
- "target": "db_user",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_repository_go",
- "target": "db_magiclink",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L26",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_getuserbyemail",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L35",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_getuserbyid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L63",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_getuserbyproviderid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L91",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_createuser",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L118",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_updateuser",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L138",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_updatelastlogin",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L152",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_createmagiclink",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L159",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_getmagiclink",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L167",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_markmagiclinkused",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L187",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_putkv",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L192",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_getkv",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L207",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_config_config_test_go",
- "target": "go_pkg_os",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_config_config_test_go",
- "target": "go_pkg_testing",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_config_config_test_go",
- "target": "config_config_test_teststripereadinesshelpers",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_config_config_test_go",
- "target": "config_config_test_teststripecheckoutreadyrequiressecretandprice",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L30",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_config_config_test_go",
- "target": "config_config_test_testloaddefaultsauthserviceportto8081",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L47",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_config_config_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_config_config_go",
- "target": "go_pkg_os",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_config_config_go",
- "target": "go_pkg_strconv",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_config_config_go",
- "target": "go_pkg_strings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_config_config_go",
- "target": "config_config",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_config_config_go",
- "target": "config_config_load",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L33",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_config_config_go",
- "target": "config_config_getenv",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L80",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_config_config_go",
- "target": "config_config_getenvallowempty",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L87",
- "weight": 1.0
- },
- {
- "source": "config_config",
- "target": "config_config_stripesecretconfigured",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L94",
- "weight": 1.0
- },
- {
- "source": "config_config",
- "target": "config_config_stripewebhookconfigured",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L98",
- "weight": 1.0
- },
- {
- "source": "config_config",
- "target": "config_config_stripehasanypriceconfigured",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L102",
- "weight": 1.0
- },
- {
- "source": "config_config",
- "target": "config_config_stripecheckoutready",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L111",
- "weight": 1.0
- },
- {
- "source": "config_config_load",
- "target": "config_config_getenv",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L34",
- "weight": 1.0
- },
- {
- "source": "config_config_load",
- "target": "config_config_getenvallowempty",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L53",
- "weight": 1.0
- },
- {
- "source": "config_config_stripecheckoutready",
- "target": "config_config_stripesecretconfigured",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L112",
- "weight": 1.0
- },
- {
- "source": "config_config_stripecheckoutready",
- "target": "config_config_stripehasanypriceconfigured",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L112",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_oauth_google_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_oauth_google_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_oauth_google_go",
- "target": "go_pkg_encoding_json",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_oauth_google_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_oauth_google_go",
- "target": "go_pkg_io",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_oauth_google_go",
- "target": "go_pkg_net_http",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_oauth_google_go",
- "target": "go_pkg_golang_org_x_oauth2",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_oauth_google_go",
- "target": "go_pkg_golang_org_x_oauth2_google",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_oauth_google_go",
- "target": "oauth_googleuser",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L15",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_oauth_google_go",
- "target": "oauth_googleprovider",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L23",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_oauth_google_go",
- "target": "oauth_google_newgoogleprovider",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L27",
- "weight": 1.0
- },
- {
- "source": "oauth_googleprovider",
- "target": "oauth_googleprovider_enabled",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L52",
- "weight": 1.0
- },
- {
- "source": "oauth_googleprovider",
- "target": "oauth_googleprovider_getauthurl",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L56",
- "weight": 1.0
- },
- {
- "source": "oauth_googleprovider",
- "target": "oauth_googleprovider_exchangecode",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L60",
- "weight": 1.0
- },
- {
- "source": "oauth_googleprovider",
- "target": "oauth_googleprovider_parseuser",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L86",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_auth",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_billing",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_email",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_oauth",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_crypto_rand",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_encoding_base64",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_io",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_log",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L15",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_net_http",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L16",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_net_url",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L17",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_strings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L18",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L19",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_github_com_gin_gonic_gin",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L21",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_handler",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L24",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_loginrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L33",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_verifyrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L38",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_refreshrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L42",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_passwordregisterrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L46",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_passwordloginrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L52",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_checkoutrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L57",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_handlers_new",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L62",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_registerroutes",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L77",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_sendmagiclink",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L109",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_handlers_detectlocale",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L132",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_verifymagiclink",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L141",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_registerwithpassword",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L157",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_loginwithpassword",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L177",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_refreshtoken",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L193",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_getme",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L221",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_logout",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L237",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_listproviders",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L241",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_googleauth",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L260",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_googlecallback",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L273",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_getsubscription",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L314",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_createcheckoutsession",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L329",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_refreshsubscription",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L361",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_listplans",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L381",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_stripewebhook",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L414",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_requireauth",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L435",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_verifybearertoken",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L462",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_claimsfromcontext",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L472",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_handlers_generatestate",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L488",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_handlers_oauthcookiesecure",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L496",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_handlers_timeoutmiddleware",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L506",
- "weight": 1.0
- },
- {
- "source": "handlers_handler_registerroutes",
- "target": "handlers_handler_requireauth",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L86",
- "weight": 1.0
- },
- {
- "source": "handlers_handler_sendmagiclink",
- "target": "handlers_handlers_detectlocale",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L119",
- "weight": 1.0
- },
- {
- "source": "handlers_handler_googleauth",
- "target": "handlers_handlers_generatestate",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L266",
- "weight": 1.0
- },
- {
- "source": "handlers_handler_googleauth",
- "target": "handlers_handlers_oauthcookiesecure",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L269",
- "weight": 1.0
- },
- {
- "source": "handlers_handler_googlecallback",
- "target": "handlers_handlers_oauthcookiesecure",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L282",
- "weight": 1.0
- },
- {
- "source": "handlers_handler_getsubscription",
- "target": "handlers_handler_claimsfromcontext",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L315",
- "weight": 1.0
- },
- {
- "source": "handlers_handler_createcheckoutsession",
- "target": "handlers_handler_claimsfromcontext",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L330",
- "weight": 1.0
- },
- {
- "source": "handlers_handler_refreshsubscription",
- "target": "handlers_handler_claimsfromcontext",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L362",
- "weight": 1.0
- },
- {
- "source": "handlers_handler_requireauth",
- "target": "handlers_handler_verifybearertoken",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L450",
- "weight": 1.0
- },
- {
- "source": "handlers_handler_verifybearertoken",
- "target": "handlers_handlers_new",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L469",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_admin_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_admin_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_admin_go",
- "target": "go_pkg_net_http",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_admin_go",
- "target": "go_pkg_strings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_admin_go",
- "target": "go_pkg_github_com_gin_gonic_gin",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_admin_go",
- "target": "handlers_admindashboard",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_admin_go",
- "target": "handlers_admin_newadmindashboard",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L18",
- "weight": 1.0
- },
- {
- "source": "handlers_admindashboard",
- "target": "handlers_admindashboard_registerroutes",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L23",
- "weight": 1.0
- },
- {
- "source": "handlers_admindashboard",
- "target": "handlers_admindashboard_getconfig",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L34",
- "weight": 1.0
- },
- {
- "source": "handlers_admindashboard",
- "target": "handlers_admindashboard_getprices",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L54",
- "weight": 1.0
- },
- {
- "source": "handlers_admindashboard",
- "target": "handlers_admindashboard_getstats",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L108",
- "weight": 1.0
- },
- {
- "source": "handlers_admindashboard",
- "target": "handlers_admindashboard_renderdashboard",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L124",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_encoding_json",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_slices",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_strings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_github_com_stripe_stripe_go_v83",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L15",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_github_com_stripe_stripe_go_v83_checkout_session",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L16",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_github_com_stripe_stripe_go_v83_customer",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L17",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_github_com_stripe_stripe_go_v83_subscription",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L18",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_github_com_stripe_stripe_go_v83_webhook",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L19",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_service",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L43",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_checkoutsession",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L48",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_subscriptionsnapshot",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L52",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_paymentmethod",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L68",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_useridentity",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L73",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_usercustomermapping",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L79",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_service_newservice",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L84",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_getsubscription",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L88",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_createcheckoutsession",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L112",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_refresh",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L161",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_handlewebhook",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L175",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_ensurecustomer",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L203",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_syncstripedatatokv",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L234",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_storecustomermapping",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L290",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_getcustomermapping",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L298",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_getcustomersnapshot",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L310",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_nonesnapshot",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L319",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_priceforplan",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L327",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_defaultplancode",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L360",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_plancodeforprice",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L372",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_hasconfiguredprices",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L381",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_checkoutavailableforplan",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L385",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_service_normalizeplancode",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L396",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_service_normalizecurrency",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L407",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_service_usercustomerkey",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L416",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_service_customersnapshotkey",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L420",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_service_unixptr",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L424",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_service_subscriptionrank",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L432",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_service_extractcustomerid",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L453",
- "weight": 1.0
- },
- {
- "source": "billing_service_getsubscription",
- "target": "billing_service_getcustomermapping",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L89",
- "weight": 1.0
- },
- {
- "source": "billing_service_getsubscription",
- "target": "billing_service_nonesnapshot",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L94",
- "weight": 1.0
- },
- {
- "source": "billing_service_getsubscription",
- "target": "billing_service_getcustomersnapshot",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L97",
- "weight": 1.0
- },
- {
- "source": "billing_service_getsubscription",
- "target": "billing_service_checkoutavailableforplan",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L107",
- "weight": 1.0
- },
- {
- "source": "billing_service_createcheckoutsession",
- "target": "billing_service_priceforplan",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L113",
- "weight": 1.0
- },
- {
- "source": "billing_service_createcheckoutsession",
- "target": "billing_service_ensurecustomer",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L121",
- "weight": 1.0
- },
- {
- "source": "billing_service_refresh",
- "target": "billing_service_getcustomermapping",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L162",
- "weight": 1.0
- },
- {
- "source": "billing_service_refresh",
- "target": "billing_service_nonesnapshot",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L167",
- "weight": 1.0
- },
- {
- "source": "billing_service_refresh",
- "target": "billing_service_syncstripedatatokv",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L172",
- "weight": 1.0
- },
- {
- "source": "billing_service_handlewebhook",
- "target": "billing_service_extractcustomerid",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L194",
- "weight": 1.0
- },
- {
- "source": "billing_service_handlewebhook",
- "target": "billing_service_syncstripedatatokv",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L199",
- "weight": 1.0
- },
- {
- "source": "billing_service_ensurecustomer",
- "target": "billing_service_getcustomermapping",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L204",
- "weight": 1.0
- },
- {
- "source": "billing_service_ensurecustomer",
- "target": "billing_service_storecustomermapping",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L228",
- "weight": 1.0
- },
- {
- "source": "billing_service_syncstripedatatokv",
- "target": "billing_service_subscriptionrank",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L245",
- "weight": 1.0
- },
- {
- "source": "billing_service_syncstripedatatokv",
- "target": "billing_service_plancodeforprice",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L270",
- "weight": 1.0
- },
- {
- "source": "billing_service_syncstripedatatokv",
- "target": "billing_service_normalizecurrency",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L271",
- "weight": 1.0
- },
- {
- "source": "billing_service_syncstripedatatokv",
- "target": "billing_service_unixptr",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L273",
- "weight": 1.0
- },
- {
- "source": "billing_service_syncstripedatatokv",
- "target": "billing_service_customersnapshotkey",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L284",
- "weight": 1.0
- },
- {
- "source": "billing_service_storecustomermapping",
- "target": "billing_service_usercustomerkey",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L295",
- "weight": 1.0
- },
- {
- "source": "billing_service_getcustomermapping",
- "target": "billing_service_usercustomerkey",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L300",
- "weight": 1.0
- },
- {
- "source": "billing_service_getcustomersnapshot",
- "target": "billing_service_customersnapshotkey",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L312",
- "weight": 1.0
- },
- {
- "source": "billing_service_priceforplan",
- "target": "billing_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L328",
- "weight": 1.0
- },
- {
- "source": "billing_service_priceforplan",
- "target": "billing_service_defaultplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L330",
- "weight": 1.0
- },
- {
- "source": "billing_service_priceforplan",
- "target": "billing_service_normalizecurrency",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L335",
- "weight": 1.0
- },
- {
- "source": "billing_service_defaultplancode",
- "target": "billing_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L363",
- "weight": 1.0
- },
- {
- "source": "billing_service_plancodeforprice",
- "target": "billing_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L375",
- "weight": 1.0
- },
- {
- "source": "billing_service_hasconfiguredprices",
- "target": "billing_service_defaultplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L382",
- "weight": 1.0
- },
- {
- "source": "billing_service_checkoutavailableforplan",
- "target": "billing_service_hasconfiguredprices",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L390",
- "weight": 1.0
- },
- {
- "source": "billing_service_checkoutavailableforplan",
- "target": "billing_service_priceforplan",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L392",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_test_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_test_go",
- "target": "go_pkg_testing",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_test_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_test_go",
- "target": "billing_service_test_testpriceforplanusesconfiguredplancodesonly",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_test_go",
- "target": "billing_service_test_testkvkeyshape",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L40",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_test_go",
- "target": "billing_service_test_testcheckoutavailableforplanrequiressecret",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L49",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_test_go",
- "target": "billing_service_test_testcheckoutavailableforplanrequiresconfiguredplan",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L61",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "go_pkg_crypto_rand",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "go_pkg_encoding_base64",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_email",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "go_pkg_github_com_golang_jwt_jwt_v5",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "go_pkg_github_com_google_uuid",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "go_pkg_golang_org_x_crypto_bcrypt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L15",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "auth_service",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L23",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "auth_tokenpair",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L30",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "auth_claims",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L37",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "auth_service_newservice",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L46",
- "weight": 1.0
- },
- {
- "source": "auth_service",
- "target": "auth_service_generatemagiclink",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L55",
- "weight": 1.0
- },
- {
- "source": "auth_service",
- "target": "auth_service_verifymagiclink",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L93",
- "weight": 1.0
- },
- {
- "source": "auth_service",
- "target": "auth_service_oauthloginorcreate",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L127",
- "weight": 1.0
- },
- {
- "source": "auth_service",
- "target": "auth_service_registerwithpassword",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L170",
- "weight": 1.0
- },
- {
- "source": "auth_service",
- "target": "auth_service_loginwithpassword",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L201",
- "weight": 1.0
- },
- {
- "source": "auth_service",
- "target": "auth_service_generatetokens",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L221",
- "weight": 1.0
- },
- {
- "source": "auth_service",
- "target": "auth_service_generatetokensat",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L226",
- "weight": 1.0
- },
- {
- "source": "auth_service",
- "target": "auth_service_verifytoken",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L250",
- "weight": 1.0
- },
- {
- "source": "auth_service",
- "target": "auth_service_verifyrefreshtoken",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L254",
- "weight": 1.0
- },
- {
- "source": "auth_service",
- "target": "auth_service_refreshtokens",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L258",
- "weight": 1.0
- },
- {
- "source": "auth_service",
- "target": "auth_service_verifytokenoftype",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L286",
- "weight": 1.0
- },
- {
- "source": "auth_service",
- "target": "auth_service_signtoken",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L308",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "auth_service_generaterandomtoken",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L329",
- "weight": 1.0
- },
- {
- "source": "auth_service_generatemagiclink",
- "target": "auth_service_generaterandomtoken",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L72",
- "weight": 1.0
- },
- {
- "source": "auth_service_verifymagiclink",
- "target": "auth_service_generatetokens",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L124",
- "weight": 1.0
- },
- {
- "source": "auth_service_oauthloginorcreate",
- "target": "auth_service_generatetokens",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L167",
- "weight": 1.0
- },
- {
- "source": "auth_service_registerwithpassword",
- "target": "auth_service_generatetokens",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L198",
- "weight": 1.0
- },
- {
- "source": "auth_service_loginwithpassword",
- "target": "auth_service_generatetokens",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L218",
- "weight": 1.0
- },
- {
- "source": "auth_service_generatetokens",
- "target": "auth_service_generatetokensat",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L223",
- "weight": 1.0
- },
- {
- "source": "auth_service_generatetokensat",
- "target": "auth_service_signtoken",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L232",
- "weight": 1.0
- },
- {
- "source": "auth_service_verifytoken",
- "target": "auth_service_verifytokenoftype",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L251",
- "weight": 1.0
- },
- {
- "source": "auth_service_verifyrefreshtoken",
- "target": "auth_service_verifytokenoftype",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L255",
- "weight": 1.0
- },
- {
- "source": "auth_service_refreshtokens",
- "target": "auth_service_verifyrefreshtoken",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L259",
- "weight": 1.0
- },
- {
- "source": "auth_service_refreshtokens",
- "target": "auth_service_generatetokens",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L283",
- "weight": 1.0
- },
- {
- "source": "auth_service_signtoken",
- "target": "auth_service_generaterandomtoken",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L319",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_neon_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_neon_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_neon_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_neon_go",
- "target": "go_pkg_net_url",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_neon_go",
- "target": "go_pkg_strings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_neon_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_neon_go",
- "target": "go_pkg_github_com_micahparks_keyfunc_v3",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_neon_go",
- "target": "go_pkg_github_com_golang_jwt_jwt_v5",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_neon_go",
- "target": "auth_neonverifier",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L15",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_neon_go",
- "target": "auth_neon_newneonverifier",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L22",
- "weight": 1.0
- },
- {
- "source": "auth_neonverifier",
- "target": "auth_neonverifier_enabled",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L42",
- "weight": 1.0
- },
- {
- "source": "auth_neonverifier",
- "target": "auth_neonverifier_close",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L46",
- "weight": 1.0
- },
- {
- "source": "auth_neonverifier",
- "target": "auth_neonverifier_verify",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L52",
- "weight": 1.0
- },
- {
- "source": "auth_neonverifier_verify",
- "target": "auth_neonverifier_enabled",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L53",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_test_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_test_go",
- "target": "go_pkg_testing",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_test_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_test_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_test_go",
- "target": "go_pkg_github_com_google_uuid",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_test_go",
- "target": "auth_service_test_testgeneratetokensproducesverifiableaccessandrefreshtokens",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_test_go",
- "target": "auth_service_test_testrefreshtokensreturnsrotatedpair",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L51",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_test_go",
- "target": "auth_service_test_testrefreshtokensrejectsinvalidtoken",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L82",
- "weight": 1.0
- },
- {
- "source": "apps_backend_cmd_api_main_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_cmd_api_main_go",
- "target": "go_pkg_log",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_cmd_api_main_go",
- "target": "go_pkg_net_http",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_cmd_api_main_go",
- "target": "go_pkg_os_signal",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_cmd_api_main_go",
- "target": "go_pkg_syscall",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_cmd_api_main_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_backend_cmd_api_main_go",
- "target": "go_pkg_bookra_apps_backend_internal_api",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_backend_cmd_api_main_go",
- "target": "go_pkg_bookra_apps_backend_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_backend_cmd_api_main_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_backend_cmd_api_main_go",
- "target": "api_main_main",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L16",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_catalog_service_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_catalog_service_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_catalog_service_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_catalog_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_catalog_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_domain",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_catalog_service_go",
- "target": "catalog_service",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L22",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_catalog_service_go",
- "target": "catalog_service_newservice",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L26",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_listlocations",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L34",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_createlocation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L60",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_updatelocation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L88",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_deletelocation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L124",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_listblockeddays",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L145",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_createblockedday",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L171",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_updateblockedday",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L207",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_deleteblockedday",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L254",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_listcustomers",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L284",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_createcustomer",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L319",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_updatecustomer",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L356",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_deletecustomer",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L410",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_listworkinghours",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L431",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_updateworkinghours",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L454",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_httpx_middleware_go",
- "target": "go_pkg_net_http",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_httpx_middleware_go",
- "target": "go_pkg_sync",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_httpx_middleware_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_httpx_middleware_go",
- "target": "go_pkg_github_com_gin_gonic_gin",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_httpx_middleware_go",
- "target": "go_pkg_golang_org_x_time_rate",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_httpx_middleware_go",
- "target": "httpx_middleware_securityheaders",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_httpx_middleware_go",
- "target": "httpx_visitor",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L22",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_httpx_middleware_go",
- "target": "httpx_ratelimiter",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L27",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_httpx_middleware_go",
- "target": "httpx_middleware_newratelimiter",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L34",
- "weight": 1.0
- },
- {
- "source": "httpx_ratelimiter",
- "target": "httpx_ratelimiter_middleware",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L42",
- "weight": 1.0
- },
- {
- "source": "httpx_ratelimiter",
- "target": "httpx_ratelimiter_getvisitor",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L59",
- "weight": 1.0
- },
- {
- "source": "httpx_ratelimiter",
- "target": "httpx_ratelimiter_cleanuploop",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L77",
- "weight": 1.0
- },
- {
- "source": "httpx_ratelimiter_middleware",
- "target": "httpx_ratelimiter_cleanuploop",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L43",
- "weight": 1.0
- },
- {
- "source": "httpx_ratelimiter_middleware",
- "target": "httpx_ratelimiter_getvisitor",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L50",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "go_pkg_encoding_json",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "go_pkg_sort",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "go_pkg_strings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "go_pkg_github_com_google_uuid",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "go_pkg_github_com_jackc_pgx_v5",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "go_pkg_github_com_jackc_pgx_v5_pgxpool",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_repository",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L16",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_tenantrecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L74",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_tenantmembershiprecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L88",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_createtenantforuserparams",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L94",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_brandprofilerecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L115",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_availabilityblockrecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L124",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_teaminviterecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L131",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_servicerecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L136",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_availabilityrulerecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L146",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_classsessionrecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L155",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_bookingrecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L166",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_createbookingparams",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L181",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_createdbooking",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L197",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_waitlistentryparams",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L203",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_dashboardmetrics",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L211",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_reminderjobparams",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L217",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_reminderjobrecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L224",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_notificationdeliverylogparams",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L240",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_billingsnapshotrecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L251",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_locationrecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L269",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_createlocationparams",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L277",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_updatelocationparams",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L283",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_blockeddayrecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L289",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_createblockeddayparams",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L300",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_updateblockeddayparams",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L309",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_customerrecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L317",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_createcustomerparams",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L328",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_updatecustomerparams",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L337",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_workinghoursrecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L346",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_updateworkinghoursparams",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L354",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_pgrepository",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L360",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_repository_newrepository",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L364",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_gettenantbyslug",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L374",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_gettenantbyid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L399",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_gettenantbybillingcustomerid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L424",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_ensureuseridentity",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L449",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_createtenantforuser",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L461",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_getbrandprofile",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L603",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_gettenantmembershipbyuserid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L620",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_listservicesbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L652",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_listavailabilityrulesbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L683",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_listclasssessionsbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L713",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_listbookingsbytenantbetween",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L747",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_createbooking",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L784",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_appendwaitlistentry",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L812",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_createreminderjob",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L820",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_listduereminderjobs",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L828",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_markreminderjobdispatched",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L870",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_createnotificationdeliverylog",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L879",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_getdashboardmetrics",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L891",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_getsubscriptionsnapshot",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L914",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_upsertsubscriptionsnapshot",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L941",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_updatetenantbillingcustomerid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L969",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_updatetenantbillingstate",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L978",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_recordbillingevent",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L987",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_listlocationsbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1003",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_getlocationbyid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1026",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_createlocation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1036",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_updatelocation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1046",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_deletelocation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1059",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_listblockeddaysbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1068",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_createblockedday",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1091",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_updateblockedday",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1101",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_deleteblockedday",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1115",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_listcustomersbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1124",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_getcustomerbyid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1148",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_getcustomerbyemail",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1158",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_createcustomer",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1168",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_updatecustomer",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1178",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_deletecustomer",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1193",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_getcustomerbookingscount",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1198",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_getcustomerlastbooking",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1207",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_getbookingbyreference",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1220",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_updatebookingstatus",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1232",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_reschedulebooking",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1239",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_listworkinghoursbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1250",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_updateworkinghours",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1273",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_memoryrepository",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1283",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_repository_newmemoryrepository",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1302",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_gettenantbyslug",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1411",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_gettenantbyid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1418",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_gettenantbybillingcustomerid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1425",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_ensureuseridentity",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1432",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_createtenantforuser",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1442",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_gettenantmembershipbyuserid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1503",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_getbrandprofile",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1513",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_listservicesbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1523",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_listavailabilityrulesbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1530",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_listclasssessionsbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1537",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_listbookingsbytenantbetween",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1555",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_createbooking",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1569",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_appendwaitlistentry",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1592",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_createreminderjob",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1597",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_listduereminderjobs",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1629",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_markreminderjobdispatched",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1643",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_createnotificationdeliverylog",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1653",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_getdashboardmetrics",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1658",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_getsubscriptionsnapshot",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1683",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_upsertsubscriptionsnapshot",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1690",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_updatetenantbillingcustomerid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1695",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_updatetenantbillingstate",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1708",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_recordbillingevent",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1725",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_listlocationsbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1744",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_getlocationbyid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1751",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_createlocation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1760",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_updatelocation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1772",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_deletelocation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1787",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_listblockeddaysbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1801",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_createblockedday",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1814",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_updateblockedday",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1829",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_deleteblockedday",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1850",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_listcustomersbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1864",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_getcustomerbyid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1879",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_getcustomerbyemail",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1888",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_createcustomer",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1897",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_updatecustomer",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1912",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_deletecustomer",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1936",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_getcustomerbookingscount",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1946",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_getcustomerlastbooking",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1958",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_getbookingbyreference",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1984",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_updatebookingstatus",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1993",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_reschedulebooking",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2003",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_listworkinghoursbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2018",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_updateworkinghours",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2025",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_repository_reference",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2043",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_repository_stringptr",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2047",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_repository_maxint",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2051",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_repository_firstnonempty",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2058",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_repository_defaultavailabilityblocks",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2067",
- "weight": 1.0
- },
- {
- "source": "db_repository_newrepository",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L366",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository_createtenantforuser",
- "target": "db_repository_maxint",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L540",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository_createtenantforuser",
- "target": "db_repository_defaultavailabilityblocks",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L561",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository_upsertsubscriptionsnapshot",
- "target": "db_repository_firstnonempty",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L963",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository_recordbillingevent",
- "target": "db_repository_firstnonempty",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L992",
- "weight": 1.0
- },
- {
- "source": "db_repository_newmemoryrepository",
- "target": "db_repository_stringptr",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1322",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository_createtenantforuser",
- "target": "db_repository_firstnonempty",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1461",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository_createtenantforuser",
- "target": "db_repository_maxint",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1476",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository_createtenantforuser",
- "target": "db_repository_defaultavailabilityblocks",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1483",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository_recordbillingevent",
- "target": "db_repository_firstnonempty",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1726",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_pool_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_pool_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_pool_go",
- "target": "go_pkg_bookra_apps_backend_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_pool_go",
- "target": "go_pkg_github_com_jackc_pgx_v5_pgxpool",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_pool_go",
- "target": "db_pools",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_pool_go",
- "target": "db_pool_newpools",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L17",
- "weight": 1.0
- },
- {
- "source": "db_pools",
- "target": "db_pools_close",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L39",
- "weight": 1.0
- },
- {
- "source": "db_pools",
- "target": "db_pools_databaseconfigured",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L48",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_pool_go",
- "target": "db_pool_connect",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L52",
- "weight": 1.0
- },
- {
- "source": "db_pool_newpools",
- "target": "db_pool_connect",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L21",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_principal",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_dashboardkpi",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_upcomingbooking",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L18",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_widgetsnippet",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L28",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_trackingstatus",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L33",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_dashboardsummary",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L40",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_brandprofile",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L54",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_tenantbootstrap",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L61",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_teaminviterequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L74",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_availabilityblockrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L79",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_bookingdefaultsrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L86",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_onboardtenantrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L94",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_timeslot",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L107",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_publicavailability",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L119",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_createbookingrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L126",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_createbookingresponse",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L140",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_planentitlements",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L146",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_plandisplayprice",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L155",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_subscriptionsnapshot",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L161",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_checkoutsessionrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L184",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_checkoutlaunchresponse",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L189",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_portalsessionresponse",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L198",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_dispatchreminderjobsrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L202",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_dispatchreminderjobsresponse",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L206",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_location",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L216",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_createlocationrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L226",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_updatelocationrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L232",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_blockedday",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L242",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_createblockeddayrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L252",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_updateblockeddayrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L259",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_customer",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L268",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_createcustomerrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L281",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_updatecustomerrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L289",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_customerbookingview",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L301",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_reschedulebookingrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L314",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_cancelbookingrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L320",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_workinghours",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L328",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_updateworkinghoursrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L335",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_emailtemplate",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L345",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_sendemailrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L355",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_emailnotification",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L362",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_test_go",
- "target": "go_pkg_testing",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config_test.go",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_test_go",
- "target": "config_config_test_testpaddlecheckoutconfigured",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config_test.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_test_go",
- "target": "config_config_test_testpaddlecheckoutconfiguredrequireswebhook",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config_test.go",
- "source_location": "L21",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_go",
- "target": "go_pkg_os",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_go",
- "target": "go_pkg_strings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_go",
- "target": "config_config",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_go",
- "target": "config_config_load",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L34",
- "weight": 1.0
- },
- {
- "source": "config_config",
- "target": "config_config_validateruntimerequirements",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L69",
- "weight": 1.0
- },
- {
- "source": "config_config",
- "target": "config_config_paddleconfigured",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L106",
- "weight": 1.0
- },
- {
- "source": "config_config",
- "target": "config_config_paddlewebhookconfigured",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L110",
- "weight": 1.0
- },
- {
- "source": "config_config",
- "target": "config_config_paddlecheckoutconfigured",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L114",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_go",
- "target": "config_config_paddlepricematrixfromenv",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L119",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_go",
- "target": "config_config_normalizepaddleenvironment",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L133",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_go",
- "target": "config_config_normalizeplancode",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L142",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_go",
- "target": "config_config_valueordefault",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L153",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_go",
- "target": "config_config_boolfromenv",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L160",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_go",
- "target": "config_config_uniquestrings",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L169",
- "weight": 1.0
- },
- {
- "source": "config_config_load",
- "target": "config_config_valueordefault",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L36",
- "weight": 1.0
- },
- {
- "source": "config_config_load",
- "target": "config_config_normalizepaddleenvironment",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L50",
- "weight": 1.0
- },
- {
- "source": "config_config_load",
- "target": "config_config_paddlepricematrixfromenv",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L53",
- "weight": 1.0
- },
- {
- "source": "config_config_load",
- "target": "config_config_boolfromenv",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L56",
- "weight": 1.0
- },
- {
- "source": "config_config_load",
- "target": "config_config_validateruntimerequirements",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L62",
- "weight": 1.0
- },
- {
- "source": "config_config_validateruntimerequirements",
- "target": "config_config_uniquestrings",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L101",
- "weight": 1.0
- },
- {
- "source": "config_config_paddlecheckoutconfigured",
- "target": "config_config_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L115",
- "weight": 1.0
- },
- {
- "source": "config_config_paddlecheckoutconfigured",
- "target": "config_config_paddleconfigured",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L116",
- "weight": 1.0
- },
- {
- "source": "config_config_paddlecheckoutconfigured",
- "target": "config_config_paddlewebhookconfigured",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L116",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "go_pkg_net",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "go_pkg_net_smtp",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "go_pkg_strings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_domain",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_deliveryreceipt",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L19",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_emailmessage",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L24",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_emailprovider",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L32",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_service",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L36",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_service_newservice",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L43",
- "weight": 1.0
- },
- {
- "source": "notifications_service",
- "target": "notifications_service_dispatchdue",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L57",
- "weight": 1.0
- },
- {
- "source": "notifications_service",
- "target": "notifications_service_sendbookingconfirmation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L124",
- "weight": 1.0
- },
- {
- "source": "notifications_service",
- "target": "notifications_service_sendbookingreschedule",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L135",
- "weight": 1.0
- },
- {
- "source": "notifications_service",
- "target": "notifications_service_sendbookingcancellation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L146",
- "weight": 1.0
- },
- {
- "source": "notifications_service",
- "target": "notifications_service_sendbusinessnotification",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L157",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_service_renderemailmessage",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L168",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_service_renderremindercopy",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L172",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_service_localizedstartsat",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L196",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_service_reminderrecipient",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L208",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_noopemailprovider",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L212",
- "weight": 1.0
- },
- {
- "source": "notifications_noopemailprovider",
- "target": "notifications_noopemailprovider_send",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L214",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_smtpemailprovider",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L224",
- "weight": 1.0
- },
- {
- "source": "notifications_smtpemailprovider",
- "target": "notifications_smtpemailprovider_send",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L228",
- "weight": 1.0
- },
- {
- "source": "notifications_service_newservice",
- "target": "notifications_emailprovider",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L44",
- "weight": 1.0
- },
- {
- "source": "notifications_service_dispatchdue",
- "target": "notifications_smtpemailprovider_send",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L78",
- "weight": 1.0
- },
- {
- "source": "notifications_service_dispatchdue",
- "target": "notifications_service_renderemailmessage",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L78",
- "weight": 1.0
- },
- {
- "source": "notifications_service_dispatchdue",
- "target": "notifications_service_reminderrecipient",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L105",
- "weight": 1.0
- },
- {
- "source": "notifications_service_sendbookingconfirmation",
- "target": "notifications_service_renderemailmessage",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L129",
- "weight": 1.0
- },
- {
- "source": "notifications_service_sendbookingconfirmation",
- "target": "notifications_smtpemailprovider_send",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L130",
- "weight": 1.0
- },
- {
- "source": "notifications_service_sendbookingreschedule",
- "target": "notifications_service_renderemailmessage",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L140",
- "weight": 1.0
- },
- {
- "source": "notifications_service_sendbookingreschedule",
- "target": "notifications_smtpemailprovider_send",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L141",
- "weight": 1.0
- },
- {
- "source": "notifications_service_sendbookingcancellation",
- "target": "notifications_service_renderemailmessage",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L151",
- "weight": 1.0
- },
- {
- "source": "notifications_service_sendbookingcancellation",
- "target": "notifications_smtpemailprovider_send",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L152",
- "weight": 1.0
- },
- {
- "source": "notifications_service_sendbusinessnotification",
- "target": "notifications_service_renderemailmessage",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L162",
- "weight": 1.0
- },
- {
- "source": "notifications_service_sendbusinessnotification",
- "target": "notifications_smtpemailprovider_send",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L164",
- "weight": 1.0
- },
- {
- "source": "notifications_service_renderremindercopy",
- "target": "notifications_service_localizedstartsat",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L173",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_emailtype",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_bookingemaildata",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L20",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_renderemailmessage",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L42",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_rendersubject",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L56",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_rendertextbody",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L90",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_renderhtmlbody",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L241",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_formatlocalizedtime",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L266",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_formatlocalizeddatetime",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L278",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_splitparagraphs",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L290",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_splitlines",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L313",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_trimspace",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L326",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_renderreminderemail",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L339",
- "weight": 1.0
- },
- {
- "source": "notifications_email_templates_renderemailmessage",
- "target": "notifications_email_templates_rendersubject",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L43",
- "weight": 1.0
- },
- {
- "source": "notifications_email_templates_renderemailmessage",
- "target": "notifications_email_templates_renderhtmlbody",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L44",
- "weight": 1.0
- },
- {
- "source": "notifications_email_templates_renderemailmessage",
- "target": "notifications_email_templates_rendertextbody",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L45",
- "weight": 1.0
- },
- {
- "source": "notifications_email_templates_rendersubject",
- "target": "notifications_email_templates_formatlocalizedtime",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L57",
- "weight": 1.0
- },
- {
- "source": "notifications_email_templates_rendertextbody",
- "target": "notifications_email_templates_formatlocalizeddatetime",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L91",
- "weight": 1.0
- },
- {
- "source": "notifications_email_templates_renderhtmlbody",
- "target": "notifications_email_templates_rendertextbody",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L243",
- "weight": 1.0
- },
- {
- "source": "notifications_email_templates_renderhtmlbody",
- "target": "notifications_email_templates_splitparagraphs",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L250",
- "weight": 1.0
- },
- {
- "source": "notifications_email_templates_splitparagraphs",
- "target": "notifications_email_templates_splitlines",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L293",
- "weight": 1.0
- },
- {
- "source": "notifications_email_templates_splitparagraphs",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L294",
- "weight": 1.0
- },
- {
- "source": "notifications_email_templates_renderreminderemail",
- "target": "notifications_email_templates_renderemailmessage",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L353",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_test_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_test_go",
- "target": "go_pkg_testing",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_test_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_test_go",
- "target": "go_pkg_bookra_apps_backend_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_test_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_test_go",
- "target": "go_pkg_bookra_apps_backend_internal_domain",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_test_go",
- "target": "notifications_service_test_testdispatchdueprocessespendingemailreminders",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_test_go",
- "target": "notifications_service_test_testdispatchduefailsunknownchannel",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L66",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_test_go",
- "target": "notifications_service_test_testdispatchrequestcontractshape",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L87",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "go_pkg_net_mail",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "go_pkg_sort",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "go_pkg_strings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_domain",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_notifications",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "go_pkg_github_com_jackc_pgx_v5",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L16",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L27",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_notifier",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L32",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_newservice",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L37",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_noopnotifier",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L44",
- "weight": 1.0
- },
- {
- "source": "bookings_noopnotifier",
- "target": "bookings_noopnotifier_sendbookingconfirmation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L46",
- "weight": 1.0
- },
- {
- "source": "bookings_noopnotifier",
- "target": "bookings_noopnotifier_sendbusinessnotification",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L50",
- "weight": 1.0
- },
- {
- "source": "bookings_service",
- "target": "bookings_service_availability",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L54",
- "weight": 1.0
- },
- {
- "source": "bookings_service",
- "target": "bookings_service_create",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L98",
- "weight": 1.0
- },
- {
- "source": "bookings_service",
- "target": "bookings_service_sendbookingconfirmationemails",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L240",
- "weight": 1.0
- },
- {
- "source": "bookings_service",
- "target": "bookings_service_serviceforrequest",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L273",
- "weight": 1.0
- },
- {
- "source": "bookings_service",
- "target": "bookings_service_classsessionforrequest",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L286",
- "weight": 1.0
- },
- {
- "source": "bookings_service",
- "target": "bookings_service_dashboardsummary",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L299",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_widgetsnippets",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L352",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_trackingstatus",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L361",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_normalizeplancode",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L369",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_generateappointmentslots",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L380",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_generateclassslots",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L449",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_collides",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L471",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_sameresource",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L486",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_samesecond",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L493",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_countclassbookings",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L497",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_reminderschedule",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L510",
- "weight": 1.0
- },
- {
- "source": "bookings_service_availability",
- "target": "bookings_service_generateappointmentslots",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L83",
- "weight": 1.0
- },
- {
- "source": "bookings_service_availability",
- "target": "bookings_service_generateclassslots",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L84",
- "weight": 1.0
- },
- {
- "source": "bookings_service_create",
- "target": "bookings_service_serviceforrequest",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L146",
- "weight": 1.0
- },
- {
- "source": "bookings_service_create",
- "target": "bookings_service_sameresource",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L161",
- "weight": 1.0
- },
- {
- "source": "bookings_service_create",
- "target": "bookings_service_classsessionforrequest",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L169",
- "weight": 1.0
- },
- {
- "source": "bookings_service_create",
- "target": "bookings_service_samesecond",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L176",
- "weight": 1.0
- },
- {
- "source": "bookings_service_create",
- "target": "bookings_service_countclassbookings",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L179",
- "weight": 1.0
- },
- {
- "source": "bookings_service_create",
- "target": "bookings_service_reminderschedule",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L219",
- "weight": 1.0
- },
- {
- "source": "bookings_service_create",
- "target": "bookings_service_sendbookingconfirmationemails",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L231",
- "weight": 1.0
- },
- {
- "source": "bookings_service_sendbookingconfirmationemails",
- "target": "bookings_noopnotifier_sendbookingconfirmation",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L270",
- "weight": 1.0
- },
- {
- "source": "bookings_service_dashboardsummary",
- "target": "bookings_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L338",
- "weight": 1.0
- },
- {
- "source": "bookings_service_dashboardsummary",
- "target": "bookings_service_widgetsnippets",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L347",
- "weight": 1.0
- },
- {
- "source": "bookings_service_dashboardsummary",
- "target": "bookings_service_trackingstatus",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L348",
- "weight": 1.0
- },
- {
- "source": "bookings_service_generateappointmentslots",
- "target": "bookings_service_collides",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L426",
- "weight": 1.0
- },
- {
- "source": "bookings_service_generateclassslots",
- "target": "bookings_service_countclassbookings",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L452",
- "weight": 1.0
- },
- {
- "source": "bookings_service_collides",
- "target": "bookings_service_sameresource",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L479",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_customer_service_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_customer_service_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_customer_service_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_customer_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_customer_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_domain",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_customer_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_notifications",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_customer_service_go",
- "target": "bookings_customerservice",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L19",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_customer_service_go",
- "target": "bookings_customernotifier",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L24",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_customer_service_go",
- "target": "bookings_customer_service_newcustomerservice",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L29",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_customer_service_go",
- "target": "bookings_customernoopnotifier",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L36",
- "weight": 1.0
- },
- {
- "source": "bookings_customernoopnotifier",
- "target": "bookings_customernoopnotifier_sendbookingreschedule",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L38",
- "weight": 1.0
- },
- {
- "source": "bookings_customernoopnotifier",
- "target": "bookings_customernoopnotifier_sendbookingcancellation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L42",
- "weight": 1.0
- },
- {
- "source": "bookings_customerservice",
- "target": "bookings_customerservice_getbookingbyreference",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L47",
- "weight": 1.0
- },
- {
- "source": "bookings_customerservice",
- "target": "bookings_customerservice_reschedulebooking",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L73",
- "weight": 1.0
- },
- {
- "source": "bookings_customerservice",
- "target": "bookings_customerservice_cancelbooking",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L112",
- "weight": 1.0
- },
- {
- "source": "bookings_customerservice",
- "target": "bookings_customerservice_sendrescheduleemail",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L132",
- "weight": 1.0
- },
- {
- "source": "bookings_customerservice",
- "target": "bookings_customerservice_sendcancellationemail",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L168",
- "weight": 1.0
- },
- {
- "source": "bookings_customerservice_reschedulebooking",
- "target": "bookings_customerservice_getbookingbyreference",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L74",
- "weight": 1.0
- },
- {
- "source": "bookings_customerservice_reschedulebooking",
- "target": "bookings_customerservice_sendrescheduleemail",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L106",
- "weight": 1.0
- },
- {
- "source": "bookings_customerservice_cancelbooking",
- "target": "bookings_customerservice_getbookingbyreference",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L113",
- "weight": 1.0
- },
- {
- "source": "bookings_customerservice_cancelbooking",
- "target": "bookings_customerservice_sendcancellationemail",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L127",
- "weight": 1.0
- },
- {
- "source": "bookings_customerservice_sendrescheduleemail",
- "target": "bookings_customernoopnotifier_sendbookingreschedule",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L165",
- "weight": 1.0
- },
- {
- "source": "bookings_customerservice_sendcancellationemail",
- "target": "bookings_customernoopnotifier_sendbookingcancellation",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L199",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "go_pkg_testing",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "go_pkg_bookra_apps_backend_internal_domain",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "bookings_service_test_testcreateappointmentrejectsconflict",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "bookings_service_test_testcreateclassfallsbacktowaitlistwhencapacityreached",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L70",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "bookings_service_test_testcreateappointmentrequirestenantservice",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L127",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "bookings_service_test_testcreateclassrequiresexistingsession",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L144",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "bookings_service_test_testavailabilitygeneratesupcomingslots",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L163",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "bookings_service_test_testcreateschedulesreminderjobforupcomingappointment",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L186",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "go_pkg_encoding_json",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "go_pkg_io",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "go_pkg_net_http",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "go_pkg_slices",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "go_pkg_strings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_domain",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L15",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "go_pkg_github_com_paddlehq_paddle_go_sdk_v5",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L17",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "go_pkg_github_com_jackc_pgx_v5",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L18",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L44",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_webhookenvelope",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L51",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_newservice",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L62",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_getsubscription",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L85",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_createcheckoutsession",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L111",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_refresh",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L146",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_createportalsession",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L177",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_handlewebhook",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L218",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_resolvewebhooktenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L279",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_syncpaddledata",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L292",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_tosnapshot",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L353",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_entitlementsforplan",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L390",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_plancodeforprice",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L401",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_priceforplan",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L412",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_subscriptionrank",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L429",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_displaypricesforplan",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L446",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_normalizeplancode",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L466",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_normalizecurrency",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L477",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_normalizesubscriptionstatus",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L488",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_checkoutavailable",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L497",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_customdatastring",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L510",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_parserfc3339ptr",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L526",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_timeperiodstart",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L538",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_timeperiodend",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L545",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_derefstring",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L552",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_firstnonempty",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L559",
- "weight": 1.0
- },
- {
- "source": "billing_service_getsubscription",
- "target": "billing_service_tosnapshot",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L97",
- "weight": 1.0
- },
- {
- "source": "billing_service_getsubscription",
- "target": "billing_service_firstnonempty",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L100",
- "weight": 1.0
- },
- {
- "source": "billing_service_getsubscription",
- "target": "billing_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L101",
- "weight": 1.0
- },
- {
- "source": "billing_service_createcheckoutsession",
- "target": "billing_service_priceforplan",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L120",
- "weight": 1.0
- },
- {
- "source": "billing_service_createcheckoutsession",
- "target": "billing_service_checkoutavailable",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L124",
- "weight": 1.0
- },
- {
- "source": "billing_service_createcheckoutsession",
- "target": "billing_service_derefstring",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L130",
- "weight": 1.0
- },
- {
- "source": "billing_service_refresh",
- "target": "billing_service_derefstring",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L155",
- "weight": 1.0
- },
- {
- "source": "billing_service_refresh",
- "target": "billing_service_tosnapshot",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L157",
- "weight": 1.0
- },
- {
- "source": "billing_service_refresh",
- "target": "billing_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L161",
- "weight": 1.0
- },
- {
- "source": "billing_service_refresh",
- "target": "billing_service_syncpaddledata",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L169",
- "weight": 1.0
- },
- {
- "source": "billing_service_createportalsession",
- "target": "billing_service_derefstring",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L189",
- "weight": 1.0
- },
- {
- "source": "billing_service_createportalsession",
- "target": "billing_service_firstnonempty",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L206",
- "weight": 1.0
- },
- {
- "source": "billing_service_handlewebhook",
- "target": "billing_service_resolvewebhooktenant",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L247",
- "weight": 1.0
- },
- {
- "source": "billing_service_handlewebhook",
- "target": "billing_service_derefstring",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L263",
- "weight": 1.0
- },
- {
- "source": "billing_service_handlewebhook",
- "target": "billing_service_firstnonempty",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L270",
- "weight": 1.0
- },
- {
- "source": "billing_service_handlewebhook",
- "target": "billing_service_syncpaddledata",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L275",
- "weight": 1.0
- },
- {
- "source": "billing_service_resolvewebhooktenant",
- "target": "billing_service_customdatastring",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L281",
- "weight": 1.0
- },
- {
- "source": "billing_service_syncpaddledata",
- "target": "billing_service_subscriptionrank",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L309",
- "weight": 1.0
- },
- {
- "source": "billing_service_syncpaddledata",
- "target": "billing_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L324",
- "weight": 1.0
- },
- {
- "source": "billing_service_syncpaddledata",
- "target": "billing_service_normalizesubscriptionstatus",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L332",
- "weight": 1.0
- },
- {
- "source": "billing_service_syncpaddledata",
- "target": "billing_service_normalizecurrency",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L333",
- "weight": 1.0
- },
- {
- "source": "billing_service_syncpaddledata",
- "target": "billing_service_parserfc3339ptr",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L335",
- "weight": 1.0
- },
- {
- "source": "billing_service_syncpaddledata",
- "target": "billing_service_timeperiodstart",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L335",
- "weight": 1.0
- },
- {
- "source": "billing_service_syncpaddledata",
- "target": "billing_service_timeperiodend",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L336",
- "weight": 1.0
- },
- {
- "source": "billing_service_syncpaddledata",
- "target": "billing_service_plancodeforprice",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L339",
- "weight": 1.0
- },
- {
- "source": "billing_service_tosnapshot",
- "target": "billing_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L355",
- "weight": 1.0
- },
- {
- "source": "billing_service_tosnapshot",
- "target": "billing_service_normalizecurrency",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L359",
- "weight": 1.0
- },
- {
- "source": "billing_service_tosnapshot",
- "target": "billing_service_firstnonempty",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L361",
- "weight": 1.0
- },
- {
- "source": "billing_service_tosnapshot",
- "target": "billing_service_derefstring",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L364",
- "weight": 1.0
- },
- {
- "source": "billing_service_tosnapshot",
- "target": "billing_service_entitlementsforplan",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L380",
- "weight": 1.0
- },
- {
- "source": "billing_service_tosnapshot",
- "target": "billing_service_displaypricesforplan",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L381",
- "weight": 1.0
- },
- {
- "source": "billing_service_tosnapshot",
- "target": "billing_service_checkoutavailable",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L384",
- "weight": 1.0
- },
- {
- "source": "billing_service_entitlementsforplan",
- "target": "billing_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L391",
- "weight": 1.0
- },
- {
- "source": "billing_service_plancodeforprice",
- "target": "billing_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L405",
- "weight": 1.0
- },
- {
- "source": "billing_service_priceforplan",
- "target": "billing_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L413",
- "weight": 1.0
- },
- {
- "source": "billing_service_priceforplan",
- "target": "billing_service_normalizecurrency",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L417",
- "weight": 1.0
- },
- {
- "source": "billing_service_displaypricesforplan",
- "target": "billing_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L447",
- "weight": 1.0
- },
- {
- "source": "billing_service_checkoutavailable",
- "target": "billing_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L501",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "go_pkg_testing",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "go_pkg_bookra_apps_backend_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "go_pkg_bookra_apps_backend_internal_domain",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "billing_service_test_testconfig",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "billing_service_test_testgetsubscriptionfallsbacktosnapshotandentitlements",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L25",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "billing_service_test_testcreatecheckoutrequirespaddleconfig",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L47",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "billing_service_test_testcreatecheckoutreturnslaunchpayload",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L61",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "billing_service_test_testrefreshrequirespaddlekeywhencustomerexists",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L82",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "billing_service_test_testgetsubscriptiondisablescheckoutwhenwebhookmissing",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L96",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "billing_service_test_testgetsubscriptionenablescheckoutwhenpaddleconfigured",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L113",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "billing_service_test_testcreateportalsessionrequirescustomer",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L131",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testgetsubscriptionfallsbacktosnapshotandentitlements",
- "target": "billing_service_test_testconfig",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L26",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testcreatecheckoutrequirespaddleconfig",
- "target": "billing_service_test_testconfig",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L48",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testcreatecheckoutreturnslaunchpayload",
- "target": "billing_service_test_testconfig",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L62",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testrefreshrequirespaddlekeywhencustomerexists",
- "target": "billing_service_test_testconfig",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L83",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testgetsubscriptiondisablescheckoutwhenwebhookmissing",
- "target": "billing_service_test_testconfig",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L97",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testgetsubscriptionenablescheckoutwhenpaddleconfigured",
- "target": "billing_service_test_testconfig",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L114",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testcreateportalsessionrequirescustomer",
- "target": "billing_service_test_testconfig",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L140",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_middleware_go",
- "target": "go_pkg_net_http",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_middleware_go",
- "target": "go_pkg_strings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_middleware_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_middleware_go",
- "target": "go_pkg_bookra_apps_backend_internal_domain",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_middleware_go",
- "target": "go_pkg_github_com_gin_gonic_gin",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_middleware_go",
- "target": "auth_middleware_requireauth",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L23",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_middleware_go",
- "target": "auth_middleware_principalfromcontext",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L82",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_neon_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_neon_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_neon_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_neon_go",
- "target": "go_pkg_net_url",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_neon_go",
- "target": "go_pkg_strings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_neon_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_neon_go",
- "target": "go_pkg_github_com_micahparks_keyfunc_v3",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_neon_go",
- "target": "go_pkg_github_com_golang_jwt_jwt_v5",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_neon_go",
- "target": "auth_verifier",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L15",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_neon_go",
- "target": "auth_neon_newverifier",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L23",
- "weight": 1.0
- },
- {
- "source": "auth_verifier",
- "target": "auth_verifier_enabled",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L58",
- "weight": 1.0
- },
- {
- "source": "auth_verifier",
- "target": "auth_verifier_close",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L62",
- "weight": 1.0
- },
- {
- "source": "auth_verifier",
- "target": "auth_verifier_verify",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L68",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_io",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_net_http",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_strconv",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_bookra_apps_backend_internal_auth",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_bookra_apps_backend_internal_billing",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_bookra_apps_backend_internal_bookings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_bookra_apps_backend_internal_catalog",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_bookra_apps_backend_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L15",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_bookra_apps_backend_internal_domain",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L16",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_bookra_apps_backend_internal_httpx",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L17",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_bookra_apps_backend_internal_notifications",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L18",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_bookra_apps_backend_internal_tenancy",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L19",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_github_com_gin_contrib_cors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L21",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_github_com_gin_gonic_gin",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L22",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_golang_org_x_time_rate",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L23",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "api_server",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L26",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "api_server_newserver",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L33",
- "weight": 1.0
- },
- {
- "source": "api_server",
- "target": "api_server_handler",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L590",
- "weight": 1.0
- },
- {
- "source": "api_server",
- "target": "api_server_close",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L594",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "api_server_authorizejobrunner",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L600",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "api_server_allowedorigins",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L607",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "api_server_widgetjavascript",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L634",
- "weight": 1.0
- },
- {
- "source": "api_server_newserver",
- "target": "api_server_allowedorigins",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L56",
- "weight": 1.0
- },
- {
- "source": "api_server_newserver",
- "target": "api_server_authorizejobrunner",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L561",
- "weight": 1.0
- },
- {
- "source": "api_server_newserver",
- "target": "api_server_widgetjavascript",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L584",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_test_go",
- "target": "go_pkg_net_http",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_test_go",
- "target": "go_pkg_net_http_httptest",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_test_go",
- "target": "go_pkg_testing",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_test_go",
- "target": "go_pkg_bookra_apps_backend_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_test_go",
- "target": "api_server_test_testdispatchreminderjobsrequiresjobrunnerkey",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_test_go",
- "target": "api_server_test_testdispatchreminderjobsacceptsconfiguredjobrunnerkey",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L33",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "go_pkg_regexp",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "go_pkg_strings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_domain",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "go_pkg_github_com_jackc_pgx_v5",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "go_pkg_github_com_jackc_pgx_v5_pgconn",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "tenancy_service",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L25",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "tenancy_service_newservice",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L29",
- "weight": 1.0
- },
- {
- "source": "tenancy_service",
- "target": "tenancy_service_bootstrap",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L33",
- "weight": 1.0
- },
- {
- "source": "tenancy_service",
- "target": "tenancy_service_onboard",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L73",
- "weight": 1.0
- },
- {
- "source": "tenancy_service",
- "target": "tenancy_service_brandprofile",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L182",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "tenancy_service_validateavailabilityblocks",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L195",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "tenancy_service_toavailabilityblocks",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L218",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "tenancy_service_toteaminvites",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L231",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "tenancy_service_normalizeclock",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L247",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "tenancy_service_normalizeplancode",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L255",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "tenancy_service_firstnonempty",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L266",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_bootstrap",
- "target": "tenancy_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L61",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_bootstrap",
- "target": "tenancy_service_brandprofile",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L63",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_onboard",
- "target": "tenancy_service_validateavailabilityblocks",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L126",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_onboard",
- "target": "tenancy_service_toavailabilityblocks",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L147",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_onboard",
- "target": "tenancy_service_toteaminvites",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L148",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_onboard",
- "target": "tenancy_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L165",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_brandprofile",
- "target": "tenancy_service_firstnonempty",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L188",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_toavailabilityblocks",
- "target": "tenancy_service_normalizeclock",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L223",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_test_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_test_go",
- "target": "go_pkg_testing",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_test_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_test_go",
- "target": "go_pkg_bookra_apps_backend_internal_domain",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_test_go",
- "target": "tenancy_service_test_testbootstrapresolvesmembershipafteridentitysync",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_test_go",
- "target": "tenancy_service_test_testbootstrapreturnsshellwhenmembershipmissing",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L40",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_test_go",
- "target": "tenancy_service_test_testonboardcreatestenantforauthenticateduser",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L62",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_test_go",
- "target": "tenancy_service_test_testonboardrejectsinvalidslug",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L89",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_vite_config_ts",
- "target": "vite",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/vite.config.ts",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_vite_config_ts",
- "target": "vite_plugin_solid",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/vite.config.ts",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_app_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_app_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_app_tsx",
- "target": "router",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_app_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_auth_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_app_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_i18n_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_app_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_theme_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_app_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_shell",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_app_tsx",
- "target": "src_app_scrolltotop",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_app_tsx",
- "target": "src_app_app",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L22",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_main_tsx",
- "target": "web",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/main.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_main_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/main.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_main_tsx",
- "target": "router",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/main.tsx",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_main_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_app",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/main.tsx",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_main_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_styles_index_css",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/main.tsx",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_about_route_tsx",
- "target": "router",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/about-route.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_about_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_i18n_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/about-route.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_about_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_bookra_character",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/about-route.tsx",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_about_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_ui",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/about-route.tsx",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_about_route_tsx",
- "target": "routes_about_route_aboutroute",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/about-route.tsx",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_auth_callback_route_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/auth-callback-route.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_auth_callback_route_tsx",
- "target": "router",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/auth-callback-route.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_auth_callback_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_bookra_character",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/auth-callback-route.tsx",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_auth_callback_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_ui",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/auth-callback-route.tsx",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_auth_callback_route_tsx",
- "target": "routes_auth_callback_route_authcallbackroute",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/auth-callback-route.tsx",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_public_booking_route_tsx",
- "target": "router",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_public_booking_route_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_public_booking_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_lib_api_client",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_public_booking_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_i18n_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_public_booking_route_tsx",
- "target": "types",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_public_booking_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_bookra_character",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_public_booking_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_ui",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_public_booking_route_tsx",
- "target": "routes_public_booking_route_tenantslug",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_public_booking_route_tsx",
- "target": "routes_public_booking_route_bookslot",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L31",
- "weight": 1.0
- },
- {
- "source": "routes_public_booking_route_bookslot",
- "target": "routes_public_booking_route_tenantslug",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L41",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "router",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_lib_api_client",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_lib_paddle",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_auth_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_i18n_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_theme_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_bookra_character",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_widget_builder",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_integration_modal",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_ui_select",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_ui_input",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_ui_textarea",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_layoutdashboardicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L33",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_calendardaysicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L42",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_creditcardicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L52",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_settings2icon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L59",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_logouticon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L67",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_menuicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L75",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_xicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L81",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_trendingupicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L87",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_trendingdownicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L94",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_clockicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L101",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_checkcircleicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L107",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_alertcircleicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L113",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_morehorizontalicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L119",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_chevronlefticon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L125",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_chevronrighticon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L131",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_sparklesicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L137",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_bellicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L143",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_plusicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L149",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_usersicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L155",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_usercircleicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L161",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_iscs",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L319",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_changemonth",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L347",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_prevmonth",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L355",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_nextmonth",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L356",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_trend",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L449",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_trendclass",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L450",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_sparklineclass",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L460",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_isdemomode",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L571",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_resolvedsummary",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L595",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_resolvedbootstrap",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L596",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_resolvedbilling",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L597",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_hastenant",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L642",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_isdashboardready",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L643",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_refreshbilling",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L645",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_opencheckout",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L669",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_openbillingportal",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L716",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_changesection",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L754",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_resolvedallbookings",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L895",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_handlecreatebooking",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L954",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_handleupdatebooking",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L989",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_handlecancelbooking",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1015",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_handlereschedulebooking",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1028",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_openbookingdetail",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1045",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_bookingstats",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1076",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_billingpricelabel",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1538",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_handlesavebrand",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1592",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_getdemocustomers",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2184",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_resolvedcustomers",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2192",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_resolvedbookings",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2193",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_getcustomerbookings",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2223",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_opencustomerdetail",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2229",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_filteredcustomers",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2259",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_demodata",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2496",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_resolvedlocations",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2519",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_resolvedblockeddays",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2520",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_resolvedworkinghours",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2521",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_handleaddzone",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2523",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_handleaddblockedday",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2540",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_handledeleteblockedday",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2562",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_prevmonth",
- "target": "routes_dashboard_route_changemonth",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L355",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_nextmonth",
- "target": "routes_dashboard_route_changemonth",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L356",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_trendclass",
- "target": "routes_dashboard_route_trend",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L451",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_sparklineclass",
- "target": "routes_dashboard_route_trend",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L461",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_resolvedsummary",
- "target": "routes_dashboard_route_isdemomode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L595",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_resolvedsummary",
- "target": "routes_dashboard_route_demodata",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L595",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_resolvedbootstrap",
- "target": "routes_dashboard_route_isdemomode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L596",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_resolvedbootstrap",
- "target": "routes_dashboard_route_demodata",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L596",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_resolvedbilling",
- "target": "routes_dashboard_route_isdemomode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L597",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_resolvedbilling",
- "target": "routes_dashboard_route_demodata",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L597",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_hastenant",
- "target": "routes_dashboard_route_isdemomode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L642",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_isdashboardready",
- "target": "routes_dashboard_route_hastenant",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L643",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_isdashboardready",
- "target": "routes_dashboard_route_isdemomode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L643",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_opencheckout",
- "target": "routes_dashboard_route_resolvedbilling",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L683",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_resolvedallbookings",
- "target": "routes_dashboard_route_demodata",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L895",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_resolvedcustomers",
- "target": "routes_dashboard_route_getdemocustomers",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2192",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_resolvedbookings",
- "target": "routes_dashboard_route_demodata",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2193",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_getcustomerbookings",
- "target": "routes_dashboard_route_resolvedbookings",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2224",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_resolvedlocations",
- "target": "routes_dashboard_route_demodata",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2519",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_resolvedblockeddays",
- "target": "routes_dashboard_route_demodata",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2520",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_resolvedworkinghours",
- "target": "routes_dashboard_route_demodata",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2521",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_contact_route_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/contact-route.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_contact_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_i18n_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/contact-route.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_contact_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_bookra_character",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/contact-route.tsx",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_contact_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_ui",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/contact-route.tsx",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_contact_route_tsx",
- "target": "routes_contact_route_handlesubmit",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/contact-route.tsx",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "router",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_i18n_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_bookra_character",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_calendaricon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_clockicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L16",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_usersicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L23",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_bellicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L32",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_shieldicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L39",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_zapicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L45",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_arrowrighticon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L51",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_checkicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L58",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_sunicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L64",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_moonicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L78",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_stepcard",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L91",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_prevmonth",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L121",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_nextmonth",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L127",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_not_found_route_tsx",
- "target": "router",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/not-found-route.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_not_found_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_i18n_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/not-found-route.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_not_found_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_bookra_character",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/not-found-route.tsx",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_not_found_route_tsx",
- "target": "routes_not_found_route_notfoundroute",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/not-found-route.tsx",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_legal_route_tsx",
- "target": "router",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_legal_route_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_legal_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_ui",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_legal_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_bookra_character",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_legal_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_i18n_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_legal_route_tsx",
- "target": "routes_legal_route_kind",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_legal_route_tsx",
- "target": "routes_legal_route_heropose",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_legal_route_tsx",
- "target": "routes_legal_route_helperpose",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_legal_route_tsx",
- "target": "routes_legal_route_sections",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "routes_legal_route_heropose",
- "target": "routes_legal_route_kind",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "routes_legal_route_helperpose",
- "target": "routes_legal_route_kind",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "routes_legal_route_sections",
- "target": "routes_legal_route_kind",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "router",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_lib_api_client",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_i18n_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_bookra_character",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_ui",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "routes_booking_manage_route_token",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L20",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "routes_booking_manage_route_reference",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L21",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "routes_booking_manage_route_handlereschedule",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L51",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "routes_booking_manage_route_handlecancel",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L96",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "routes_booking_manage_route_formatdate",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L126",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "routes_booking_manage_route_formattime",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L136",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "routes_booking_manage_route_formattime",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L250",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "routes_booking_manage_route_isrescheduling",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L352",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "routes_booking_manage_route_iscancelling",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L411",
- "weight": 1.0
- },
- {
- "source": "routes_booking_manage_route_handlereschedule",
- "target": "routes_booking_manage_route_reference",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L60",
- "weight": 1.0
- },
- {
- "source": "routes_booking_manage_route_handlereschedule",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L61",
- "weight": 1.0
- },
- {
- "source": "routes_booking_manage_route_handlecancel",
- "target": "routes_booking_manage_route_reference",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L100",
- "weight": 1.0
- },
- {
- "source": "routes_booking_manage_route_handlecancel",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L101",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_bookra_character_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/bookra-character.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_bookra_character_tsx",
- "target": "components_bookra_character_bookracharacter",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/bookra-character.tsx",
- "source_location": "L79",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_bookra_character_tsx",
- "target": "components_bookra_character_characterwithmessage",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/bookra-character.tsx",
- "source_location": "L125",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_integration_modal_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/integration-modal.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_integration_modal_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_ui",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/integration-modal.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_integration_modal_tsx",
- "target": "components_integration_modal_copytoclipboard",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/integration-modal.tsx",
- "source_location": "L16",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_location_map_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_location_map_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_lib_map",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_location_map_tsx",
- "target": "components_location_map_loadleaflet",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L29",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_location_map_tsx",
- "target": "components_location_map_safemarkercolor",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L61",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_location_map_tsx",
- "target": "components_location_map_escapehtml",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L68",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_location_map_tsx",
- "target": "components_location_map_createmarkericon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L77",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_location_map_tsx",
- "target": "components_location_map_locationmap",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L88",
- "weight": 1.0
- },
- {
- "source": "components_location_map_createmarkericon",
- "target": "components_location_map_safemarkercolor",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L78",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "router",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_auth_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_i18n_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_theme_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_bookra_character",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_ui",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_sunicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L19",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_moonicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L33",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_globeicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L39",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_menuicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L47",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_xicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L55",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_googleicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L62",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_hideheader",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L78",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_showgooglesignin",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L88",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_isdemomode",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L96",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_handleopenauth",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L103",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_submitsignin",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L114",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_translateautherror",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L146",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_sendmagiclink",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L179",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_signinwithgoogle",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L194",
- "weight": 1.0
- },
- {
- "source": "components_shell_submitsignin",
- "target": "components_shell_translateautherror",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L138",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_i18n_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_ui",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_bookra_character",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_location_map",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_lib_map",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_copyicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L39",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_checkicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L46",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_codeicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L52",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_externallinkicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L59",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_iframeicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L67",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_buttonicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L75",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_calendaricon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L81",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_modalicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L90",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_floatingicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L100",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_sunicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L108",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_moonicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L122",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_refreshicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L128",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_lockicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L137",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_dragicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L144",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_moveicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L155",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_paletteicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L166",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_mapicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L176",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_eyeicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L184",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_json",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L199",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_generatedmapelementid",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L203",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_safehexcolor",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L207",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_resolvemaplocation",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L281",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_generatemapcode",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L305",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_handledragstart",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L429",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_handledragover",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L433",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_handledragend",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L445",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_generatecode",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L449",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_copytoclipboard",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L1076",
- "weight": 1.0
- },
- {
- "source": "components_widget_builder_generatemapcode",
- "target": "components_widget_builder_generatedmapelementid",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L308",
- "weight": 1.0
- },
- {
- "source": "components_widget_builder_generatemapcode",
- "target": "components_widget_builder_safehexcolor",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L309",
- "weight": 1.0
- },
- {
- "source": "components_widget_builder_generatemapcode",
- "target": "components_widget_builder_json",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L322",
- "weight": 1.0
- },
- {
- "source": "components_widget_builder_generatecode",
- "target": "components_widget_builder_generatemapcode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L469",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_layoutdashboardicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_calendardaysicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_creditcardicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L20",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_settings2icon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L27",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_logouticon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L35",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_menuicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L43",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_xicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L49",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_trendingupicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L55",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_trendingdownicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L62",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_clockicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L69",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_checkcircleicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L75",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_alertcircleicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L81",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_chevronlefticon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L87",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_chevronrighticon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L93",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_sparklesicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L99",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_bellicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L105",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_plusicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L111",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_usersicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L117",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_usercircleicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L123",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_types_ts",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/types.ts",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_types_ts",
- "target": "dashboard_types_getinitials",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/types.ts",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_types_ts",
- "target": "dashboard_types_getbookingduration",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/types.ts",
- "source_location": "L22",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_tooltip_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tooltip.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_tooltip_tsx",
- "target": "ui_tooltip_tooltip",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tooltip.tsx",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_input_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/input.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_input_tsx",
- "target": "ui_input_input",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/input.tsx",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_badge_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/badge.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_badge_tsx",
- "target": "ui_badge_badge",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/badge.tsx",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_select_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/select.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_select_tsx",
- "target": "ui_select_select",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/select.tsx",
- "source_location": "L17",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_button_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/button.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_textarea_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/textarea.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_textarea_tsx",
- "target": "ui_textarea_resizeclass",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/textarea.tsx",
- "source_location": "L15",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_card_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_card_tsx",
- "target": "ui_card_card",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_card_tsx",
- "target": "ui_card_cardheader",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L42",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_card_tsx",
- "target": "ui_card_cardtitle",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L53",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_card_tsx",
- "target": "ui_card_carddescription",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L67",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_card_tsx",
- "target": "ui_card_cardcontent",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L78",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_card_tsx",
- "target": "ui_card_cardfooter",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L89",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_skeleton_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/skeleton.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_skeleton_tsx",
- "target": "ui_skeleton_skeleton",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/skeleton.tsx",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_skeleton_tsx",
- "target": "ui_skeleton_skeletoncard",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/skeleton.tsx",
- "source_location": "L28",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_skeleton_tsx",
- "target": "ui_skeleton_skeletontext",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/skeleton.tsx",
- "source_location": "L38",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_avatar_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/avatar.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_avatar_tsx",
- "target": "ui_avatar_avatar",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/avatar.tsx",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_tabs_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_tabs_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_tabs_tsx",
- "target": "ui_tabs_usetabs",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_tabs_tsx",
- "target": "ui_tabs_tabs",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L29",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_tabs_tsx",
- "target": "ui_tabs_tabslist",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L60",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_tabs_tsx",
- "target": "ui_tabs_tabstrigger",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L89",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_tabs_tsx",
- "target": "ui_tabs_tabscontent",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L120",
- "weight": 1.0
- },
- {
- "source": "ui_tabs_tabstrigger",
- "target": "ui_tabs_usetabs",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L91",
- "weight": 1.0
- },
- {
- "source": "ui_tabs_tabscontent",
- "target": "ui_tabs_usetabs",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L122",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "web",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "ui_dialog_dialog",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "ui_dialog_dialogheader",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L78",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "ui_dialog_dialogtitle",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L88",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "ui_dialog_dialogdescription",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L104",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "ui_dialog_dialogcontent",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L120",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "ui_dialog_dialogfooter",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L130",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "ui_dialog_dialogclosebutton",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L151",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "ui_dialog_usedialog",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L185",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_theme_provider_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/theme-provider.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_theme_provider_tsx",
- "target": "providers_theme_provider_getinitialtheme",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/theme-provider.tsx",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_theme_provider_tsx",
- "target": "providers_theme_provider_getresolvedtheme",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/theme-provider.tsx",
- "source_location": "L19",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_theme_provider_tsx",
- "target": "providers_theme_provider_usetheme",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/theme-provider.tsx",
- "source_location": "L82",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_auth_provider_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_auth_provider_tsx",
- "target": "auth",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_auth_provider_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_lib_types",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_auth_provider_tsx",
- "target": "providers_auth_provider_sessionfromlocaltoken",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L21",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_auth_provider_tsx",
- "target": "providers_auth_provider_parsejwtpayload",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L40",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_auth_provider_tsx",
- "target": "providers_auth_provider_authprovider",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L69",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_auth_provider_tsx",
- "target": "providers_auth_provider_useauth",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L208",
- "weight": 1.0
- },
- {
- "source": "providers_auth_provider_sessionfromlocaltoken",
- "target": "providers_auth_provider_parsejwtpayload",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L22",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_i18n_provider_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/i18n-provider.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_i18n_provider_tsx",
- "target": "shared_types",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/i18n-provider.tsx",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_i18n_provider_tsx",
- "target": "shared_types",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/i18n-provider.tsx",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_mapstylebyid",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L84",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_resolvemaptilestyle",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L88",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_validatecoordinates",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L102",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_parsecoordinatetext",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L113",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_parsemapyczurl",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L133",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_parsegooglemapsurl",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L159",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_parsemapurl",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L217",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_geocodelocation",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L228",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_reversegeocode",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L282",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_resolvelocationinput",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L320",
- "weight": 1.0
- },
- {
- "source": "lib_map_resolvemaptilestyle",
- "target": "lib_map_mapstylebyid",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L99",
- "weight": 1.0
- },
- {
- "source": "lib_map_parsecoordinatetext",
- "target": "lib_map_validatecoordinates",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L123",
- "weight": 1.0
- },
- {
- "source": "lib_map_parsemapyczurl",
- "target": "lib_map_validatecoordinates",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L145",
- "weight": 1.0
- },
- {
- "source": "lib_map_parsegooglemapsurl",
- "target": "lib_map_validatecoordinates",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L175",
- "weight": 1.0
- },
- {
- "source": "lib_map_parsegooglemapsurl",
- "target": "lib_map_parsecoordinatetext",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L189",
- "weight": 1.0
- },
- {
- "source": "lib_map_parsemapurl",
- "target": "lib_map_parsemapyczurl",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L225",
- "weight": 1.0
- },
- {
- "source": "lib_map_parsemapurl",
- "target": "lib_map_parsegooglemapsurl",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L225",
- "weight": 1.0
- },
- {
- "source": "lib_map_geocodelocation",
- "target": "lib_map_validatecoordinates",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L265",
- "weight": 1.0
- },
- {
- "source": "lib_map_reversegeocode",
- "target": "lib_map_validatecoordinates",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L283",
- "weight": 1.0
- },
- {
- "source": "lib_map_resolvelocationinput",
- "target": "lib_map_parsecoordinatetext",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L321",
- "weight": 1.0
- },
- {
- "source": "lib_map_resolvelocationinput",
- "target": "lib_map_reversegeocode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L323",
- "weight": 1.0
- },
- {
- "source": "lib_map_resolvelocationinput",
- "target": "lib_map_parsemapurl",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L330",
- "weight": 1.0
- },
- {
- "source": "lib_map_resolvelocationinput",
- "target": "lib_map_geocodelocation",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L341",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_api_client_ts",
- "target": "openapi_fetch",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/api-client.ts",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_api_client_ts",
- "target": "types",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/api-client.ts",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_paddle_ts",
- "target": "paddle_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/paddle.ts",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_paddle_ts",
- "target": "lib_paddle_paddleconfigured",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/paddle.ts",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_paddle_ts",
- "target": "lib_paddle_getpaddle",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/paddle.ts",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "lib_paddle_getpaddle",
- "target": "lib_paddle_paddleconfigured",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/paddle.ts",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "packages_api_client_scripts_generate_mjs",
- "target": "promises",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "packages/api-client/scripts/generate.mjs",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "packages_api_client_scripts_generate_mjs",
- "target": "node_path",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "packages/api-client/scripts/generate.mjs",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "packages_api_client_scripts_generate_mjs",
- "target": "node_url",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "packages/api-client/scripts/generate.mjs",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "packages_api_client_scripts_generate_mjs",
- "target": "openapi_typescript",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "packages/api-client/scripts/generate.mjs",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "api_main_main",
- "target": "config_config_load",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L25",
- "weight": 1.0
- },
- {
- "source": "api_main_main",
- "target": "config_config_getenv",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L32",
- "weight": 1.0
- },
- {
- "source": "api_main_main",
- "target": "handlers_handlers_new",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L36",
- "weight": 1.0
- },
- {
- "source": "api_main_runmigrations",
- "target": "api_server_close",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L110",
- "weight": 1.0
- },
- {
- "source": "email_service_sendmagiclink",
- "target": "email_templates_magiclinkemail",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L29",
- "weight": 1.0
- },
- {
- "source": "email_service_sendwelcomeemail",
- "target": "email_templates_welcomeemail",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L35",
- "weight": 1.0
- },
- {
- "source": "email_service_sendbookingconfirmation",
- "target": "email_templates_bookingconfirmationemail",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L41",
- "weight": 1.0
- },
- {
- "source": "email_service_sendpasswordreset",
- "target": "email_templates_passwordresetemail",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L47",
- "weight": 1.0
- },
- {
- "source": "config_config_test_testloaddefaultsauthserviceportto8081",
- "target": "config_config_getenv",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L53",
- "weight": 1.0
- },
- {
- "source": "config_config_test_testloaddefaultsauthserviceportto8081",
- "target": "config_config_load",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L68",
- "weight": 1.0
- },
- {
- "source": "config_config_stripesecretconfigured",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L95",
- "weight": 1.0
- },
- {
- "source": "config_config_stripewebhookconfigured",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L99",
- "weight": 1.0
- },
- {
- "source": "config_config_stripehasanypriceconfigured",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L104",
- "weight": 1.0
- },
- {
- "source": "handlers_handlers_new",
- "target": "auth_neon_newneonverifier",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L63",
- "weight": 1.0
- },
- {
- "source": "handlers_handlers_new",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L68",
- "weight": 1.0
- },
- {
- "source": "handlers_handlers_new",
- "target": "oauth_google_newgoogleprovider",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L71",
- "weight": 1.0
- },
- {
- "source": "handlers_handler_registerroutes",
- "target": "handlers_admin_newadmindashboard",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L105",
- "weight": 1.0
- },
- {
- "source": "handlers_handler_refreshtoken",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L200",
- "weight": 1.0
- },
- {
- "source": "handlers_handlers_oauthcookiesecure",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L503",
- "weight": 1.0
- },
- {
- "source": "handlers_admindashboard_getprices",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L69",
- "weight": 1.0
- },
- {
- "source": "billing_service_createcheckoutsession",
- "target": "handlers_handlers_new",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L154",
- "weight": 1.0
- },
- {
- "source": "billing_service_ensurecustomer",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L219",
- "weight": 1.0
- },
- {
- "source": "billing_service_ensurecustomer",
- "target": "handlers_handlers_new",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L223",
- "weight": 1.0
- },
- {
- "source": "billing_service_priceforplan",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L328",
- "weight": 1.0
- },
- {
- "source": "billing_service_defaultplancode",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L362",
- "weight": 1.0
- },
- {
- "source": "billing_service_plancodeforprice",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L374",
- "weight": 1.0
- },
- {
- "source": "billing_service_checkoutavailableforplan",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L389",
- "weight": 1.0
- },
- {
- "source": "billing_service_normalizecurrency",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L408",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testpriceforplanusesconfiguredplancodesonly",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testkvkeyshape",
- "target": "billing_service_usercustomerkey",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L41",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testkvkeyshape",
- "target": "billing_service_customersnapshotkey",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L44",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testcheckoutavailableforplanrequiressecret",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L50",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testcheckoutavailableforplanrequiresconfiguredplan",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L62",
- "weight": 1.0
- },
- {
- "source": "auth_neon_newneonverifier",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L23",
- "weight": 1.0
- },
- {
- "source": "auth_neonverifier_verify",
- "target": "handlers_handlers_new",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L54",
- "weight": 1.0
- },
- {
- "source": "auth_neonverifier_verify",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L75",
- "weight": 1.0
- },
- {
- "source": "auth_service_test_testgeneratetokensproducesverifiableaccessandrefreshtokens",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "auth_service_test_testrefreshtokensreturnsrotatedpair",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L52",
- "weight": 1.0
- },
- {
- "source": "auth_service_test_testrefreshtokensrejectsinvalidtoken",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L83",
- "weight": 1.0
- },
- {
- "source": "api_main_main",
- "target": "db_pool_newpools",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L22",
- "weight": 1.0
- },
- {
- "source": "api_main_main",
- "target": "api_server_newserver",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L28",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository_createtenantforuser",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L513",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository_ensureuseridentity",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1433",
- "weight": 1.0
- },
- {
- "source": "db_repository_firstnonempty",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2060",
- "weight": 1.0
- },
- {
- "source": "db_pool_connect",
- "target": "handlers_handlers_new",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L55",
- "weight": 1.0
- },
- {
- "source": "config_config_load",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L40",
- "weight": 1.0
- },
- {
- "source": "config_config_load",
- "target": "handlers_handlers_new",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L60",
- "weight": 1.0
- },
- {
- "source": "config_config_paddleconfigured",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L107",
- "weight": 1.0
- },
- {
- "source": "config_config_paddlewebhookconfigured",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L111",
- "weight": 1.0
- },
- {
- "source": "config_config_paddlepricematrixfromenv",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L127",
- "weight": 1.0
- },
- {
- "source": "config_config_paddlepricematrixfromenv",
- "target": "config_config_getenv",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L127",
- "weight": 1.0
- },
- {
- "source": "config_config_normalizepaddleenvironment",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L134",
- "weight": 1.0
- },
- {
- "source": "config_config_normalizeplancode",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L143",
- "weight": 1.0
- },
- {
- "source": "config_config_valueordefault",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L154",
- "weight": 1.0
- },
- {
- "source": "config_config_valueordefault",
- "target": "config_config_getenv",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L154",
- "weight": 1.0
- },
- {
- "source": "config_config_boolfromenv",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L161",
- "weight": 1.0
- },
- {
- "source": "config_config_boolfromenv",
- "target": "config_config_getenv",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L161",
- "weight": 1.0
- },
- {
- "source": "notifications_service_renderemailmessage",
- "target": "notifications_email_templates_renderreminderemail",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L169",
- "weight": 1.0
- },
- {
- "source": "notifications_noopemailprovider_send",
- "target": "handlers_handlers_new",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L216",
- "weight": 1.0
- },
- {
- "source": "notifications_smtpemailprovider_send",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L229",
- "weight": 1.0
- },
- {
- "source": "notifications_smtpemailprovider_send",
- "target": "handlers_handlers_new",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L230",
- "weight": 1.0
- },
- {
- "source": "notifications_service_test_testdispatchdueprocessespendingemailreminders",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "notifications_service_test_testdispatchdueprocessespendingemailreminders",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L38",
- "weight": 1.0
- },
- {
- "source": "notifications_service_test_testdispatchduefailsunknownchannel",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L67",
- "weight": 1.0
- },
- {
- "source": "notifications_service_test_testdispatchduefailsunknownchannel",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L77",
- "weight": 1.0
- },
- {
- "source": "bookings_service_create",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L122",
- "weight": 1.0
- },
- {
- "source": "bookings_service_create",
- "target": "routes_booking_manage_route_reference",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L199",
- "weight": 1.0
- },
- {
- "source": "bookings_service_trackingstatus",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L363",
- "weight": 1.0
- },
- {
- "source": "bookings_service_test_testcreateappointmentrejectsconflict",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "bookings_service_test_testcreateappointmentrejectsconflict",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L15",
- "weight": 1.0
- },
- {
- "source": "bookings_service_test_testcreateclassfallsbacktowaitlistwhencapacityreached",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L71",
- "weight": 1.0
- },
- {
- "source": "bookings_service_test_testcreateclassfallsbacktowaitlistwhencapacityreached",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L72",
- "weight": 1.0
- },
- {
- "source": "bookings_service_test_testcreateappointmentrequirestenantservice",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L128",
- "weight": 1.0
- },
- {
- "source": "bookings_service_test_testcreateappointmentrequirestenantservice",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L129",
- "weight": 1.0
- },
- {
- "source": "bookings_service_test_testcreateclassrequiresexistingsession",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L145",
- "weight": 1.0
- },
- {
- "source": "bookings_service_test_testcreateclassrequiresexistingsession",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L146",
- "weight": 1.0
- },
- {
- "source": "bookings_service_test_testavailabilitygeneratesupcomingslots",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L164",
- "weight": 1.0
- },
- {
- "source": "bookings_service_test_testavailabilitygeneratesupcomingslots",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L165",
- "weight": 1.0
- },
- {
- "source": "bookings_service_test_testcreateschedulesreminderjobforupcomingappointment",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L187",
- "weight": 1.0
- },
- {
- "source": "bookings_service_test_testcreateschedulesreminderjobforupcomingappointment",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L188",
- "weight": 1.0
- },
- {
- "source": "billing_service_newservice",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L65",
- "weight": 1.0
- },
- {
- "source": "billing_service_newservice",
- "target": "handlers_handlers_new",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L69",
- "weight": 1.0
- },
- {
- "source": "billing_service_createcheckoutsession",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L131",
- "weight": 1.0
- },
- {
- "source": "billing_service_createportalsession",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L204",
- "weight": 1.0
- },
- {
- "source": "billing_service_handlewebhook",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L222",
- "weight": 1.0
- },
- {
- "source": "billing_service_handlewebhook",
- "target": "handlers_handlers_new",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L231",
- "weight": 1.0
- },
- {
- "source": "billing_service_resolvewebhooktenant",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L280",
- "weight": 1.0
- },
- {
- "source": "billing_service_normalizeplancode",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L467",
- "weight": 1.0
- },
- {
- "source": "billing_service_normalizesubscriptionstatus",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L489",
- "weight": 1.0
- },
- {
- "source": "billing_service_checkoutavailable",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L503",
- "weight": 1.0
- },
- {
- "source": "billing_service_customdatastring",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L520",
- "weight": 1.0
- },
- {
- "source": "billing_service_parserfc3339ptr",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L527",
- "weight": 1.0
- },
- {
- "source": "billing_service_firstnonempty",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L561",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testgetsubscriptionfallsbacktosnapshotandentitlements",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L26",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testgetsubscriptionfallsbacktosnapshotandentitlements",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L26",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testcreatecheckoutrequirespaddleconfig",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L50",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testcreatecheckoutrequirespaddleconfig",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L50",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testcreatecheckoutreturnslaunchpayload",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L62",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testcreatecheckoutreturnslaunchpayload",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L62",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testrefreshrequirespaddlekeywhencustomerexists",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L85",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testrefreshrequirespaddlekeywhencustomerexists",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L85",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testgetsubscriptiondisablescheckoutwhenwebhookmissing",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L99",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testgetsubscriptiondisablescheckoutwhenwebhookmissing",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L99",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testgetsubscriptionenablescheckoutwhenpaddleconfigured",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L114",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testgetsubscriptionenablescheckoutwhenpaddleconfigured",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L114",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testcreateportalsessionrequirescustomer",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L132",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testcreateportalsessionrequirescustomer",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L140",
- "weight": 1.0
- },
- {
- "source": "auth_middleware_requireauth",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L39",
- "weight": 1.0
- },
- {
- "source": "auth_neon_newverifier",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L24",
- "weight": 1.0
- },
- {
- "source": "auth_verifier_verify",
- "target": "handlers_handlers_new",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L70",
- "weight": 1.0
- },
- {
- "source": "api_server_newserver",
- "target": "auth_neon_newverifier",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L34",
- "weight": 1.0
- },
- {
- "source": "api_server_newserver",
- "target": "db_repository_newrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L39",
- "weight": 1.0
- },
- {
- "source": "api_server_newserver",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L40",
- "weight": 1.0
- },
- {
- "source": "api_server_newserver",
- "target": "bookings_customer_service_newcustomerservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L42",
- "weight": 1.0
- },
- {
- "source": "api_server_newserver",
- "target": "httpx_middleware_newratelimiter",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L46",
- "weight": 1.0
- },
- {
- "source": "api_server_newserver",
- "target": "handlers_handlers_new",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L49",
- "weight": 1.0
- },
- {
- "source": "api_server_newserver",
- "target": "httpx_middleware_securityheaders",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L60",
- "weight": 1.0
- },
- {
- "source": "api_server_newserver",
- "target": "domain_createbookingrequest",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L111",
- "weight": 1.0
- },
- {
- "source": "api_server_newserver",
- "target": "auth_middleware_requireauth",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L130",
- "weight": 1.0
- },
- {
- "source": "api_server_newserver",
- "target": "auth_middleware_principalfromcontext",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L133",
- "weight": 1.0
- },
- {
- "source": "api_server_test_testdispatchreminderjobsrequiresjobrunnerkey",
- "target": "api_server_newserver",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "api_server_test_testdispatchreminderjobsacceptsconfiguredjobrunnerkey",
- "target": "api_server_newserver",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L34",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_onboard",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L80",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_toteaminvites",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L234",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_normalizeclock",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L248",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_firstnonempty",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L268",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_test_testbootstrapresolvesmembershipafteridentitysync",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_test_testbootstrapresolvesmembershipafteridentitysync",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_test_testbootstrapreturnsshellwhenmembershipmissing",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L41",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_test_testbootstrapreturnsshellwhenmembershipmissing",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L42",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_test_testonboardcreatestenantforauthenticateduser",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L63",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_test_testonboardcreatestenantforauthenticateduser",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L64",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_test_testonboardrejectsinvalidslug",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L90",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_test_testonboardrejectsinvalidslug",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L91",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_isdemomode",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L571",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_isdashboardready",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L643",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_refreshbilling",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L646",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_opencheckout",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L670",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_opencheckout",
- "target": "lib_paddle_paddleconfigured",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L676",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_opencheckout",
- "target": "lib_paddle_getpaddle",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L696",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_openbillingportal",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L717",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_handlecreatebooking",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L955",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_handleupdatebooking",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L990",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_handlecancelbooking",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1016",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_handlereschedulebooking",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1029",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_handlesavebrand",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1593",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_handleaddzone",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2524",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_handleaddblockedday",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2541",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_handledeleteblockedday",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2563",
- "weight": 1.0
- },
- {
- "source": "components_widget_builder_resolvemaplocation",
- "target": "lib_map_resolvelocationinput",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L285",
- "weight": 1.0
- }
- ],
- "input_tokens": 0,
- "output_tokens": 0
-}
\ No newline at end of file
diff --git a/graphify-out/.graphify_detect.json b/graphify-out/.graphify_detect.json
deleted file mode 100644
index 99cb16b..0000000
--- a/graphify-out/.graphify_detect.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files": {"code": ["/home/tdvorak/Desktop/PROG+HTML/Bookra/generate_map.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/map.ts", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/cmd/api/main.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/email/templates.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/email/service.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/db/db.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/db/repository.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/config/config_test.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/config/config.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/oauth/google.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/handlers/handlers.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/handlers/admin.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/billing/service.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/billing/service_test.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/auth/service.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/auth/neon.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/auth/service_test.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/cmd/api/main.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/catalog/service.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/httpx/middleware.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/db/repository.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/db/pool.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/domain/models.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/config/config_test.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/config/config.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/notifications/service.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/notifications/email_templates.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/notifications/service_test.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/bookings/service.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/bookings/customer_service.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/bookings/service_test.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/billing/service.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/billing/service_test.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/auth/middleware.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/auth/neon.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/api/server.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/api/server_test.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/tenancy/service.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/tenancy/service_test.go", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/vite.config.ts", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/App.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/main.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/routes/about-route.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/routes/auth-callback-route.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/routes/public-booking-route.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/routes/dashboard-route.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/routes/contact-route.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/routes/home-route.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/routes/not-found-route.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/routes/legal-route.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/routes/booking-manage-route.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/bookra-character.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/index.ts", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/integration-modal.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/location-map.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/shell.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/widget-builder.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/dashboard/icons.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/dashboard/types.ts", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/ui/tooltip.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/ui/input.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/ui/badge.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/ui/select.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/ui/button.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/ui/textarea.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/ui/index.ts", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/ui/card.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/ui/skeleton.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/ui/avatar.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/ui/tabs.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/ui/dialog.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/providers/theme-provider.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/providers/auth-provider.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/providers/i18n-provider.tsx", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/lib/map.ts", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/lib/api-client.ts", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/lib/types.ts", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/lib/paddle.ts", "/home/tdvorak/Desktop/PROG+HTML/Bookra/packages/shared-types/src/index.ts", "/home/tdvorak/Desktop/PROG+HTML/Bookra/packages/api-client/src/index.ts", "/home/tdvorak/Desktop/PROG+HTML/Bookra/packages/api-client/src/generated/types.ts", "/home/tdvorak/Desktop/PROG+HTML/Bookra/packages/api-client/scripts/generate.mjs"], "document": ["/home/tdvorak/Desktop/PROG+HTML/Bookra/project.md", "/home/tdvorak/Desktop/PROG+HTML/Bookra/FRONTEND_ISSUES.md", "/home/tdvorak/Desktop/PROG+HTML/Bookra/prompt.md", "/home/tdvorak/Desktop/PROG+HTML/Bookra/README.md", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/test-emails.html", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/README.md", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/README.md", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/index.html", "/home/tdvorak/Desktop/PROG+HTML/Bookra/docs/ci-cd.md", "/home/tdvorak/Desktop/PROG+HTML/Bookra/docs/superpowers/specs/2026-04-21-paddle-billing-migration-design.md"], "paper": [], "image": ["/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/favicon.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-logo.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/headphones.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/clock.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/walk.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/logo_text_horizontal.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/lookup.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/happy-note.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/like.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/success.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/maintenance.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/coffee.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/sad.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/connection-error.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/flag.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/404.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/announcement.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/sleep.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/educate.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/laptop.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/main.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/forbidden.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/hello.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/angry-bulb.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/logo_text_vertical.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-characters/walk.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-characters/logo_text_horizontal.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-characters/lookup.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-characters/like.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-characters/success.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-characters/announcement.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-characters/sleep.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-characters/laptop.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-characters/main.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-characters/hello.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-characters/logo_text_vertical.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/privacy.png", "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/auth-magic-link-sent.png", "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/bookra-dashboard-check.png", "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/home-mobile.png", "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/home-desktop.png", "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/contact-success.png", "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/dashboard-magic-link.png", "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/terms.png", "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/bookra-home-check.png", "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/booking-mobile.png", "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/booking-confirmed.png", "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/dashboard-map-brno.png", "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/about-desktop.png", "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/pricing-section.png", "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/dashboard-after-magic-link.png", "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/headphones.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/clock.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/walk.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/logo_text_horizontal.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/lookup.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/happy-note.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/like.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/success.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/maintenance.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/coffee.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/sad.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/connection-error.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/flag.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/404.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/announcement.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/sleep.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/educate.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/laptop.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/main.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/forbidden.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/hello.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/angry-bulb.svg", "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/logo_text_vertical.svg"], "video": []}, "total_files": 166, "total_words": 380279, "needs_graph": true, "warning": null, "skipped_sensitive": [], "graphifyignore_patterns": 0}
diff --git a/graphify-out/.graphify_extract.json b/graphify-out/.graphify_extract.json
deleted file mode 100644
index ee60067..0000000
--- a/graphify-out/.graphify_extract.json
+++ /dev/null
@@ -1,19250 +0,0 @@
-{
- "nodes": [
- {
- "id": "generate_map_tsx",
- "label": "generate_map.tsx",
- "file_type": "code",
- "source_file": "generate_map.tsx",
- "source_location": "L1"
- },
- {
- "id": "bookra_generate_map_contactmap",
- "label": "ContactMap()",
- "file_type": "code",
- "source_file": "generate_map.tsx",
- "source_location": "L100"
- },
- {
- "id": "map_ts",
- "label": "map.ts",
- "file_type": "code",
- "source_file": "map.ts",
- "source_location": "L1"
- },
- {
- "id": "bookra_map_parsemapyczurl",
- "label": "parseMapyCzUrl()",
- "file_type": "code",
- "source_file": "map.ts",
- "source_location": "L24"
- },
- {
- "id": "bookra_map_parsegooglemapsurl",
- "label": "parseGoogleMapsUrl()",
- "file_type": "code",
- "source_file": "map.ts",
- "source_location": "L71"
- },
- {
- "id": "bookra_map_parsemapurl",
- "label": "parseMapUrl()",
- "file_type": "code",
- "source_file": "map.ts",
- "source_location": "L149"
- },
- {
- "id": "bookra_map_validatecoordinates",
- "label": "validateCoordinates()",
- "file_type": "code",
- "source_file": "map.ts",
- "source_location": "L178"
- },
- {
- "id": "bookra_map_reversegeocode",
- "label": "reverseGeocode()",
- "file_type": "code",
- "source_file": "map.ts",
- "source_location": "L193"
- },
- {
- "id": "apps_auth_service_cmd_api_main_go",
- "label": "main.go",
- "file_type": "code",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L1"
- },
- {
- "id": "api_main_main",
- "label": "main()",
- "file_type": "code",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L24"
- },
- {
- "id": "api_main_runmigrations",
- "label": "runMigrations()",
- "file_type": "code",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L105"
- },
- {
- "id": "apps_auth_service_internal_email_templates_go",
- "label": "templates.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L1"
- },
- {
- "id": "email_emailtemplate",
- "label": "EmailTemplate",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L27"
- },
- {
- "id": "email_templates_magiclinkemail",
- "label": "MagicLinkEmail()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L33"
- },
- {
- "id": "email_templates_welcomeemail",
- "label": "WelcomeEmail()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L40"
- },
- {
- "id": "email_templates_bookingconfirmationemail",
- "label": "BookingConfirmationEmail()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L47"
- },
- {
- "id": "email_templates_passwordresetemail",
- "label": "PasswordResetEmail()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L54"
- },
- {
- "id": "email_templates_magiclinkemailen",
- "label": "magicLinkEmailEN()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L61"
- },
- {
- "id": "email_templates_magiclinkemailcs",
- "label": "magicLinkEmailCS()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L157"
- },
- {
- "id": "email_templates_welcomeemailen",
- "label": "welcomeEmailEN()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L253"
- },
- {
- "id": "email_templates_welcomeemailcs",
- "label": "welcomeEmailCS()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L335"
- },
- {
- "id": "email_templates_bookingconfirmationen",
- "label": "bookingConfirmationEN()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L417"
- },
- {
- "id": "email_templates_bookingconfirmationcs",
- "label": "bookingConfirmationCS()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L507"
- },
- {
- "id": "email_templates_passwordreseten",
- "label": "passwordResetEN()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L597"
- },
- {
- "id": "email_templates_passwordresetcs",
- "label": "passwordResetCS()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L671"
- },
- {
- "id": "apps_auth_service_internal_email_service_go",
- "label": "service.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L1"
- },
- {
- "id": "email_config",
- "label": "Config",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L11"
- },
- {
- "id": "email_service",
- "label": "Service",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L19"
- },
- {
- "id": "email_service_new",
- "label": "New()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L23"
- },
- {
- "id": "email_service_sendmagiclink",
- "label": ".SendMagicLink()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L28"
- },
- {
- "id": "email_service_sendwelcomeemail",
- "label": ".SendWelcomeEmail()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L34"
- },
- {
- "id": "email_service_sendbookingconfirmation",
- "label": ".SendBookingConfirmation()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L40"
- },
- {
- "id": "email_service_sendpasswordreset",
- "label": ".SendPasswordReset()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L46"
- },
- {
- "id": "email_service_sendtemplate",
- "label": ".sendTemplate()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L52"
- },
- {
- "id": "email_service_send",
- "label": ".send()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L64"
- },
- {
- "id": "apps_auth_service_internal_db_db_go",
- "label": "db.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L1"
- },
- {
- "id": "db_db",
- "label": "DB",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L11"
- },
- {
- "id": "db_db_new",
- "label": "New()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L15"
- },
- {
- "id": "db_db_close",
- "label": ".Close()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L33"
- },
- {
- "id": "db_db_pool",
- "label": ".Pool()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L37"
- },
- {
- "id": "db_db_queryrow",
- "label": ".QueryRow()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L41"
- },
- {
- "id": "db_db_query",
- "label": ".Query()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L45"
- },
- {
- "id": "db_db_exec",
- "label": ".Exec()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L49"
- },
- {
- "id": "db_stats",
- "label": "Stats",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L55"
- },
- {
- "id": "db_db_getstats",
- "label": ".GetStats()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L70"
- },
- {
- "id": "apps_auth_service_internal_db_repository_go",
- "label": "repository.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L1"
- },
- {
- "id": "db_user",
- "label": "User",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L13"
- },
- {
- "id": "db_magiclink",
- "label": "MagicLink",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L26"
- },
- {
- "id": "db_db",
- "label": "DB",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L35"
- },
- {
- "id": "db_db_getuserbyemail",
- "label": ".GetUserByEmail()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L35"
- },
- {
- "id": "db_db_getuserbyid",
- "label": ".GetUserByID()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L63"
- },
- {
- "id": "db_db_getuserbyproviderid",
- "label": ".GetUserByProviderID()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L91"
- },
- {
- "id": "db_db_createuser",
- "label": ".CreateUser()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L118"
- },
- {
- "id": "db_db_updateuser",
- "label": ".UpdateUser()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L138"
- },
- {
- "id": "db_db_updatelastlogin",
- "label": ".UpdateLastLogin()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L152"
- },
- {
- "id": "db_db_createmagiclink",
- "label": ".CreateMagicLink()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L159"
- },
- {
- "id": "db_db_getmagiclink",
- "label": ".GetMagicLink()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L167"
- },
- {
- "id": "db_db_markmagiclinkused",
- "label": ".MarkMagicLinkUsed()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L187"
- },
- {
- "id": "db_db_putkv",
- "label": ".PutKV()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L192"
- },
- {
- "id": "db_db_getkv",
- "label": ".GetKV()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L207"
- },
- {
- "id": "apps_auth_service_internal_config_config_test_go",
- "label": "config_test.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L1"
- },
- {
- "id": "config_config_test_teststripereadinesshelpers",
- "label": "TestStripeReadinessHelpers()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L8"
- },
- {
- "id": "config_config_test_teststripecheckoutreadyrequiressecretandprice",
- "label": "TestStripeCheckoutReadyRequiresSecretAndPrice()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L30"
- },
- {
- "id": "config_config_test_testloaddefaultsauthserviceportto8081",
- "label": "TestLoadDefaultsAuthServicePortTo8081()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L47"
- },
- {
- "id": "apps_auth_service_internal_config_config_go",
- "label": "config.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L1"
- },
- {
- "id": "config_config",
- "label": "Config",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L10"
- },
- {
- "id": "config_config_load",
- "label": "Load()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L33"
- },
- {
- "id": "config_config_getenv",
- "label": "getEnv()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L80"
- },
- {
- "id": "config_config_getenvallowempty",
- "label": "getEnvAllowEmpty()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L87"
- },
- {
- "id": "config_config_stripesecretconfigured",
- "label": ".StripeSecretConfigured()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L94"
- },
- {
- "id": "config_config_stripewebhookconfigured",
- "label": ".StripeWebhookConfigured()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L98"
- },
- {
- "id": "config_config_stripehasanypriceconfigured",
- "label": ".StripeHasAnyPriceConfigured()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L102"
- },
- {
- "id": "config_config_stripecheckoutready",
- "label": ".StripeCheckoutReady()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L111"
- },
- {
- "id": "apps_auth_service_internal_oauth_google_go",
- "label": "google.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L1"
- },
- {
- "id": "oauth_googleuser",
- "label": "GoogleUser",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L15"
- },
- {
- "id": "oauth_googleprovider",
- "label": "GoogleProvider",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L23"
- },
- {
- "id": "oauth_google_newgoogleprovider",
- "label": "NewGoogleProvider()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L27"
- },
- {
- "id": "oauth_googleprovider_enabled",
- "label": ".Enabled()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L52"
- },
- {
- "id": "oauth_googleprovider_getauthurl",
- "label": ".GetAuthURL()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L56"
- },
- {
- "id": "oauth_googleprovider_exchangecode",
- "label": ".ExchangeCode()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L60"
- },
- {
- "id": "oauth_googleprovider_parseuser",
- "label": ".ParseUser()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L86"
- },
- {
- "id": "apps_auth_service_internal_handlers_handlers_go",
- "label": "handlers.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L1"
- },
- {
- "id": "handlers_handler",
- "label": "Handler",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L24"
- },
- {
- "id": "handlers_loginrequest",
- "label": "LoginRequest",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L33"
- },
- {
- "id": "handlers_verifyrequest",
- "label": "VerifyRequest",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L38"
- },
- {
- "id": "handlers_refreshrequest",
- "label": "RefreshRequest",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L42"
- },
- {
- "id": "handlers_passwordregisterrequest",
- "label": "PasswordRegisterRequest",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L46"
- },
- {
- "id": "handlers_passwordloginrequest",
- "label": "PasswordLoginRequest",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L52"
- },
- {
- "id": "handlers_checkoutrequest",
- "label": "CheckoutRequest",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L57"
- },
- {
- "id": "handlers_handlers_new",
- "label": "New()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L62"
- },
- {
- "id": "handlers_handler_registerroutes",
- "label": ".RegisterRoutes()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L77"
- },
- {
- "id": "handlers_handler_sendmagiclink",
- "label": ".SendMagicLink()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L109"
- },
- {
- "id": "handlers_handlers_detectlocale",
- "label": "detectLocale()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L132"
- },
- {
- "id": "handlers_handler_verifymagiclink",
- "label": ".VerifyMagicLink()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L141"
- },
- {
- "id": "handlers_handler_registerwithpassword",
- "label": ".RegisterWithPassword()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L157"
- },
- {
- "id": "handlers_handler_loginwithpassword",
- "label": ".LoginWithPassword()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L177"
- },
- {
- "id": "handlers_handler_refreshtoken",
- "label": ".RefreshToken()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L193"
- },
- {
- "id": "handlers_handler_getme",
- "label": ".GetMe()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L221"
- },
- {
- "id": "handlers_handler_logout",
- "label": ".Logout()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L237"
- },
- {
- "id": "handlers_handler_listproviders",
- "label": ".ListProviders()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L241"
- },
- {
- "id": "handlers_handler_googleauth",
- "label": ".GoogleAuth()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L260"
- },
- {
- "id": "handlers_handler_googlecallback",
- "label": ".GoogleCallback()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L273"
- },
- {
- "id": "handlers_handler_getsubscription",
- "label": ".GetSubscription()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L314"
- },
- {
- "id": "handlers_handler_createcheckoutsession",
- "label": ".CreateCheckoutSession()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L329"
- },
- {
- "id": "handlers_handler_refreshsubscription",
- "label": ".RefreshSubscription()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L361"
- },
- {
- "id": "handlers_handler_listplans",
- "label": ".ListPlans()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L381"
- },
- {
- "id": "handlers_handler_stripewebhook",
- "label": ".StripeWebhook()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L414"
- },
- {
- "id": "handlers_handler_requireauth",
- "label": ".RequireAuth()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L435"
- },
- {
- "id": "handlers_handler_verifybearertoken",
- "label": ".verifyBearerToken()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L462"
- },
- {
- "id": "handlers_handler_claimsfromcontext",
- "label": ".claimsFromContext()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L472"
- },
- {
- "id": "handlers_handlers_generatestate",
- "label": "generateState()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L488"
- },
- {
- "id": "handlers_handlers_oauthcookiesecure",
- "label": "oauthCookieSecure()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L496"
- },
- {
- "id": "handlers_handlers_timeoutmiddleware",
- "label": "timeoutMiddleware()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L506"
- },
- {
- "id": "apps_auth_service_internal_handlers_admin_go",
- "label": "admin.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L1"
- },
- {
- "id": "handlers_admindashboard",
- "label": "AdminDashboard",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L13"
- },
- {
- "id": "handlers_admin_newadmindashboard",
- "label": "NewAdminDashboard()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L18"
- },
- {
- "id": "handlers_admindashboard_registerroutes",
- "label": ".RegisterRoutes()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L23"
- },
- {
- "id": "handlers_admindashboard_getconfig",
- "label": ".GetConfig()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L34"
- },
- {
- "id": "handlers_admindashboard_getprices",
- "label": ".GetPrices()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L54"
- },
- {
- "id": "handlers_admindashboard_getstats",
- "label": ".GetStats()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L108"
- },
- {
- "id": "handlers_admindashboard_renderdashboard",
- "label": ".RenderDashboard()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L124"
- },
- {
- "id": "apps_auth_service_internal_billing_service_go",
- "label": "service.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L1"
- },
- {
- "id": "billing_service",
- "label": "Service",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L43"
- },
- {
- "id": "billing_checkoutsession",
- "label": "CheckoutSession",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L48"
- },
- {
- "id": "billing_subscriptionsnapshot",
- "label": "SubscriptionSnapshot",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L52"
- },
- {
- "id": "billing_paymentmethod",
- "label": "PaymentMethod",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L68"
- },
- {
- "id": "billing_useridentity",
- "label": "UserIdentity",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L73"
- },
- {
- "id": "billing_usercustomermapping",
- "label": "userCustomerMapping",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L79"
- },
- {
- "id": "billing_service_newservice",
- "label": "NewService()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L84"
- },
- {
- "id": "billing_service_getsubscription",
- "label": ".GetSubscription()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L88"
- },
- {
- "id": "billing_service_createcheckoutsession",
- "label": ".CreateCheckoutSession()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L112"
- },
- {
- "id": "billing_service_refresh",
- "label": ".Refresh()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L161"
- },
- {
- "id": "billing_service_handlewebhook",
- "label": ".HandleWebhook()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L175"
- },
- {
- "id": "billing_service_ensurecustomer",
- "label": ".ensureCustomer()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L203"
- },
- {
- "id": "billing_service_syncstripedatatokv",
- "label": ".syncStripeDataToKV()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L234"
- },
- {
- "id": "billing_service_storecustomermapping",
- "label": ".storeCustomerMapping()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L290"
- },
- {
- "id": "billing_service_getcustomermapping",
- "label": ".getCustomerMapping()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L298"
- },
- {
- "id": "billing_service_getcustomersnapshot",
- "label": ".getCustomerSnapshot()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L310"
- },
- {
- "id": "billing_service_nonesnapshot",
- "label": ".noneSnapshot()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L319"
- },
- {
- "id": "billing_service_priceforplan",
- "label": ".priceForPlan()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L327"
- },
- {
- "id": "billing_service_defaultplancode",
- "label": ".defaultPlanCode()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L360"
- },
- {
- "id": "billing_service_plancodeforprice",
- "label": ".planCodeForPrice()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L372"
- },
- {
- "id": "billing_service_hasconfiguredprices",
- "label": ".hasConfiguredPrices()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L381"
- },
- {
- "id": "billing_service_checkoutavailableforplan",
- "label": ".checkoutAvailableForPlan()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L385"
- },
- {
- "id": "billing_service_normalizeplancode",
- "label": "normalizePlanCode()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L396"
- },
- {
- "id": "billing_service_normalizecurrency",
- "label": "normalizeCurrency()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L407"
- },
- {
- "id": "billing_service_usercustomerkey",
- "label": "userCustomerKey()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L416"
- },
- {
- "id": "billing_service_customersnapshotkey",
- "label": "customerSnapshotKey()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L420"
- },
- {
- "id": "billing_service_unixptr",
- "label": "unixPtr()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L424"
- },
- {
- "id": "billing_service_subscriptionrank",
- "label": "subscriptionRank()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L432"
- },
- {
- "id": "billing_service_extractcustomerid",
- "label": "extractCustomerID()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L453"
- },
- {
- "id": "apps_auth_service_internal_billing_service_test_go",
- "label": "service_test.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L1"
- },
- {
- "id": "billing_service_test_testpriceforplanusesconfiguredplancodesonly",
- "label": "TestPriceForPlanUsesConfiguredPlanCodesOnly()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L10"
- },
- {
- "id": "billing_service_test_testkvkeyshape",
- "label": "TestKVKeyShape()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L40"
- },
- {
- "id": "billing_service_test_testcheckoutavailableforplanrequiressecret",
- "label": "TestCheckoutAvailableForPlanRequiresSecret()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L49"
- },
- {
- "id": "billing_service_test_testcheckoutavailableforplanrequiresconfiguredplan",
- "label": "TestCheckoutAvailableForPlanRequiresConfiguredPlan()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L61"
- },
- {
- "id": "apps_auth_service_internal_auth_service_go",
- "label": "service.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L1"
- },
- {
- "id": "auth_service",
- "label": "Service",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L23"
- },
- {
- "id": "auth_tokenpair",
- "label": "TokenPair",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L30"
- },
- {
- "id": "auth_claims",
- "label": "Claims",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L37"
- },
- {
- "id": "auth_service_newservice",
- "label": "NewService()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L46"
- },
- {
- "id": "auth_service_generatemagiclink",
- "label": ".GenerateMagicLink()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L55"
- },
- {
- "id": "auth_service_verifymagiclink",
- "label": ".VerifyMagicLink()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L93"
- },
- {
- "id": "auth_service_oauthloginorcreate",
- "label": ".OAuthLoginOrCreate()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L127"
- },
- {
- "id": "auth_service_registerwithpassword",
- "label": ".RegisterWithPassword()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L170"
- },
- {
- "id": "auth_service_loginwithpassword",
- "label": ".LoginWithPassword()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L201"
- },
- {
- "id": "auth_service_generatetokens",
- "label": ".generateTokens()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L221"
- },
- {
- "id": "auth_service_generatetokensat",
- "label": ".generateTokensAt()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L226"
- },
- {
- "id": "auth_service_verifytoken",
- "label": ".VerifyToken()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L250"
- },
- {
- "id": "auth_service_verifyrefreshtoken",
- "label": ".VerifyRefreshToken()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L254"
- },
- {
- "id": "auth_service_refreshtokens",
- "label": ".RefreshTokens()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L258"
- },
- {
- "id": "auth_service_verifytokenoftype",
- "label": ".verifyTokenOfType()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L286"
- },
- {
- "id": "auth_service_signtoken",
- "label": ".signToken()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L308"
- },
- {
- "id": "auth_service_generaterandomtoken",
- "label": "generateRandomToken()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L329"
- },
- {
- "id": "apps_auth_service_internal_auth_neon_go",
- "label": "neon.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L1"
- },
- {
- "id": "auth_neonverifier",
- "label": "NeonVerifier",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L15"
- },
- {
- "id": "auth_neon_newneonverifier",
- "label": "NewNeonVerifier()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L22"
- },
- {
- "id": "auth_neonverifier_enabled",
- "label": ".Enabled()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L42"
- },
- {
- "id": "auth_neonverifier_close",
- "label": ".Close()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L46"
- },
- {
- "id": "auth_neonverifier_verify",
- "label": ".Verify()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L52"
- },
- {
- "id": "apps_auth_service_internal_auth_service_test_go",
- "label": "service_test.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L1"
- },
- {
- "id": "auth_service_test_testgeneratetokensproducesverifiableaccessandrefreshtokens",
- "label": "TestGenerateTokensProducesVerifiableAccessAndRefreshTokens()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L13"
- },
- {
- "id": "auth_service_test_testrefreshtokensreturnsrotatedpair",
- "label": "TestRefreshTokensReturnsRotatedPair()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L51"
- },
- {
- "id": "auth_service_test_testrefreshtokensrejectsinvalidtoken",
- "label": "TestRefreshTokensRejectsInvalidToken()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L82"
- },
- {
- "id": "apps_backend_cmd_api_main_go",
- "label": "main.go",
- "file_type": "code",
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L1"
- },
- {
- "id": "api_main_main",
- "label": "main()",
- "file_type": "code",
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L16"
- },
- {
- "id": "apps_backend_internal_catalog_service_go",
- "label": "service.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L1"
- },
- {
- "id": "catalog_service",
- "label": "Service",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L22"
- },
- {
- "id": "catalog_service_newservice",
- "label": "NewService()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L26"
- },
- {
- "id": "catalog_service_listlocations",
- "label": ".ListLocations()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L34"
- },
- {
- "id": "catalog_service_createlocation",
- "label": ".CreateLocation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L60"
- },
- {
- "id": "catalog_service_updatelocation",
- "label": ".UpdateLocation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L88"
- },
- {
- "id": "catalog_service_deletelocation",
- "label": ".DeleteLocation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L124"
- },
- {
- "id": "catalog_service_listblockeddays",
- "label": ".ListBlockedDays()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L145"
- },
- {
- "id": "catalog_service_createblockedday",
- "label": ".CreateBlockedDay()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L171"
- },
- {
- "id": "catalog_service_updateblockedday",
- "label": ".UpdateBlockedDay()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L207"
- },
- {
- "id": "catalog_service_deleteblockedday",
- "label": ".DeleteBlockedDay()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L254"
- },
- {
- "id": "catalog_service_listcustomers",
- "label": ".ListCustomers()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L284"
- },
- {
- "id": "catalog_service_createcustomer",
- "label": ".CreateCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L319"
- },
- {
- "id": "catalog_service_updatecustomer",
- "label": ".UpdateCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L356"
- },
- {
- "id": "catalog_service_deletecustomer",
- "label": ".DeleteCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L410"
- },
- {
- "id": "catalog_service_listworkinghours",
- "label": ".ListWorkingHours()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L431"
- },
- {
- "id": "catalog_service_updateworkinghours",
- "label": ".UpdateWorkingHours()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L454"
- },
- {
- "id": "apps_backend_internal_httpx_middleware_go",
- "label": "middleware.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L1"
- },
- {
- "id": "httpx_middleware_securityheaders",
- "label": "SecurityHeaders()",
- "file_type": "code",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L12"
- },
- {
- "id": "httpx_visitor",
- "label": "visitor",
- "file_type": "code",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L22"
- },
- {
- "id": "httpx_ratelimiter",
- "label": "RateLimiter",
- "file_type": "code",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L27"
- },
- {
- "id": "httpx_middleware_newratelimiter",
- "label": "NewRateLimiter()",
- "file_type": "code",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L34"
- },
- {
- "id": "httpx_ratelimiter_middleware",
- "label": ".Middleware()",
- "file_type": "code",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L42"
- },
- {
- "id": "httpx_ratelimiter_getvisitor",
- "label": ".getVisitor()",
- "file_type": "code",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L59"
- },
- {
- "id": "httpx_ratelimiter_cleanuploop",
- "label": ".cleanupLoop()",
- "file_type": "code",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L77"
- },
- {
- "id": "apps_backend_internal_db_repository_go",
- "label": "repository.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1"
- },
- {
- "id": "db_repository",
- "label": "Repository",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L16"
- },
- {
- "id": "db_tenantrecord",
- "label": "TenantRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L74"
- },
- {
- "id": "db_tenantmembershiprecord",
- "label": "TenantMembershipRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L88"
- },
- {
- "id": "db_createtenantforuserparams",
- "label": "CreateTenantForUserParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L94"
- },
- {
- "id": "db_brandprofilerecord",
- "label": "BrandProfileRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L115"
- },
- {
- "id": "db_availabilityblockrecord",
- "label": "AvailabilityBlockRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L124"
- },
- {
- "id": "db_teaminviterecord",
- "label": "TeamInviteRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L131"
- },
- {
- "id": "db_servicerecord",
- "label": "ServiceRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L136"
- },
- {
- "id": "db_availabilityrulerecord",
- "label": "AvailabilityRuleRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L146"
- },
- {
- "id": "db_classsessionrecord",
- "label": "ClassSessionRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L155"
- },
- {
- "id": "db_bookingrecord",
- "label": "BookingRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L166"
- },
- {
- "id": "db_createbookingparams",
- "label": "CreateBookingParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L181"
- },
- {
- "id": "db_createdbooking",
- "label": "CreatedBooking",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L197"
- },
- {
- "id": "db_waitlistentryparams",
- "label": "WaitlistEntryParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L203"
- },
- {
- "id": "db_dashboardmetrics",
- "label": "DashboardMetrics",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L211"
- },
- {
- "id": "db_reminderjobparams",
- "label": "ReminderJobParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L217"
- },
- {
- "id": "db_reminderjobrecord",
- "label": "ReminderJobRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L224"
- },
- {
- "id": "db_notificationdeliverylogparams",
- "label": "NotificationDeliveryLogParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L240"
- },
- {
- "id": "db_billingsnapshotrecord",
- "label": "BillingSnapshotRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L251"
- },
- {
- "id": "db_locationrecord",
- "label": "LocationRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L269"
- },
- {
- "id": "db_createlocationparams",
- "label": "CreateLocationParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L277"
- },
- {
- "id": "db_updatelocationparams",
- "label": "UpdateLocationParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L283"
- },
- {
- "id": "db_blockeddayrecord",
- "label": "BlockedDayRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L289"
- },
- {
- "id": "db_createblockeddayparams",
- "label": "CreateBlockedDayParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L300"
- },
- {
- "id": "db_updateblockeddayparams",
- "label": "UpdateBlockedDayParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L309"
- },
- {
- "id": "db_customerrecord",
- "label": "CustomerRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L317"
- },
- {
- "id": "db_createcustomerparams",
- "label": "CreateCustomerParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L328"
- },
- {
- "id": "db_updatecustomerparams",
- "label": "UpdateCustomerParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L337"
- },
- {
- "id": "db_workinghoursrecord",
- "label": "WorkingHoursRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L346"
- },
- {
- "id": "db_updateworkinghoursparams",
- "label": "UpdateWorkingHoursParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L354"
- },
- {
- "id": "db_pgrepository",
- "label": "PGRepository",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L360"
- },
- {
- "id": "db_repository_newrepository",
- "label": "NewRepository()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L364"
- },
- {
- "id": "db_pgrepository_gettenantbyslug",
- "label": ".GetTenantBySlug()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L374"
- },
- {
- "id": "db_pgrepository_gettenantbyid",
- "label": ".GetTenantByID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L399"
- },
- {
- "id": "db_pgrepository_gettenantbybillingcustomerid",
- "label": ".GetTenantByBillingCustomerID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L424"
- },
- {
- "id": "db_pgrepository_ensureuseridentity",
- "label": ".EnsureUserIdentity()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L449"
- },
- {
- "id": "db_pgrepository_createtenantforuser",
- "label": ".CreateTenantForUser()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L461"
- },
- {
- "id": "db_pgrepository_getbrandprofile",
- "label": ".GetBrandProfile()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L603"
- },
- {
- "id": "db_pgrepository_gettenantmembershipbyuserid",
- "label": ".GetTenantMembershipByUserID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L620"
- },
- {
- "id": "db_pgrepository_listservicesbytenant",
- "label": ".ListServicesByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L652"
- },
- {
- "id": "db_pgrepository_listavailabilityrulesbytenant",
- "label": ".ListAvailabilityRulesByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L683"
- },
- {
- "id": "db_pgrepository_listclasssessionsbytenant",
- "label": ".ListClassSessionsByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L713"
- },
- {
- "id": "db_pgrepository_listbookingsbytenantbetween",
- "label": ".ListBookingsByTenantBetween()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L747"
- },
- {
- "id": "db_pgrepository_createbooking",
- "label": ".CreateBooking()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L784"
- },
- {
- "id": "db_pgrepository_appendwaitlistentry",
- "label": ".AppendWaitlistEntry()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L812"
- },
- {
- "id": "db_pgrepository_createreminderjob",
- "label": ".CreateReminderJob()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L820"
- },
- {
- "id": "db_pgrepository_listduereminderjobs",
- "label": ".ListDueReminderJobs()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L828"
- },
- {
- "id": "db_pgrepository_markreminderjobdispatched",
- "label": ".MarkReminderJobDispatched()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L870"
- },
- {
- "id": "db_pgrepository_createnotificationdeliverylog",
- "label": ".CreateNotificationDeliveryLog()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L879"
- },
- {
- "id": "db_pgrepository_getdashboardmetrics",
- "label": ".GetDashboardMetrics()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L891"
- },
- {
- "id": "db_pgrepository_getsubscriptionsnapshot",
- "label": ".GetSubscriptionSnapshot()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L914"
- },
- {
- "id": "db_pgrepository_upsertsubscriptionsnapshot",
- "label": ".UpsertSubscriptionSnapshot()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L941"
- },
- {
- "id": "db_pgrepository_updatetenantbillingcustomerid",
- "label": ".UpdateTenantBillingCustomerID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L969"
- },
- {
- "id": "db_pgrepository_updatetenantbillingstate",
- "label": ".UpdateTenantBillingState()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L978"
- },
- {
- "id": "db_pgrepository_recordbillingevent",
- "label": ".RecordBillingEvent()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L987"
- },
- {
- "id": "db_pgrepository_listlocationsbytenant",
- "label": ".ListLocationsByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1003"
- },
- {
- "id": "db_pgrepository_getlocationbyid",
- "label": ".GetLocationByID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1026"
- },
- {
- "id": "db_pgrepository_createlocation",
- "label": ".CreateLocation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1036"
- },
- {
- "id": "db_pgrepository_updatelocation",
- "label": ".UpdateLocation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1046"
- },
- {
- "id": "db_pgrepository_deletelocation",
- "label": ".DeleteLocation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1059"
- },
- {
- "id": "db_pgrepository_listblockeddaysbytenant",
- "label": ".ListBlockedDaysByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1068"
- },
- {
- "id": "db_pgrepository_createblockedday",
- "label": ".CreateBlockedDay()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1091"
- },
- {
- "id": "db_pgrepository_updateblockedday",
- "label": ".UpdateBlockedDay()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1101"
- },
- {
- "id": "db_pgrepository_deleteblockedday",
- "label": ".DeleteBlockedDay()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1115"
- },
- {
- "id": "db_pgrepository_listcustomersbytenant",
- "label": ".ListCustomersByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1124"
- },
- {
- "id": "db_pgrepository_getcustomerbyid",
- "label": ".GetCustomerByID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1148"
- },
- {
- "id": "db_pgrepository_getcustomerbyemail",
- "label": ".GetCustomerByEmail()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1158"
- },
- {
- "id": "db_pgrepository_createcustomer",
- "label": ".CreateCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1168"
- },
- {
- "id": "db_pgrepository_updatecustomer",
- "label": ".UpdateCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1178"
- },
- {
- "id": "db_pgrepository_deletecustomer",
- "label": ".DeleteCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1193"
- },
- {
- "id": "db_pgrepository_getcustomerbookingscount",
- "label": ".GetCustomerBookingsCount()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1198"
- },
- {
- "id": "db_pgrepository_getcustomerlastbooking",
- "label": ".GetCustomerLastBooking()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1207"
- },
- {
- "id": "db_pgrepository_getbookingbyreference",
- "label": ".GetBookingByReference()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1220"
- },
- {
- "id": "db_pgrepository_updatebookingstatus",
- "label": ".UpdateBookingStatus()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1232"
- },
- {
- "id": "db_pgrepository_reschedulebooking",
- "label": ".RescheduleBooking()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1239"
- },
- {
- "id": "db_pgrepository_listworkinghoursbytenant",
- "label": ".ListWorkingHoursByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1250"
- },
- {
- "id": "db_pgrepository_updateworkinghours",
- "label": ".UpdateWorkingHours()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1273"
- },
- {
- "id": "db_memoryrepository",
- "label": "MemoryRepository",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1283"
- },
- {
- "id": "db_repository_newmemoryrepository",
- "label": "NewMemoryRepository()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1302"
- },
- {
- "id": "db_memoryrepository_gettenantbyslug",
- "label": ".GetTenantBySlug()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1411"
- },
- {
- "id": "db_memoryrepository_gettenantbyid",
- "label": ".GetTenantByID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1418"
- },
- {
- "id": "db_memoryrepository_gettenantbybillingcustomerid",
- "label": ".GetTenantByBillingCustomerID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1425"
- },
- {
- "id": "db_memoryrepository_ensureuseridentity",
- "label": ".EnsureUserIdentity()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1432"
- },
- {
- "id": "db_memoryrepository_createtenantforuser",
- "label": ".CreateTenantForUser()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1442"
- },
- {
- "id": "db_memoryrepository_gettenantmembershipbyuserid",
- "label": ".GetTenantMembershipByUserID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1503"
- },
- {
- "id": "db_memoryrepository_getbrandprofile",
- "label": ".GetBrandProfile()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1513"
- },
- {
- "id": "db_memoryrepository_listservicesbytenant",
- "label": ".ListServicesByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1523"
- },
- {
- "id": "db_memoryrepository_listavailabilityrulesbytenant",
- "label": ".ListAvailabilityRulesByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1530"
- },
- {
- "id": "db_memoryrepository_listclasssessionsbytenant",
- "label": ".ListClassSessionsByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1537"
- },
- {
- "id": "db_memoryrepository_listbookingsbytenantbetween",
- "label": ".ListBookingsByTenantBetween()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1555"
- },
- {
- "id": "db_memoryrepository_createbooking",
- "label": ".CreateBooking()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1569"
- },
- {
- "id": "db_memoryrepository_appendwaitlistentry",
- "label": ".AppendWaitlistEntry()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1592"
- },
- {
- "id": "db_memoryrepository_createreminderjob",
- "label": ".CreateReminderJob()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1597"
- },
- {
- "id": "db_memoryrepository_listduereminderjobs",
- "label": ".ListDueReminderJobs()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1629"
- },
- {
- "id": "db_memoryrepository_markreminderjobdispatched",
- "label": ".MarkReminderJobDispatched()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1643"
- },
- {
- "id": "db_memoryrepository_createnotificationdeliverylog",
- "label": ".CreateNotificationDeliveryLog()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1653"
- },
- {
- "id": "db_memoryrepository_getdashboardmetrics",
- "label": ".GetDashboardMetrics()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1658"
- },
- {
- "id": "db_memoryrepository_getsubscriptionsnapshot",
- "label": ".GetSubscriptionSnapshot()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1683"
- },
- {
- "id": "db_memoryrepository_upsertsubscriptionsnapshot",
- "label": ".UpsertSubscriptionSnapshot()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1690"
- },
- {
- "id": "db_memoryrepository_updatetenantbillingcustomerid",
- "label": ".UpdateTenantBillingCustomerID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1695"
- },
- {
- "id": "db_memoryrepository_updatetenantbillingstate",
- "label": ".UpdateTenantBillingState()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1708"
- },
- {
- "id": "db_memoryrepository_recordbillingevent",
- "label": ".RecordBillingEvent()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1725"
- },
- {
- "id": "db_memoryrepository_listlocationsbytenant",
- "label": ".ListLocationsByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1744"
- },
- {
- "id": "db_memoryrepository_getlocationbyid",
- "label": ".GetLocationByID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1751"
- },
- {
- "id": "db_memoryrepository_createlocation",
- "label": ".CreateLocation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1760"
- },
- {
- "id": "db_memoryrepository_updatelocation",
- "label": ".UpdateLocation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1772"
- },
- {
- "id": "db_memoryrepository_deletelocation",
- "label": ".DeleteLocation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1787"
- },
- {
- "id": "db_memoryrepository_listblockeddaysbytenant",
- "label": ".ListBlockedDaysByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1801"
- },
- {
- "id": "db_memoryrepository_createblockedday",
- "label": ".CreateBlockedDay()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1814"
- },
- {
- "id": "db_memoryrepository_updateblockedday",
- "label": ".UpdateBlockedDay()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1829"
- },
- {
- "id": "db_memoryrepository_deleteblockedday",
- "label": ".DeleteBlockedDay()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1850"
- },
- {
- "id": "db_memoryrepository_listcustomersbytenant",
- "label": ".ListCustomersByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1864"
- },
- {
- "id": "db_memoryrepository_getcustomerbyid",
- "label": ".GetCustomerByID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1879"
- },
- {
- "id": "db_memoryrepository_getcustomerbyemail",
- "label": ".GetCustomerByEmail()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1888"
- },
- {
- "id": "db_memoryrepository_createcustomer",
- "label": ".CreateCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1897"
- },
- {
- "id": "db_memoryrepository_updatecustomer",
- "label": ".UpdateCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1912"
- },
- {
- "id": "db_memoryrepository_deletecustomer",
- "label": ".DeleteCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1936"
- },
- {
- "id": "db_memoryrepository_getcustomerbookingscount",
- "label": ".GetCustomerBookingsCount()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1946"
- },
- {
- "id": "db_memoryrepository_getcustomerlastbooking",
- "label": ".GetCustomerLastBooking()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1958"
- },
- {
- "id": "db_memoryrepository_getbookingbyreference",
- "label": ".GetBookingByReference()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1984"
- },
- {
- "id": "db_memoryrepository_updatebookingstatus",
- "label": ".UpdateBookingStatus()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1993"
- },
- {
- "id": "db_memoryrepository_reschedulebooking",
- "label": ".RescheduleBooking()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2003"
- },
- {
- "id": "db_memoryrepository_listworkinghoursbytenant",
- "label": ".ListWorkingHoursByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2018"
- },
- {
- "id": "db_memoryrepository_updateworkinghours",
- "label": ".UpdateWorkingHours()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2025"
- },
- {
- "id": "db_repository_reference",
- "label": "Reference()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2043"
- },
- {
- "id": "db_repository_stringptr",
- "label": "stringPtr()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2047"
- },
- {
- "id": "db_repository_maxint",
- "label": "maxInt()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2051"
- },
- {
- "id": "db_repository_firstnonempty",
- "label": "firstNonEmpty()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2058"
- },
- {
- "id": "db_repository_defaultavailabilityblocks",
- "label": "defaultAvailabilityBlocks()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2067"
- },
- {
- "id": "apps_backend_internal_db_pool_go",
- "label": "pool.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L1"
- },
- {
- "id": "db_pools",
- "label": "Pools",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L12"
- },
- {
- "id": "db_pool_newpools",
- "label": "NewPools()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L17"
- },
- {
- "id": "db_pools_close",
- "label": ".Close()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L39"
- },
- {
- "id": "db_pools_databaseconfigured",
- "label": ".DatabaseConfigured()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L48"
- },
- {
- "id": "db_pool_connect",
- "label": "connect()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L52"
- },
- {
- "id": "apps_backend_internal_domain_models_go",
- "label": "models.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L1"
- },
- {
- "id": "domain_principal",
- "label": "Principal",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L5"
- },
- {
- "id": "domain_dashboardkpi",
- "label": "DashboardKPI",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L12"
- },
- {
- "id": "domain_upcomingbooking",
- "label": "UpcomingBooking",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L18"
- },
- {
- "id": "domain_widgetsnippet",
- "label": "WidgetSnippet",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L28"
- },
- {
- "id": "domain_trackingstatus",
- "label": "TrackingStatus",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L33"
- },
- {
- "id": "domain_dashboardsummary",
- "label": "DashboardSummary",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L40"
- },
- {
- "id": "domain_brandprofile",
- "label": "BrandProfile",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L54"
- },
- {
- "id": "domain_tenantbootstrap",
- "label": "TenantBootstrap",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L61"
- },
- {
- "id": "domain_teaminviterequest",
- "label": "TeamInviteRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L74"
- },
- {
- "id": "domain_availabilityblockrequest",
- "label": "AvailabilityBlockRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L79"
- },
- {
- "id": "domain_bookingdefaultsrequest",
- "label": "BookingDefaultsRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L86"
- },
- {
- "id": "domain_onboardtenantrequest",
- "label": "OnboardTenantRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L94"
- },
- {
- "id": "domain_timeslot",
- "label": "TimeSlot",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L107"
- },
- {
- "id": "domain_publicavailability",
- "label": "PublicAvailability",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L119"
- },
- {
- "id": "domain_createbookingrequest",
- "label": "CreateBookingRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L126"
- },
- {
- "id": "domain_createbookingresponse",
- "label": "CreateBookingResponse",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L140"
- },
- {
- "id": "domain_planentitlements",
- "label": "PlanEntitlements",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L146"
- },
- {
- "id": "domain_plandisplayprice",
- "label": "PlanDisplayPrice",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L155"
- },
- {
- "id": "domain_subscriptionsnapshot",
- "label": "SubscriptionSnapshot",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L161"
- },
- {
- "id": "domain_checkoutsessionrequest",
- "label": "CheckoutSessionRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L184"
- },
- {
- "id": "domain_checkoutlaunchresponse",
- "label": "CheckoutLaunchResponse",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L189"
- },
- {
- "id": "domain_portalsessionresponse",
- "label": "PortalSessionResponse",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L198"
- },
- {
- "id": "domain_dispatchreminderjobsrequest",
- "label": "DispatchReminderJobsRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L202"
- },
- {
- "id": "domain_dispatchreminderjobsresponse",
- "label": "DispatchReminderJobsResponse",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L206"
- },
- {
- "id": "domain_location",
- "label": "Location",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L216"
- },
- {
- "id": "domain_createlocationrequest",
- "label": "CreateLocationRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L226"
- },
- {
- "id": "domain_updatelocationrequest",
- "label": "UpdateLocationRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L232"
- },
- {
- "id": "domain_blockedday",
- "label": "BlockedDay",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L242"
- },
- {
- "id": "domain_createblockeddayrequest",
- "label": "CreateBlockedDayRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L252"
- },
- {
- "id": "domain_updateblockeddayrequest",
- "label": "UpdateBlockedDayRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L259"
- },
- {
- "id": "domain_customer",
- "label": "Customer",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L268"
- },
- {
- "id": "domain_createcustomerrequest",
- "label": "CreateCustomerRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L281"
- },
- {
- "id": "domain_updatecustomerrequest",
- "label": "UpdateCustomerRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L289"
- },
- {
- "id": "domain_customerbookingview",
- "label": "CustomerBookingView",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L301"
- },
- {
- "id": "domain_reschedulebookingrequest",
- "label": "RescheduleBookingRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L314"
- },
- {
- "id": "domain_cancelbookingrequest",
- "label": "CancelBookingRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L320"
- },
- {
- "id": "domain_workinghours",
- "label": "WorkingHours",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L328"
- },
- {
- "id": "domain_updateworkinghoursrequest",
- "label": "UpdateWorkingHoursRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L335"
- },
- {
- "id": "domain_emailtemplate",
- "label": "EmailTemplate",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L345"
- },
- {
- "id": "domain_sendemailrequest",
- "label": "SendEmailRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L355"
- },
- {
- "id": "domain_emailnotification",
- "label": "EmailNotification",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L362"
- },
- {
- "id": "apps_backend_internal_config_config_test_go",
- "label": "config_test.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config_test.go",
- "source_location": "L1"
- },
- {
- "id": "config_config_test_testpaddlecheckoutconfigured",
- "label": "TestPaddleCheckoutConfigured()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config_test.go",
- "source_location": "L5"
- },
- {
- "id": "config_config_test_testpaddlecheckoutconfiguredrequireswebhook",
- "label": "TestPaddleCheckoutConfiguredRequiresWebhook()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config_test.go",
- "source_location": "L21"
- },
- {
- "id": "apps_backend_internal_config_config_go",
- "label": "config.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L1"
- },
- {
- "id": "config_config",
- "label": "Config",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L10"
- },
- {
- "id": "config_config_load",
- "label": "Load()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L34"
- },
- {
- "id": "config_config_validateruntimerequirements",
- "label": ".validateRuntimeRequirements()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L69"
- },
- {
- "id": "config_config_paddleconfigured",
- "label": ".PaddleConfigured()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L106"
- },
- {
- "id": "config_config_paddlewebhookconfigured",
- "label": ".PaddleWebhookConfigured()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L110"
- },
- {
- "id": "config_config_paddlecheckoutconfigured",
- "label": ".PaddleCheckoutConfigured()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L114"
- },
- {
- "id": "config_config_paddlepricematrixfromenv",
- "label": "paddlePriceMatrixFromEnv()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L119"
- },
- {
- "id": "config_config_normalizepaddleenvironment",
- "label": "normalizePaddleEnvironment()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L133"
- },
- {
- "id": "config_config_normalizeplancode",
- "label": "normalizePlanCode()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L142"
- },
- {
- "id": "config_config_valueordefault",
- "label": "valueOrDefault()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L153"
- },
- {
- "id": "config_config_boolfromenv",
- "label": "boolFromEnv()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L160"
- },
- {
- "id": "config_config_uniquestrings",
- "label": "uniqueStrings()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L169"
- },
- {
- "id": "apps_backend_internal_notifications_service_go",
- "label": "service.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L1"
- },
- {
- "id": "notifications_deliveryreceipt",
- "label": "DeliveryReceipt",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L19"
- },
- {
- "id": "notifications_emailmessage",
- "label": "EmailMessage",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L24"
- },
- {
- "id": "notifications_emailprovider",
- "label": "EmailProvider",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L32"
- },
- {
- "id": "notifications_service",
- "label": "Service",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L36"
- },
- {
- "id": "notifications_service_newservice",
- "label": "NewService()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L43"
- },
- {
- "id": "notifications_service_dispatchdue",
- "label": ".DispatchDue()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L57"
- },
- {
- "id": "notifications_service_sendbookingconfirmation",
- "label": ".SendBookingConfirmation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L124"
- },
- {
- "id": "notifications_service_sendbookingreschedule",
- "label": ".SendBookingReschedule()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L135"
- },
- {
- "id": "notifications_service_sendbookingcancellation",
- "label": ".SendBookingCancellation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L146"
- },
- {
- "id": "notifications_service_sendbusinessnotification",
- "label": ".SendBusinessNotification()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L157"
- },
- {
- "id": "notifications_service_renderemailmessage",
- "label": "renderEmailMessage()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L168"
- },
- {
- "id": "notifications_service_renderremindercopy",
- "label": "renderReminderCopy()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L172"
- },
- {
- "id": "notifications_service_localizedstartsat",
- "label": "localizedStartsAt()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L196"
- },
- {
- "id": "notifications_service_reminderrecipient",
- "label": "reminderRecipient()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L208"
- },
- {
- "id": "notifications_noopemailprovider",
- "label": "noopEmailProvider",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L212"
- },
- {
- "id": "notifications_noopemailprovider_send",
- "label": ".Send()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L214"
- },
- {
- "id": "notifications_smtpemailprovider",
- "label": "smtpEmailProvider",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L224"
- },
- {
- "id": "notifications_smtpemailprovider_send",
- "label": ".Send()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L228"
- },
- {
- "id": "apps_backend_internal_notifications_email_templates_go",
- "label": "email_templates.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L1"
- },
- {
- "id": "notifications_emailtype",
- "label": "EmailType",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L10"
- },
- {
- "id": "notifications_bookingemaildata",
- "label": "BookingEmailData",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L20"
- },
- {
- "id": "notifications_email_templates_renderemailmessage",
- "label": "RenderEmailMessage()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L42"
- },
- {
- "id": "notifications_email_templates_rendersubject",
- "label": "renderSubject()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L56"
- },
- {
- "id": "notifications_email_templates_rendertextbody",
- "label": "renderTextBody()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L90"
- },
- {
- "id": "notifications_email_templates_renderhtmlbody",
- "label": "renderHTMLBody()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L241"
- },
- {
- "id": "notifications_email_templates_formatlocalizedtime",
- "label": "formatLocalizedTime()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L266"
- },
- {
- "id": "notifications_email_templates_formatlocalizeddatetime",
- "label": "formatLocalizedDateTime()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L278"
- },
- {
- "id": "notifications_email_templates_splitparagraphs",
- "label": "splitParagraphs()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L290"
- },
- {
- "id": "notifications_email_templates_splitlines",
- "label": "splitLines()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L313"
- },
- {
- "id": "notifications_email_templates_trimspace",
- "label": "trimSpace()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L326"
- },
- {
- "id": "notifications_email_templates_renderreminderemail",
- "label": "RenderReminderEmail()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L339"
- },
- {
- "id": "apps_backend_internal_notifications_service_test_go",
- "label": "service_test.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L1"
- },
- {
- "id": "notifications_service_test_testdispatchdueprocessespendingemailreminders",
- "label": "TestDispatchDueProcessesPendingEmailReminders()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L13"
- },
- {
- "id": "notifications_service_test_testdispatchduefailsunknownchannel",
- "label": "TestDispatchDueFailsUnknownChannel()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L66"
- },
- {
- "id": "notifications_service_test_testdispatchrequestcontractshape",
- "label": "TestDispatchRequestContractShape()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L87"
- },
- {
- "id": "apps_backend_internal_bookings_service_go",
- "label": "service.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L1"
- },
- {
- "id": "bookings_service",
- "label": "Service",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L27"
- },
- {
- "id": "bookings_notifier",
- "label": "Notifier",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L32"
- },
- {
- "id": "bookings_service_newservice",
- "label": "NewService()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L37"
- },
- {
- "id": "bookings_noopnotifier",
- "label": "noopNotifier",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L44"
- },
- {
- "id": "bookings_noopnotifier_sendbookingconfirmation",
- "label": ".SendBookingConfirmation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L46"
- },
- {
- "id": "bookings_noopnotifier_sendbusinessnotification",
- "label": ".SendBusinessNotification()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L50"
- },
- {
- "id": "bookings_service_availability",
- "label": ".Availability()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L54"
- },
- {
- "id": "bookings_service_create",
- "label": ".Create()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L98"
- },
- {
- "id": "bookings_service_sendbookingconfirmationemails",
- "label": ".sendBookingConfirmationEmails()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L240"
- },
- {
- "id": "bookings_service_serviceforrequest",
- "label": ".serviceForRequest()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L273"
- },
- {
- "id": "bookings_service_classsessionforrequest",
- "label": ".classSessionForRequest()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L286"
- },
- {
- "id": "bookings_service_dashboardsummary",
- "label": ".DashboardSummary()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L299"
- },
- {
- "id": "bookings_service_widgetsnippets",
- "label": "widgetSnippets()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L352"
- },
- {
- "id": "bookings_service_trackingstatus",
- "label": "trackingStatus()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L361"
- },
- {
- "id": "bookings_service_normalizeplancode",
- "label": "normalizePlanCode()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L369"
- },
- {
- "id": "bookings_service_generateappointmentslots",
- "label": "generateAppointmentSlots()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L380"
- },
- {
- "id": "bookings_service_generateclassslots",
- "label": "generateClassSlots()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L449"
- },
- {
- "id": "bookings_service_collides",
- "label": "collides()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L471"
- },
- {
- "id": "bookings_service_sameresource",
- "label": "sameResource()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L486"
- },
- {
- "id": "bookings_service_samesecond",
- "label": "sameSecond()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L493"
- },
- {
- "id": "bookings_service_countclassbookings",
- "label": "countClassBookings()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L497"
- },
- {
- "id": "bookings_service_reminderschedule",
- "label": "reminderSchedule()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L510"
- },
- {
- "id": "apps_backend_internal_bookings_customer_service_go",
- "label": "customer_service.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L1"
- },
- {
- "id": "bookings_customerservice",
- "label": "CustomerService",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L19"
- },
- {
- "id": "bookings_customernotifier",
- "label": "CustomerNotifier",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L24"
- },
- {
- "id": "bookings_customer_service_newcustomerservice",
- "label": "NewCustomerService()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L29"
- },
- {
- "id": "bookings_customernoopnotifier",
- "label": "customerNoopNotifier",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L36"
- },
- {
- "id": "bookings_customernoopnotifier_sendbookingreschedule",
- "label": ".SendBookingReschedule()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L38"
- },
- {
- "id": "bookings_customernoopnotifier_sendbookingcancellation",
- "label": ".SendBookingCancellation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L42"
- },
- {
- "id": "bookings_customerservice_getbookingbyreference",
- "label": ".GetBookingByReference()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L47"
- },
- {
- "id": "bookings_customerservice_reschedulebooking",
- "label": ".RescheduleBooking()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L73"
- },
- {
- "id": "bookings_customerservice_cancelbooking",
- "label": ".CancelBooking()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L112"
- },
- {
- "id": "bookings_customerservice_sendrescheduleemail",
- "label": ".sendRescheduleEmail()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L132"
- },
- {
- "id": "bookings_customerservice_sendcancellationemail",
- "label": ".sendCancellationEmail()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L168"
- },
- {
- "id": "apps_backend_internal_bookings_service_test_go",
- "label": "service_test.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L1"
- },
- {
- "id": "bookings_service_test_testcreateappointmentrejectsconflict",
- "label": "TestCreateAppointmentRejectsConflict()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L13"
- },
- {
- "id": "bookings_service_test_testcreateclassfallsbacktowaitlistwhencapacityreached",
- "label": "TestCreateClassFallsBackToWaitlistWhenCapacityReached()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L70"
- },
- {
- "id": "bookings_service_test_testcreateappointmentrequirestenantservice",
- "label": "TestCreateAppointmentRequiresTenantService()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L127"
- },
- {
- "id": "bookings_service_test_testcreateclassrequiresexistingsession",
- "label": "TestCreateClassRequiresExistingSession()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L144"
- },
- {
- "id": "bookings_service_test_testavailabilitygeneratesupcomingslots",
- "label": "TestAvailabilityGeneratesUpcomingSlots()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L163"
- },
- {
- "id": "bookings_service_test_testcreateschedulesreminderjobforupcomingappointment",
- "label": "TestCreateSchedulesReminderJobForUpcomingAppointment()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L186"
- },
- {
- "id": "apps_backend_internal_billing_service_go",
- "label": "service.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L1"
- },
- {
- "id": "billing_service",
- "label": "Service",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L44"
- },
- {
- "id": "billing_webhookenvelope",
- "label": "webhookEnvelope",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L51"
- },
- {
- "id": "billing_service_newservice",
- "label": "NewService()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L62"
- },
- {
- "id": "billing_service_getsubscription",
- "label": ".GetSubscription()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L85"
- },
- {
- "id": "billing_service_createcheckoutsession",
- "label": ".CreateCheckoutSession()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L111"
- },
- {
- "id": "billing_service_refresh",
- "label": ".Refresh()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L146"
- },
- {
- "id": "billing_service_createportalsession",
- "label": ".CreatePortalSession()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L177"
- },
- {
- "id": "billing_service_handlewebhook",
- "label": ".HandleWebhook()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L218"
- },
- {
- "id": "billing_service_resolvewebhooktenant",
- "label": ".resolveWebhookTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L279"
- },
- {
- "id": "billing_service_syncpaddledata",
- "label": ".syncPaddleData()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L292"
- },
- {
- "id": "billing_service_tosnapshot",
- "label": "toSnapshot()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L353"
- },
- {
- "id": "billing_service_entitlementsforplan",
- "label": "entitlementsForPlan()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L390"
- },
- {
- "id": "billing_service_plancodeforprice",
- "label": ".planCodeForPrice()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L401"
- },
- {
- "id": "billing_service_priceforplan",
- "label": ".priceForPlan()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L412"
- },
- {
- "id": "billing_service_subscriptionrank",
- "label": "subscriptionRank()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L429"
- },
- {
- "id": "billing_service_displaypricesforplan",
- "label": "displayPricesForPlan()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L446"
- },
- {
- "id": "billing_service_normalizeplancode",
- "label": "normalizePlanCode()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L466"
- },
- {
- "id": "billing_service_normalizecurrency",
- "label": "normalizeCurrency()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L477"
- },
- {
- "id": "billing_service_normalizesubscriptionstatus",
- "label": "normalizeSubscriptionStatus()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L488"
- },
- {
- "id": "billing_service_checkoutavailable",
- "label": "checkoutAvailable()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L497"
- },
- {
- "id": "billing_service_customdatastring",
- "label": "customDataString()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L510"
- },
- {
- "id": "billing_service_parserfc3339ptr",
- "label": "parseRFC3339Ptr()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L526"
- },
- {
- "id": "billing_service_timeperiodstart",
- "label": "timePeriodStart()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L538"
- },
- {
- "id": "billing_service_timeperiodend",
- "label": "timePeriodEnd()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L545"
- },
- {
- "id": "billing_service_derefstring",
- "label": "derefString()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L552"
- },
- {
- "id": "billing_service_firstnonempty",
- "label": "firstNonEmpty()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L559"
- },
- {
- "id": "apps_backend_internal_billing_service_test_go",
- "label": "service_test.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L1"
- },
- {
- "id": "billing_service_test_testconfig",
- "label": "testConfig()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L12"
- },
- {
- "id": "billing_service_test_testgetsubscriptionfallsbacktosnapshotandentitlements",
- "label": "TestGetSubscriptionFallsBackToSnapshotAndEntitlements()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L25"
- },
- {
- "id": "billing_service_test_testcreatecheckoutrequirespaddleconfig",
- "label": "TestCreateCheckoutRequiresPaddleConfig()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L47"
- },
- {
- "id": "billing_service_test_testcreatecheckoutreturnslaunchpayload",
- "label": "TestCreateCheckoutReturnsLaunchPayload()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L61"
- },
- {
- "id": "billing_service_test_testrefreshrequirespaddlekeywhencustomerexists",
- "label": "TestRefreshRequiresPaddleKeyWhenCustomerExists()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L82"
- },
- {
- "id": "billing_service_test_testgetsubscriptiondisablescheckoutwhenwebhookmissing",
- "label": "TestGetSubscriptionDisablesCheckoutWhenWebhookMissing()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L96"
- },
- {
- "id": "billing_service_test_testgetsubscriptionenablescheckoutwhenpaddleconfigured",
- "label": "TestGetSubscriptionEnablesCheckoutWhenPaddleConfigured()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L113"
- },
- {
- "id": "billing_service_test_testcreateportalsessionrequirescustomer",
- "label": "TestCreatePortalSessionRequiresCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L131"
- },
- {
- "id": "apps_backend_internal_auth_middleware_go",
- "label": "middleware.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L1"
- },
- {
- "id": "auth_middleware_requireauth",
- "label": "RequireAuth()",
- "file_type": "code",
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L23"
- },
- {
- "id": "auth_middleware_principalfromcontext",
- "label": "PrincipalFromContext()",
- "file_type": "code",
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L82"
- },
- {
- "id": "apps_backend_internal_auth_neon_go",
- "label": "neon.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L1"
- },
- {
- "id": "auth_verifier",
- "label": "Verifier",
- "file_type": "code",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L15"
- },
- {
- "id": "auth_neon_newverifier",
- "label": "NewVerifier()",
- "file_type": "code",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L23"
- },
- {
- "id": "auth_verifier_enabled",
- "label": ".Enabled()",
- "file_type": "code",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L58"
- },
- {
- "id": "auth_verifier_close",
- "label": ".Close()",
- "file_type": "code",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L62"
- },
- {
- "id": "auth_verifier_verify",
- "label": ".Verify()",
- "file_type": "code",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L68"
- },
- {
- "id": "apps_backend_internal_api_server_go",
- "label": "server.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L1"
- },
- {
- "id": "api_server",
- "label": "Server",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L26"
- },
- {
- "id": "api_server_newserver",
- "label": "NewServer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L33"
- },
- {
- "id": "api_server_handler",
- "label": ".Handler()",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L590"
- },
- {
- "id": "api_server_close",
- "label": ".Close()",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L594"
- },
- {
- "id": "api_server_authorizejobrunner",
- "label": "authorizeJobRunner()",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L600"
- },
- {
- "id": "api_server_allowedorigins",
- "label": "allowedOrigins()",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L607"
- },
- {
- "id": "api_server_widgetjavascript",
- "label": "widgetJavaScript()",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L634"
- },
- {
- "id": "apps_backend_internal_api_server_test_go",
- "label": "server_test.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L1"
- },
- {
- "id": "api_server_test_testdispatchreminderjobsrequiresjobrunnerkey",
- "label": "TestDispatchReminderJobsRequiresJobRunnerKey()",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L11"
- },
- {
- "id": "api_server_test_testdispatchreminderjobsacceptsconfiguredjobrunnerkey",
- "label": "TestDispatchReminderJobsAcceptsConfiguredJobRunnerKey()",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L33"
- },
- {
- "id": "apps_backend_internal_tenancy_service_go",
- "label": "service.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L1"
- },
- {
- "id": "tenancy_service",
- "label": "Service",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L25"
- },
- {
- "id": "tenancy_service_newservice",
- "label": "NewService()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L29"
- },
- {
- "id": "tenancy_service_bootstrap",
- "label": ".Bootstrap()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L33"
- },
- {
- "id": "tenancy_service_onboard",
- "label": ".Onboard()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L73"
- },
- {
- "id": "tenancy_service_brandprofile",
- "label": ".brandProfile()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L182"
- },
- {
- "id": "tenancy_service_validateavailabilityblocks",
- "label": "validateAvailabilityBlocks()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L195"
- },
- {
- "id": "tenancy_service_toavailabilityblocks",
- "label": "toAvailabilityBlocks()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L218"
- },
- {
- "id": "tenancy_service_toteaminvites",
- "label": "toTeamInvites()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L231"
- },
- {
- "id": "tenancy_service_normalizeclock",
- "label": "normalizeClock()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L247"
- },
- {
- "id": "tenancy_service_normalizeplancode",
- "label": "normalizePlanCode()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L255"
- },
- {
- "id": "tenancy_service_firstnonempty",
- "label": "firstNonEmpty()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L266"
- },
- {
- "id": "apps_backend_internal_tenancy_service_test_go",
- "label": "service_test.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L1"
- },
- {
- "id": "tenancy_service_test_testbootstrapresolvesmembershipafteridentitysync",
- "label": "TestBootstrapResolvesMembershipAfterIdentitySync()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L11"
- },
- {
- "id": "tenancy_service_test_testbootstrapreturnsshellwhenmembershipmissing",
- "label": "TestBootstrapReturnsShellWhenMembershipMissing()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L40"
- },
- {
- "id": "tenancy_service_test_testonboardcreatestenantforauthenticateduser",
- "label": "TestOnboardCreatesTenantForAuthenticatedUser()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L62"
- },
- {
- "id": "tenancy_service_test_testonboardrejectsinvalidslug",
- "label": "TestOnboardRejectsInvalidSlug()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L89"
- },
- {
- "id": "apps_frontend_vite_config_ts",
- "label": "vite.config.ts",
- "file_type": "code",
- "source_file": "apps/frontend/vite.config.ts",
- "source_location": "L1"
- },
- {
- "id": "apps_frontend_src_app_tsx",
- "label": "App.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L1"
- },
- {
- "id": "src_app_scrolltotop",
- "label": "ScrollToTop()",
- "file_type": "code",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L10"
- },
- {
- "id": "src_app_app",
- "label": "App()",
- "file_type": "code",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L22"
- },
- {
- "id": "apps_frontend_src_main_tsx",
- "label": "main.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/main.tsx",
- "source_location": "L1"
- },
- {
- "id": "apps_frontend_src_routes_about_route_tsx",
- "label": "about-route.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/about-route.tsx",
- "source_location": "L1"
- },
- {
- "id": "routes_about_route_aboutroute",
- "label": "AboutRoute()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/about-route.tsx",
- "source_location": "L6"
- },
- {
- "id": "apps_frontend_src_routes_auth_callback_route_tsx",
- "label": "auth-callback-route.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/auth-callback-route.tsx",
- "source_location": "L1"
- },
- {
- "id": "routes_auth_callback_route_authcallbackroute",
- "label": "AuthCallbackRoute()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/auth-callback-route.tsx",
- "source_location": "L6"
- },
- {
- "id": "apps_frontend_src_routes_public_booking_route_tsx",
- "label": "public-booking-route.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L1"
- },
- {
- "id": "routes_public_booking_route_tenantslug",
- "label": "tenantSlug()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L12"
- },
- {
- "id": "routes_public_booking_route_bookslot",
- "label": "bookSlot()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L31"
- },
- {
- "id": "apps_frontend_src_routes_dashboard_route_tsx",
- "label": "dashboard-route.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1"
- },
- {
- "id": "routes_dashboard_route_layoutdashboardicon",
- "label": "LayoutDashboardIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L33"
- },
- {
- "id": "routes_dashboard_route_calendardaysicon",
- "label": "CalendarDaysIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L42"
- },
- {
- "id": "routes_dashboard_route_creditcardicon",
- "label": "CreditCardIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L52"
- },
- {
- "id": "routes_dashboard_route_settings2icon",
- "label": "Settings2Icon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L59"
- },
- {
- "id": "routes_dashboard_route_logouticon",
- "label": "LogOutIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L67"
- },
- {
- "id": "routes_dashboard_route_menuicon",
- "label": "MenuIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L75"
- },
- {
- "id": "routes_dashboard_route_xicon",
- "label": "XIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L81"
- },
- {
- "id": "routes_dashboard_route_trendingupicon",
- "label": "TrendingUpIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L87"
- },
- {
- "id": "routes_dashboard_route_trendingdownicon",
- "label": "TrendingDownIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L94"
- },
- {
- "id": "routes_dashboard_route_clockicon",
- "label": "ClockIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L101"
- },
- {
- "id": "routes_dashboard_route_checkcircleicon",
- "label": "CheckCircleIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L107"
- },
- {
- "id": "routes_dashboard_route_alertcircleicon",
- "label": "AlertCircleIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L113"
- },
- {
- "id": "routes_dashboard_route_morehorizontalicon",
- "label": "MoreHorizontalIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L119"
- },
- {
- "id": "routes_dashboard_route_chevronlefticon",
- "label": "ChevronLeftIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L125"
- },
- {
- "id": "routes_dashboard_route_chevronrighticon",
- "label": "ChevronRightIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L131"
- },
- {
- "id": "routes_dashboard_route_sparklesicon",
- "label": "SparklesIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L137"
- },
- {
- "id": "routes_dashboard_route_bellicon",
- "label": "BellIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L143"
- },
- {
- "id": "routes_dashboard_route_plusicon",
- "label": "PlusIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L149"
- },
- {
- "id": "routes_dashboard_route_usersicon",
- "label": "UsersIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L155"
- },
- {
- "id": "routes_dashboard_route_usercircleicon",
- "label": "UserCircleIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L161"
- },
- {
- "id": "routes_dashboard_route_iscs",
- "label": "isCs()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L319"
- },
- {
- "id": "routes_dashboard_route_changemonth",
- "label": "changeMonth()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L347"
- },
- {
- "id": "routes_dashboard_route_prevmonth",
- "label": "prevMonth()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L355"
- },
- {
- "id": "routes_dashboard_route_nextmonth",
- "label": "nextMonth()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L356"
- },
- {
- "id": "routes_dashboard_route_trend",
- "label": "trend()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L449"
- },
- {
- "id": "routes_dashboard_route_trendclass",
- "label": "trendClass()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L450"
- },
- {
- "id": "routes_dashboard_route_sparklineclass",
- "label": "sparklineClass()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L460"
- },
- {
- "id": "routes_dashboard_route_isdemomode",
- "label": "isDemoMode()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L571"
- },
- {
- "id": "routes_dashboard_route_resolvedsummary",
- "label": "resolvedSummary()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L595"
- },
- {
- "id": "routes_dashboard_route_resolvedbootstrap",
- "label": "resolvedBootstrap()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L596"
- },
- {
- "id": "routes_dashboard_route_resolvedbilling",
- "label": "resolvedBilling()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L597"
- },
- {
- "id": "routes_dashboard_route_hastenant",
- "label": "hasTenant()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L642"
- },
- {
- "id": "routes_dashboard_route_isdashboardready",
- "label": "isDashboardReady()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L643"
- },
- {
- "id": "routes_dashboard_route_refreshbilling",
- "label": "refreshBilling()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L645"
- },
- {
- "id": "routes_dashboard_route_opencheckout",
- "label": "openCheckout()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L669"
- },
- {
- "id": "routes_dashboard_route_openbillingportal",
- "label": "openBillingPortal()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L716"
- },
- {
- "id": "routes_dashboard_route_changesection",
- "label": "changeSection()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L754"
- },
- {
- "id": "routes_dashboard_route_resolvedallbookings",
- "label": "resolvedAllBookings()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L895"
- },
- {
- "id": "routes_dashboard_route_handlecreatebooking",
- "label": "handleCreateBooking()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L954"
- },
- {
- "id": "routes_dashboard_route_handleupdatebooking",
- "label": "handleUpdateBooking()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L989"
- },
- {
- "id": "routes_dashboard_route_handlecancelbooking",
- "label": "handleCancelBooking()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1015"
- },
- {
- "id": "routes_dashboard_route_handlereschedulebooking",
- "label": "handleRescheduleBooking()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1028"
- },
- {
- "id": "routes_dashboard_route_openbookingdetail",
- "label": "openBookingDetail()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1045"
- },
- {
- "id": "routes_dashboard_route_bookingstats",
- "label": "bookingStats()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1076"
- },
- {
- "id": "routes_dashboard_route_billingpricelabel",
- "label": "billingPriceLabel()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1538"
- },
- {
- "id": "routes_dashboard_route_handlesavebrand",
- "label": "handleSaveBrand()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1592"
- },
- {
- "id": "routes_dashboard_route_getdemocustomers",
- "label": "getDemoCustomers()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2184"
- },
- {
- "id": "routes_dashboard_route_resolvedcustomers",
- "label": "resolvedCustomers()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2192"
- },
- {
- "id": "routes_dashboard_route_resolvedbookings",
- "label": "resolvedBookings()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2193"
- },
- {
- "id": "routes_dashboard_route_getcustomerbookings",
- "label": "getCustomerBookings()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2223"
- },
- {
- "id": "routes_dashboard_route_opencustomerdetail",
- "label": "openCustomerDetail()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2229"
- },
- {
- "id": "routes_dashboard_route_filteredcustomers",
- "label": "filteredCustomers()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2259"
- },
- {
- "id": "routes_dashboard_route_demodata",
- "label": "demoData()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2496"
- },
- {
- "id": "routes_dashboard_route_resolvedlocations",
- "label": "resolvedLocations()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2519"
- },
- {
- "id": "routes_dashboard_route_resolvedblockeddays",
- "label": "resolvedBlockedDays()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2520"
- },
- {
- "id": "routes_dashboard_route_resolvedworkinghours",
- "label": "resolvedWorkingHours()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2521"
- },
- {
- "id": "routes_dashboard_route_handleaddzone",
- "label": "handleAddZone()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2523"
- },
- {
- "id": "routes_dashboard_route_handleaddblockedday",
- "label": "handleAddBlockedDay()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2540"
- },
- {
- "id": "routes_dashboard_route_handledeleteblockedday",
- "label": "handleDeleteBlockedDay()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2562"
- },
- {
- "id": "apps_frontend_src_routes_contact_route_tsx",
- "label": "contact-route.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/contact-route.tsx",
- "source_location": "L1"
- },
- {
- "id": "routes_contact_route_handlesubmit",
- "label": "handleSubmit()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/contact-route.tsx",
- "source_location": "L14"
- },
- {
- "id": "apps_frontend_src_routes_home_route_tsx",
- "label": "home-route.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L1"
- },
- {
- "id": "routes_home_route_calendaricon",
- "label": "CalendarIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L7"
- },
- {
- "id": "routes_home_route_clockicon",
- "label": "ClockIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L16"
- },
- {
- "id": "routes_home_route_usersicon",
- "label": "UsersIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L23"
- },
- {
- "id": "routes_home_route_bellicon",
- "label": "BellIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L32"
- },
- {
- "id": "routes_home_route_shieldicon",
- "label": "ShieldIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L39"
- },
- {
- "id": "routes_home_route_zapicon",
- "label": "ZapIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L45"
- },
- {
- "id": "routes_home_route_arrowrighticon",
- "label": "ArrowRightIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L51"
- },
- {
- "id": "routes_home_route_checkicon",
- "label": "CheckIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L58"
- },
- {
- "id": "routes_home_route_sunicon",
- "label": "SunIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L64"
- },
- {
- "id": "routes_home_route_moonicon",
- "label": "MoonIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L78"
- },
- {
- "id": "routes_home_route_stepcard",
- "label": "StepCard()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L91"
- },
- {
- "id": "routes_home_route_prevmonth",
- "label": "prevMonth()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L121"
- },
- {
- "id": "routes_home_route_nextmonth",
- "label": "nextMonth()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L127"
- },
- {
- "id": "apps_frontend_src_routes_not_found_route_tsx",
- "label": "not-found-route.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/not-found-route.tsx",
- "source_location": "L1"
- },
- {
- "id": "routes_not_found_route_notfoundroute",
- "label": "NotFoundRoute()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/not-found-route.tsx",
- "source_location": "L5"
- },
- {
- "id": "apps_frontend_src_routes_legal_route_tsx",
- "label": "legal-route.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L1"
- },
- {
- "id": "routes_legal_route_kind",
- "label": "kind()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L10"
- },
- {
- "id": "routes_legal_route_heropose",
- "label": "heroPose()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L11"
- },
- {
- "id": "routes_legal_route_helperpose",
- "label": "helperPose()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L12"
- },
- {
- "id": "routes_legal_route_sections",
- "label": "sections()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L13"
- },
- {
- "id": "apps_frontend_src_routes_booking_manage_route_tsx",
- "label": "booking-manage-route.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L1"
- },
- {
- "id": "routes_booking_manage_route_token",
- "label": "token()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L20"
- },
- {
- "id": "routes_booking_manage_route_reference",
- "label": "reference()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L21"
- },
- {
- "id": "routes_booking_manage_route_handlereschedule",
- "label": "handleReschedule()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L51"
- },
- {
- "id": "routes_booking_manage_route_handlecancel",
- "label": "handleCancel()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L96"
- },
- {
- "id": "routes_booking_manage_route_formatdate",
- "label": "formatDate()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L126"
- },
- {
- "id": "routes_booking_manage_route_formattime",
- "label": "formatTime()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L136"
- },
- {
- "id": "routes_booking_manage_route_isrescheduling",
- "label": "isRescheduling()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L352"
- },
- {
- "id": "routes_booking_manage_route_iscancelling",
- "label": "isCancelling()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L411"
- },
- {
- "id": "apps_frontend_src_components_bookra_character_tsx",
- "label": "bookra-character.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/bookra-character.tsx",
- "source_location": "L1"
- },
- {
- "id": "components_bookra_character_bookracharacter",
- "label": "BookraCharacter()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/bookra-character.tsx",
- "source_location": "L79"
- },
- {
- "id": "components_bookra_character_characterwithmessage",
- "label": "CharacterWithMessage()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/bookra-character.tsx",
- "source_location": "L125"
- },
- {
- "id": "apps_frontend_src_components_index_ts",
- "label": "index.ts",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/index.ts",
- "source_location": "L1"
- },
- {
- "id": "apps_frontend_src_components_integration_modal_tsx",
- "label": "integration-modal.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/integration-modal.tsx",
- "source_location": "L1"
- },
- {
- "id": "components_integration_modal_copytoclipboard",
- "label": "copyToClipboard()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/integration-modal.tsx",
- "source_location": "L16"
- },
- {
- "id": "apps_frontend_src_components_location_map_tsx",
- "label": "location-map.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L1"
- },
- {
- "id": "components_location_map_loadleaflet",
- "label": "loadLeaflet()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L29"
- },
- {
- "id": "components_location_map_safemarkercolor",
- "label": "safeMarkerColor()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L61"
- },
- {
- "id": "components_location_map_escapehtml",
- "label": "escapeHtml()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L68"
- },
- {
- "id": "components_location_map_createmarkericon",
- "label": "createMarkerIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L77"
- },
- {
- "id": "components_location_map_locationmap",
- "label": "LocationMap()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L88"
- },
- {
- "id": "apps_frontend_src_components_shell_tsx",
- "label": "shell.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L1"
- },
- {
- "id": "components_shell_sunicon",
- "label": "SunIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L19"
- },
- {
- "id": "components_shell_moonicon",
- "label": "MoonIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L33"
- },
- {
- "id": "components_shell_globeicon",
- "label": "GlobeIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L39"
- },
- {
- "id": "components_shell_menuicon",
- "label": "MenuIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L47"
- },
- {
- "id": "components_shell_xicon",
- "label": "XIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L55"
- },
- {
- "id": "components_shell_googleicon",
- "label": "GoogleIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L62"
- },
- {
- "id": "components_shell_hideheader",
- "label": "hideHeader()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L78"
- },
- {
- "id": "components_shell_showgooglesignin",
- "label": "showGoogleSignIn()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L88"
- },
- {
- "id": "components_shell_isdemomode",
- "label": "isDemoMode()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L96"
- },
- {
- "id": "components_shell_handleopenauth",
- "label": "handleOpenAuth()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L103"
- },
- {
- "id": "components_shell_submitsignin",
- "label": "submitSignIn()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L114"
- },
- {
- "id": "components_shell_translateautherror",
- "label": "translateAuthError()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L146"
- },
- {
- "id": "components_shell_sendmagiclink",
- "label": "sendMagicLink()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L179"
- },
- {
- "id": "components_shell_signinwithgoogle",
- "label": "signInWithGoogle()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L194"
- },
- {
- "id": "apps_frontend_src_components_widget_builder_tsx",
- "label": "widget-builder.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L1"
- },
- {
- "id": "components_widget_builder_copyicon",
- "label": "CopyIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L39"
- },
- {
- "id": "components_widget_builder_checkicon",
- "label": "CheckIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L46"
- },
- {
- "id": "components_widget_builder_codeicon",
- "label": "CodeIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L52"
- },
- {
- "id": "components_widget_builder_externallinkicon",
- "label": "ExternalLinkIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L59"
- },
- {
- "id": "components_widget_builder_iframeicon",
- "label": "IframeIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L67"
- },
- {
- "id": "components_widget_builder_buttonicon",
- "label": "ButtonIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L75"
- },
- {
- "id": "components_widget_builder_calendaricon",
- "label": "CalendarIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L81"
- },
- {
- "id": "components_widget_builder_modalicon",
- "label": "ModalIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L90"
- },
- {
- "id": "components_widget_builder_floatingicon",
- "label": "FloatingIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L100"
- },
- {
- "id": "components_widget_builder_sunicon",
- "label": "SunIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L108"
- },
- {
- "id": "components_widget_builder_moonicon",
- "label": "MoonIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L122"
- },
- {
- "id": "components_widget_builder_refreshicon",
- "label": "RefreshIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L128"
- },
- {
- "id": "components_widget_builder_lockicon",
- "label": "LockIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L137"
- },
- {
- "id": "components_widget_builder_dragicon",
- "label": "DragIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L144"
- },
- {
- "id": "components_widget_builder_moveicon",
- "label": "MoveIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L155"
- },
- {
- "id": "components_widget_builder_paletteicon",
- "label": "PaletteIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L166"
- },
- {
- "id": "components_widget_builder_mapicon",
- "label": "MapIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L176"
- },
- {
- "id": "components_widget_builder_eyeicon",
- "label": "EyeIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L184"
- },
- {
- "id": "components_widget_builder_json",
- "label": "json()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L199"
- },
- {
- "id": "components_widget_builder_generatedmapelementid",
- "label": "generatedMapElementId()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L203"
- },
- {
- "id": "components_widget_builder_safehexcolor",
- "label": "safeHexColor()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L207"
- },
- {
- "id": "components_widget_builder_resolvemaplocation",
- "label": "resolveMapLocation()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L281"
- },
- {
- "id": "components_widget_builder_generatemapcode",
- "label": "generateMapCode()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L305"
- },
- {
- "id": "components_widget_builder_handledragstart",
- "label": "handleDragStart()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L429"
- },
- {
- "id": "components_widget_builder_handledragover",
- "label": "handleDragOver()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L433"
- },
- {
- "id": "components_widget_builder_handledragend",
- "label": "handleDragEnd()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L445"
- },
- {
- "id": "components_widget_builder_generatecode",
- "label": "generateCode()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L449"
- },
- {
- "id": "components_widget_builder_copytoclipboard",
- "label": "copyToClipboard()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L1076"
- },
- {
- "id": "apps_frontend_src_components_dashboard_icons_tsx",
- "label": "icons.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L1"
- },
- {
- "id": "dashboard_icons_layoutdashboardicon",
- "label": "LayoutDashboardIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L1"
- },
- {
- "id": "dashboard_icons_calendardaysicon",
- "label": "CalendarDaysIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L10"
- },
- {
- "id": "dashboard_icons_creditcardicon",
- "label": "CreditCardIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L20"
- },
- {
- "id": "dashboard_icons_settings2icon",
- "label": "Settings2Icon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L27"
- },
- {
- "id": "dashboard_icons_logouticon",
- "label": "LogOutIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L35"
- },
- {
- "id": "dashboard_icons_menuicon",
- "label": "MenuIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L43"
- },
- {
- "id": "dashboard_icons_xicon",
- "label": "XIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L49"
- },
- {
- "id": "dashboard_icons_trendingupicon",
- "label": "TrendingUpIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L55"
- },
- {
- "id": "dashboard_icons_trendingdownicon",
- "label": "TrendingDownIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L62"
- },
- {
- "id": "dashboard_icons_clockicon",
- "label": "ClockIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L69"
- },
- {
- "id": "dashboard_icons_checkcircleicon",
- "label": "CheckCircleIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L75"
- },
- {
- "id": "dashboard_icons_alertcircleicon",
- "label": "AlertCircleIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L81"
- },
- {
- "id": "dashboard_icons_chevronlefticon",
- "label": "ChevronLeftIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L87"
- },
- {
- "id": "dashboard_icons_chevronrighticon",
- "label": "ChevronRightIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L93"
- },
- {
- "id": "dashboard_icons_sparklesicon",
- "label": "SparklesIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L99"
- },
- {
- "id": "dashboard_icons_bellicon",
- "label": "BellIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L105"
- },
- {
- "id": "dashboard_icons_plusicon",
- "label": "PlusIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L111"
- },
- {
- "id": "dashboard_icons_usersicon",
- "label": "UsersIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L117"
- },
- {
- "id": "dashboard_icons_usercircleicon",
- "label": "UserCircleIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L123"
- },
- {
- "id": "apps_frontend_src_components_dashboard_types_ts",
- "label": "types.ts",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/types.ts",
- "source_location": "L1"
- },
- {
- "id": "dashboard_types_getinitials",
- "label": "getInitials()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/types.ts",
- "source_location": "L14"
- },
- {
- "id": "dashboard_types_getbookingduration",
- "label": "getBookingDuration()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/types.ts",
- "source_location": "L22"
- },
- {
- "id": "apps_frontend_src_components_ui_tooltip_tsx",
- "label": "tooltip.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/tooltip.tsx",
- "source_location": "L1"
- },
- {
- "id": "ui_tooltip_tooltip",
- "label": "Tooltip()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/tooltip.tsx",
- "source_location": "L10"
- },
- {
- "id": "apps_frontend_src_components_ui_input_tsx",
- "label": "input.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/input.tsx",
- "source_location": "L1"
- },
- {
- "id": "ui_input_input",
- "label": "Input()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/input.tsx",
- "source_location": "L9"
- },
- {
- "id": "apps_frontend_src_components_ui_badge_tsx",
- "label": "badge.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/badge.tsx",
- "source_location": "L1"
- },
- {
- "id": "ui_badge_badge",
- "label": "Badge()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/badge.tsx",
- "source_location": "L8"
- },
- {
- "id": "apps_frontend_src_components_ui_select_tsx",
- "label": "select.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/select.tsx",
- "source_location": "L1"
- },
- {
- "id": "ui_select_select",
- "label": "Select()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/select.tsx",
- "source_location": "L17"
- },
- {
- "id": "apps_frontend_src_components_ui_button_tsx",
- "label": "button.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/button.tsx",
- "source_location": "L1"
- },
- {
- "id": "apps_frontend_src_components_ui_textarea_tsx",
- "label": "textarea.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/textarea.tsx",
- "source_location": "L1"
- },
- {
- "id": "ui_textarea_resizeclass",
- "label": "resizeClass()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/textarea.tsx",
- "source_location": "L15"
- },
- {
- "id": "apps_frontend_src_components_ui_index_ts",
- "label": "index.ts",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/index.ts",
- "source_location": "L1"
- },
- {
- "id": "apps_frontend_src_components_ui_card_tsx",
- "label": "card.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L1"
- },
- {
- "id": "ui_card_card",
- "label": "Card()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L8"
- },
- {
- "id": "ui_card_cardheader",
- "label": "CardHeader()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L42"
- },
- {
- "id": "ui_card_cardtitle",
- "label": "CardTitle()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L53"
- },
- {
- "id": "ui_card_carddescription",
- "label": "CardDescription()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L67"
- },
- {
- "id": "ui_card_cardcontent",
- "label": "CardContent()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L78"
- },
- {
- "id": "ui_card_cardfooter",
- "label": "CardFooter()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L89"
- },
- {
- "id": "apps_frontend_src_components_ui_skeleton_tsx",
- "label": "skeleton.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/skeleton.tsx",
- "source_location": "L1"
- },
- {
- "id": "ui_skeleton_skeleton",
- "label": "Skeleton()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/skeleton.tsx",
- "source_location": "L9"
- },
- {
- "id": "ui_skeleton_skeletoncard",
- "label": "SkeletonCard()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/skeleton.tsx",
- "source_location": "L28"
- },
- {
- "id": "ui_skeleton_skeletontext",
- "label": "SkeletonText()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/skeleton.tsx",
- "source_location": "L38"
- },
- {
- "id": "apps_frontend_src_components_ui_avatar_tsx",
- "label": "avatar.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/avatar.tsx",
- "source_location": "L1"
- },
- {
- "id": "ui_avatar_avatar",
- "label": "Avatar()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/avatar.tsx",
- "source_location": "L12"
- },
- {
- "id": "apps_frontend_src_components_ui_tabs_tsx",
- "label": "tabs.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L1"
- },
- {
- "id": "ui_tabs_usetabs",
- "label": "useTabs()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L12"
- },
- {
- "id": "ui_tabs_tabs",
- "label": "Tabs()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L29"
- },
- {
- "id": "ui_tabs_tabslist",
- "label": "TabsList()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L60"
- },
- {
- "id": "ui_tabs_tabstrigger",
- "label": "TabsTrigger()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L89"
- },
- {
- "id": "ui_tabs_tabscontent",
- "label": "TabsContent()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L120"
- },
- {
- "id": "apps_frontend_src_components_ui_dialog_tsx",
- "label": "dialog.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L1"
- },
- {
- "id": "ui_dialog_dialog",
- "label": "Dialog()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L10"
- },
- {
- "id": "ui_dialog_dialogheader",
- "label": "DialogHeader()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L78"
- },
- {
- "id": "ui_dialog_dialogtitle",
- "label": "DialogTitle()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L88"
- },
- {
- "id": "ui_dialog_dialogdescription",
- "label": "DialogDescription()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L104"
- },
- {
- "id": "ui_dialog_dialogcontent",
- "label": "DialogContent()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L120"
- },
- {
- "id": "ui_dialog_dialogfooter",
- "label": "DialogFooter()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L130"
- },
- {
- "id": "ui_dialog_dialogclosebutton",
- "label": "DialogCloseButton()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L151"
- },
- {
- "id": "ui_dialog_usedialog",
- "label": "useDialog()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L185"
- },
- {
- "id": "apps_frontend_src_providers_theme_provider_tsx",
- "label": "theme-provider.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/theme-provider.tsx",
- "source_location": "L1"
- },
- {
- "id": "providers_theme_provider_getinitialtheme",
- "label": "getInitialTheme()",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/theme-provider.tsx",
- "source_location": "L13"
- },
- {
- "id": "providers_theme_provider_getresolvedtheme",
- "label": "getResolvedTheme()",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/theme-provider.tsx",
- "source_location": "L19"
- },
- {
- "id": "providers_theme_provider_usetheme",
- "label": "useTheme()",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/theme-provider.tsx",
- "source_location": "L82"
- },
- {
- "id": "apps_frontend_src_providers_auth_provider_tsx",
- "label": "auth-provider.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L1"
- },
- {
- "id": "providers_auth_provider_sessionfromlocaltoken",
- "label": "sessionFromLocalToken()",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L21"
- },
- {
- "id": "providers_auth_provider_parsejwtpayload",
- "label": "parseJwtPayload()",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L40"
- },
- {
- "id": "providers_auth_provider_authprovider",
- "label": "AuthProvider()",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L69"
- },
- {
- "id": "providers_auth_provider_useauth",
- "label": "useAuth()",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L208"
- },
- {
- "id": "apps_frontend_src_providers_i18n_provider_tsx",
- "label": "i18n-provider.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/i18n-provider.tsx",
- "source_location": "L1"
- },
- {
- "id": "apps_frontend_src_lib_map_ts",
- "label": "map.ts",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L1"
- },
- {
- "id": "lib_map_mapstylebyid",
- "label": "mapStyleById()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L84"
- },
- {
- "id": "lib_map_resolvemaptilestyle",
- "label": "resolveMapTileStyle()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L88"
- },
- {
- "id": "lib_map_validatecoordinates",
- "label": "validateCoordinates()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L102"
- },
- {
- "id": "lib_map_parsecoordinatetext",
- "label": "parseCoordinateText()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L113"
- },
- {
- "id": "lib_map_parsemapyczurl",
- "label": "parseMapyCzUrl()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L133"
- },
- {
- "id": "lib_map_parsegooglemapsurl",
- "label": "parseGoogleMapsUrl()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L159"
- },
- {
- "id": "lib_map_parsemapurl",
- "label": "parseMapUrl()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L217"
- },
- {
- "id": "lib_map_geocodelocation",
- "label": "geocodeLocation()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L228"
- },
- {
- "id": "lib_map_reversegeocode",
- "label": "reverseGeocode()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L282"
- },
- {
- "id": "lib_map_resolvelocationinput",
- "label": "resolveLocationInput()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L320"
- },
- {
- "id": "apps_frontend_src_lib_api_client_ts",
- "label": "api-client.ts",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/api-client.ts",
- "source_location": "L1"
- },
- {
- "id": "apps_frontend_src_lib_types_ts",
- "label": "types.ts",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/types.ts",
- "source_location": "L1"
- },
- {
- "id": "apps_frontend_src_lib_paddle_ts",
- "label": "paddle.ts",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/paddle.ts",
- "source_location": "L1"
- },
- {
- "id": "lib_paddle_paddleconfigured",
- "label": "paddleConfigured()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/paddle.ts",
- "source_location": "L8"
- },
- {
- "id": "lib_paddle_getpaddle",
- "label": "getPaddle()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/paddle.ts",
- "source_location": "L12"
- },
- {
- "id": "packages_shared_types_src_index_ts",
- "label": "index.ts",
- "file_type": "code",
- "source_file": "packages/shared-types/src/index.ts",
- "source_location": "L1"
- },
- {
- "id": "packages_api_client_src_index_ts",
- "label": "index.ts",
- "file_type": "code",
- "source_file": "packages/api-client/src/index.ts",
- "source_location": "L1"
- },
- {
- "id": "packages_api_client_src_generated_types_ts",
- "label": "types.ts",
- "file_type": "code",
- "source_file": "packages/api-client/src/generated/types.ts",
- "source_location": "L1"
- },
- {
- "id": "packages_api_client_scripts_generate_mjs",
- "label": "generate.mjs",
- "file_type": "code",
- "source_file": "packages/api-client/scripts/generate.mjs",
- "source_location": "L1"
- }
- ],
- "edges": [
- {
- "source": "generate_map_tsx",
- "target": "react",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "generate_map.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "generate_map_tsx",
- "target": "react",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "generate_map.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "generate_map_tsx",
- "target": "bookra_generate_map_contactmap",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "generate_map.tsx",
- "source_location": "L100",
- "weight": 1.0
- },
- {
- "source": "map_ts",
- "target": "bookra_map_parsemapyczurl",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "map.ts",
- "source_location": "L24",
- "weight": 1.0
- },
- {
- "source": "map_ts",
- "target": "bookra_map_parsegooglemapsurl",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "map.ts",
- "source_location": "L71",
- "weight": 1.0
- },
- {
- "source": "map_ts",
- "target": "bookra_map_parsemapurl",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "map.ts",
- "source_location": "L149",
- "weight": 1.0
- },
- {
- "source": "map_ts",
- "target": "bookra_map_validatecoordinates",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "map.ts",
- "source_location": "L178",
- "weight": 1.0
- },
- {
- "source": "map_ts",
- "target": "bookra_map_reversegeocode",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "map.ts",
- "source_location": "L193",
- "weight": 1.0
- },
- {
- "source": "bookra_map_parsemapurl",
- "target": "bookra_map_parsemapyczurl",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "map.ts",
- "source_location": "L161",
- "weight": 1.0
- },
- {
- "source": "bookra_map_parsemapurl",
- "target": "bookra_map_parsegooglemapsurl",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "map.ts",
- "source_location": "L167",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_email",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_handlers",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_log",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_net_http",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_os",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_os_signal",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_syscall",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L15",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_github_com_gin_contrib_cors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L17",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_github_com_gin_gonic_gin",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L18",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_github_com_jackc_pgx_v5_stdlib",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L19",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_github_com_joho_godotenv",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L20",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "go_pkg_github_com_pressly_goose_v3",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L21",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "api_main_main",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L24",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "api_main_runmigrations",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L105",
- "weight": 1.0
- },
- {
- "source": "api_main_main",
- "target": "api_main_runmigrations",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L42",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_emailtemplate",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L27",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_magiclinkemail",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L33",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_welcomeemail",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L40",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_bookingconfirmationemail",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L47",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_passwordresetemail",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L54",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_magiclinkemailen",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L61",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_magiclinkemailcs",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L157",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_welcomeemailen",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L253",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_welcomeemailcs",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L335",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_bookingconfirmationen",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L417",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_bookingconfirmationcs",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L507",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_passwordreseten",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L597",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_passwordresetcs",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L671",
- "weight": 1.0
- },
- {
- "source": "email_templates_magiclinkemail",
- "target": "email_templates_magiclinkemailcs",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L35",
- "weight": 1.0
- },
- {
- "source": "email_templates_magiclinkemail",
- "target": "email_templates_magiclinkemailen",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L37",
- "weight": 1.0
- },
- {
- "source": "email_templates_welcomeemail",
- "target": "email_templates_welcomeemailcs",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L42",
- "weight": 1.0
- },
- {
- "source": "email_templates_welcomeemail",
- "target": "email_templates_welcomeemailen",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L44",
- "weight": 1.0
- },
- {
- "source": "email_templates_bookingconfirmationemail",
- "target": "email_templates_bookingconfirmationcs",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L49",
- "weight": 1.0
- },
- {
- "source": "email_templates_bookingconfirmationemail",
- "target": "email_templates_bookingconfirmationen",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L51",
- "weight": 1.0
- },
- {
- "source": "email_templates_passwordresetemail",
- "target": "email_templates_passwordresetcs",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L56",
- "weight": 1.0
- },
- {
- "source": "email_templates_passwordresetemail",
- "target": "email_templates_passwordreseten",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L58",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_service_go",
- "target": "go_pkg_crypto_tls",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_service_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_service_go",
- "target": "go_pkg_net_smtp",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_service_go",
- "target": "go_pkg_github_com_jordan_wright_email",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_service_go",
- "target": "email_config",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_service_go",
- "target": "email_service",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L19",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_email_service_go",
- "target": "email_service_new",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L23",
- "weight": 1.0
- },
- {
- "source": "email_service",
- "target": "email_service_sendmagiclink",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L28",
- "weight": 1.0
- },
- {
- "source": "email_service",
- "target": "email_service_sendwelcomeemail",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L34",
- "weight": 1.0
- },
- {
- "source": "email_service",
- "target": "email_service_sendbookingconfirmation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L40",
- "weight": 1.0
- },
- {
- "source": "email_service",
- "target": "email_service_sendpasswordreset",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L46",
- "weight": 1.0
- },
- {
- "source": "email_service",
- "target": "email_service_sendtemplate",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L52",
- "weight": 1.0
- },
- {
- "source": "email_service",
- "target": "email_service_send",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L64",
- "weight": 1.0
- },
- {
- "source": "email_service_sendmagiclink",
- "target": "email_service_sendtemplate",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L30",
- "weight": 1.0
- },
- {
- "source": "email_service_sendwelcomeemail",
- "target": "email_service_sendtemplate",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L36",
- "weight": 1.0
- },
- {
- "source": "email_service_sendbookingconfirmation",
- "target": "email_service_sendtemplate",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L42",
- "weight": 1.0
- },
- {
- "source": "email_service_sendpasswordreset",
- "target": "email_service_sendtemplate",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L48",
- "weight": 1.0
- },
- {
- "source": "email_service_sendtemplate",
- "target": "email_service_send",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L60",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_db_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_db_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_db_go",
- "target": "go_pkg_github_com_jackc_pgx_v5",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_db_go",
- "target": "go_pkg_github_com_jackc_pgx_v5_pgxpool",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_db_go",
- "target": "db_db",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_db_go",
- "target": "db_db_new",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L15",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_close",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L33",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_pool",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L37",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_queryrow",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L41",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_query",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L45",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_exec",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L49",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_db_go",
- "target": "db_stats",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L55",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_getstats",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L70",
- "weight": 1.0
- },
- {
- "source": "db_db_getstats",
- "target": "db_db_queryrow",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L74",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_repository_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_repository_go",
- "target": "go_pkg_encoding_json",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_repository_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_repository_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_repository_go",
- "target": "go_pkg_github_com_google_uuid",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_repository_go",
- "target": "go_pkg_github_com_jackc_pgx_v5",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_repository_go",
- "target": "db_user",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_db_repository_go",
- "target": "db_magiclink",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L26",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_getuserbyemail",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L35",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_getuserbyid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L63",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_getuserbyproviderid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L91",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_createuser",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L118",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_updateuser",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L138",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_updatelastlogin",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L152",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_createmagiclink",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L159",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_getmagiclink",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L167",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_markmagiclinkused",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L187",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_putkv",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L192",
- "weight": 1.0
- },
- {
- "source": "db_db",
- "target": "db_db_getkv",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L207",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_config_config_test_go",
- "target": "go_pkg_os",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_config_config_test_go",
- "target": "go_pkg_testing",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_config_config_test_go",
- "target": "config_config_test_teststripereadinesshelpers",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_config_config_test_go",
- "target": "config_config_test_teststripecheckoutreadyrequiressecretandprice",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L30",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_config_config_test_go",
- "target": "config_config_test_testloaddefaultsauthserviceportto8081",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L47",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_config_config_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_config_config_go",
- "target": "go_pkg_os",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_config_config_go",
- "target": "go_pkg_strconv",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_config_config_go",
- "target": "go_pkg_strings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_config_config_go",
- "target": "config_config",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_config_config_go",
- "target": "config_config_load",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L33",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_config_config_go",
- "target": "config_config_getenv",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L80",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_config_config_go",
- "target": "config_config_getenvallowempty",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L87",
- "weight": 1.0
- },
- {
- "source": "config_config",
- "target": "config_config_stripesecretconfigured",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L94",
- "weight": 1.0
- },
- {
- "source": "config_config",
- "target": "config_config_stripewebhookconfigured",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L98",
- "weight": 1.0
- },
- {
- "source": "config_config",
- "target": "config_config_stripehasanypriceconfigured",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L102",
- "weight": 1.0
- },
- {
- "source": "config_config",
- "target": "config_config_stripecheckoutready",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L111",
- "weight": 1.0
- },
- {
- "source": "config_config_load",
- "target": "config_config_getenv",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L34",
- "weight": 1.0
- },
- {
- "source": "config_config_load",
- "target": "config_config_getenvallowempty",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L53",
- "weight": 1.0
- },
- {
- "source": "config_config_stripecheckoutready",
- "target": "config_config_stripesecretconfigured",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L112",
- "weight": 1.0
- },
- {
- "source": "config_config_stripecheckoutready",
- "target": "config_config_stripehasanypriceconfigured",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L112",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_oauth_google_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_oauth_google_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_oauth_google_go",
- "target": "go_pkg_encoding_json",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_oauth_google_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_oauth_google_go",
- "target": "go_pkg_io",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_oauth_google_go",
- "target": "go_pkg_net_http",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_oauth_google_go",
- "target": "go_pkg_golang_org_x_oauth2",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_oauth_google_go",
- "target": "go_pkg_golang_org_x_oauth2_google",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_oauth_google_go",
- "target": "oauth_googleuser",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L15",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_oauth_google_go",
- "target": "oauth_googleprovider",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L23",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_oauth_google_go",
- "target": "oauth_google_newgoogleprovider",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L27",
- "weight": 1.0
- },
- {
- "source": "oauth_googleprovider",
- "target": "oauth_googleprovider_enabled",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L52",
- "weight": 1.0
- },
- {
- "source": "oauth_googleprovider",
- "target": "oauth_googleprovider_getauthurl",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L56",
- "weight": 1.0
- },
- {
- "source": "oauth_googleprovider",
- "target": "oauth_googleprovider_exchangecode",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L60",
- "weight": 1.0
- },
- {
- "source": "oauth_googleprovider",
- "target": "oauth_googleprovider_parseuser",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L86",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_auth",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_billing",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_email",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_oauth",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_crypto_rand",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_encoding_base64",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_io",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_log",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L15",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_net_http",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L16",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_net_url",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L17",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_strings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L18",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L19",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "go_pkg_github_com_gin_gonic_gin",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L21",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_handler",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L24",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_loginrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L33",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_verifyrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L38",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_refreshrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L42",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_passwordregisterrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L46",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_passwordloginrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L52",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_checkoutrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L57",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_handlers_new",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L62",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_registerroutes",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L77",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_sendmagiclink",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L109",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_handlers_detectlocale",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L132",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_verifymagiclink",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L141",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_registerwithpassword",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L157",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_loginwithpassword",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L177",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_refreshtoken",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L193",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_getme",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L221",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_logout",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L237",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_listproviders",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L241",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_googleauth",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L260",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_googlecallback",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L273",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_getsubscription",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L314",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_createcheckoutsession",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L329",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_refreshsubscription",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L361",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_listplans",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L381",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_stripewebhook",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L414",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_requireauth",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L435",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_verifybearertoken",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L462",
- "weight": 1.0
- },
- {
- "source": "handlers_handler",
- "target": "handlers_handler_claimsfromcontext",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L472",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_handlers_generatestate",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L488",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_handlers_oauthcookiesecure",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L496",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_handlers_timeoutmiddleware",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L506",
- "weight": 1.0
- },
- {
- "source": "handlers_handler_registerroutes",
- "target": "handlers_handler_requireauth",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L86",
- "weight": 1.0
- },
- {
- "source": "handlers_handler_sendmagiclink",
- "target": "handlers_handlers_detectlocale",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L119",
- "weight": 1.0
- },
- {
- "source": "handlers_handler_googleauth",
- "target": "handlers_handlers_generatestate",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L266",
- "weight": 1.0
- },
- {
- "source": "handlers_handler_googleauth",
- "target": "handlers_handlers_oauthcookiesecure",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L269",
- "weight": 1.0
- },
- {
- "source": "handlers_handler_googlecallback",
- "target": "handlers_handlers_oauthcookiesecure",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L282",
- "weight": 1.0
- },
- {
- "source": "handlers_handler_getsubscription",
- "target": "handlers_handler_claimsfromcontext",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L315",
- "weight": 1.0
- },
- {
- "source": "handlers_handler_createcheckoutsession",
- "target": "handlers_handler_claimsfromcontext",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L330",
- "weight": 1.0
- },
- {
- "source": "handlers_handler_refreshsubscription",
- "target": "handlers_handler_claimsfromcontext",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L362",
- "weight": 1.0
- },
- {
- "source": "handlers_handler_requireauth",
- "target": "handlers_handler_verifybearertoken",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L450",
- "weight": 1.0
- },
- {
- "source": "handlers_handler_verifybearertoken",
- "target": "handlers_handlers_new",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L469",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_admin_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_admin_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_admin_go",
- "target": "go_pkg_net_http",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_admin_go",
- "target": "go_pkg_strings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_admin_go",
- "target": "go_pkg_github_com_gin_gonic_gin",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_admin_go",
- "target": "handlers_admindashboard",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_handlers_admin_go",
- "target": "handlers_admin_newadmindashboard",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L18",
- "weight": 1.0
- },
- {
- "source": "handlers_admindashboard",
- "target": "handlers_admindashboard_registerroutes",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L23",
- "weight": 1.0
- },
- {
- "source": "handlers_admindashboard",
- "target": "handlers_admindashboard_getconfig",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L34",
- "weight": 1.0
- },
- {
- "source": "handlers_admindashboard",
- "target": "handlers_admindashboard_getprices",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L54",
- "weight": 1.0
- },
- {
- "source": "handlers_admindashboard",
- "target": "handlers_admindashboard_getstats",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L108",
- "weight": 1.0
- },
- {
- "source": "handlers_admindashboard",
- "target": "handlers_admindashboard_renderdashboard",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L124",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_encoding_json",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_slices",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_strings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_github_com_stripe_stripe_go_v83",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L15",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_github_com_stripe_stripe_go_v83_checkout_session",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L16",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_github_com_stripe_stripe_go_v83_customer",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L17",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_github_com_stripe_stripe_go_v83_subscription",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L18",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "go_pkg_github_com_stripe_stripe_go_v83_webhook",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L19",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_service",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L43",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_checkoutsession",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L48",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_subscriptionsnapshot",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L52",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_paymentmethod",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L68",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_useridentity",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L73",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_usercustomermapping",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L79",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_service_newservice",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L84",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_getsubscription",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L88",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_createcheckoutsession",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L112",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_refresh",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L161",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_handlewebhook",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L175",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_ensurecustomer",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L203",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_syncstripedatatokv",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L234",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_storecustomermapping",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L290",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_getcustomermapping",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L298",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_getcustomersnapshot",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L310",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_nonesnapshot",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L319",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_priceforplan",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L327",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_defaultplancode",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L360",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_plancodeforprice",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L372",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_hasconfiguredprices",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L381",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_checkoutavailableforplan",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L385",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_service_normalizeplancode",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L396",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_service_normalizecurrency",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L407",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_service_usercustomerkey",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L416",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_service_customersnapshotkey",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L420",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_service_unixptr",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L424",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_service_subscriptionrank",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L432",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_service_extractcustomerid",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L453",
- "weight": 1.0
- },
- {
- "source": "billing_service_getsubscription",
- "target": "billing_service_getcustomermapping",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L89",
- "weight": 1.0
- },
- {
- "source": "billing_service_getsubscription",
- "target": "billing_service_nonesnapshot",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L94",
- "weight": 1.0
- },
- {
- "source": "billing_service_getsubscription",
- "target": "billing_service_getcustomersnapshot",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L97",
- "weight": 1.0
- },
- {
- "source": "billing_service_getsubscription",
- "target": "billing_service_checkoutavailableforplan",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L107",
- "weight": 1.0
- },
- {
- "source": "billing_service_createcheckoutsession",
- "target": "billing_service_priceforplan",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L113",
- "weight": 1.0
- },
- {
- "source": "billing_service_createcheckoutsession",
- "target": "billing_service_ensurecustomer",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L121",
- "weight": 1.0
- },
- {
- "source": "billing_service_refresh",
- "target": "billing_service_getcustomermapping",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L162",
- "weight": 1.0
- },
- {
- "source": "billing_service_refresh",
- "target": "billing_service_nonesnapshot",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L167",
- "weight": 1.0
- },
- {
- "source": "billing_service_refresh",
- "target": "billing_service_syncstripedatatokv",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L172",
- "weight": 1.0
- },
- {
- "source": "billing_service_handlewebhook",
- "target": "billing_service_extractcustomerid",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L194",
- "weight": 1.0
- },
- {
- "source": "billing_service_handlewebhook",
- "target": "billing_service_syncstripedatatokv",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L199",
- "weight": 1.0
- },
- {
- "source": "billing_service_ensurecustomer",
- "target": "billing_service_getcustomermapping",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L204",
- "weight": 1.0
- },
- {
- "source": "billing_service_ensurecustomer",
- "target": "billing_service_storecustomermapping",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L228",
- "weight": 1.0
- },
- {
- "source": "billing_service_syncstripedatatokv",
- "target": "billing_service_subscriptionrank",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L245",
- "weight": 1.0
- },
- {
- "source": "billing_service_syncstripedatatokv",
- "target": "billing_service_plancodeforprice",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L270",
- "weight": 1.0
- },
- {
- "source": "billing_service_syncstripedatatokv",
- "target": "billing_service_normalizecurrency",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L271",
- "weight": 1.0
- },
- {
- "source": "billing_service_syncstripedatatokv",
- "target": "billing_service_unixptr",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L273",
- "weight": 1.0
- },
- {
- "source": "billing_service_syncstripedatatokv",
- "target": "billing_service_customersnapshotkey",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L284",
- "weight": 1.0
- },
- {
- "source": "billing_service_storecustomermapping",
- "target": "billing_service_usercustomerkey",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L295",
- "weight": 1.0
- },
- {
- "source": "billing_service_getcustomermapping",
- "target": "billing_service_usercustomerkey",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L300",
- "weight": 1.0
- },
- {
- "source": "billing_service_getcustomersnapshot",
- "target": "billing_service_customersnapshotkey",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L312",
- "weight": 1.0
- },
- {
- "source": "billing_service_priceforplan",
- "target": "billing_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L328",
- "weight": 1.0
- },
- {
- "source": "billing_service_priceforplan",
- "target": "billing_service_defaultplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L330",
- "weight": 1.0
- },
- {
- "source": "billing_service_priceforplan",
- "target": "billing_service_normalizecurrency",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L335",
- "weight": 1.0
- },
- {
- "source": "billing_service_defaultplancode",
- "target": "billing_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L363",
- "weight": 1.0
- },
- {
- "source": "billing_service_plancodeforprice",
- "target": "billing_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L375",
- "weight": 1.0
- },
- {
- "source": "billing_service_hasconfiguredprices",
- "target": "billing_service_defaultplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L382",
- "weight": 1.0
- },
- {
- "source": "billing_service_checkoutavailableforplan",
- "target": "billing_service_hasconfiguredprices",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L390",
- "weight": 1.0
- },
- {
- "source": "billing_service_checkoutavailableforplan",
- "target": "billing_service_priceforplan",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L392",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_test_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_test_go",
- "target": "go_pkg_testing",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_test_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_test_go",
- "target": "billing_service_test_testpriceforplanusesconfiguredplancodesonly",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_test_go",
- "target": "billing_service_test_testkvkeyshape",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L40",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_test_go",
- "target": "billing_service_test_testcheckoutavailableforplanrequiressecret",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L49",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_billing_service_test_go",
- "target": "billing_service_test_testcheckoutavailableforplanrequiresconfiguredplan",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L61",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "go_pkg_crypto_rand",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "go_pkg_encoding_base64",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_email",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "go_pkg_github_com_golang_jwt_jwt_v5",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "go_pkg_github_com_google_uuid",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "go_pkg_golang_org_x_crypto_bcrypt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L15",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "auth_service",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L23",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "auth_tokenpair",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L30",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "auth_claims",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L37",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "auth_service_newservice",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L46",
- "weight": 1.0
- },
- {
- "source": "auth_service",
- "target": "auth_service_generatemagiclink",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L55",
- "weight": 1.0
- },
- {
- "source": "auth_service",
- "target": "auth_service_verifymagiclink",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L93",
- "weight": 1.0
- },
- {
- "source": "auth_service",
- "target": "auth_service_oauthloginorcreate",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L127",
- "weight": 1.0
- },
- {
- "source": "auth_service",
- "target": "auth_service_registerwithpassword",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L170",
- "weight": 1.0
- },
- {
- "source": "auth_service",
- "target": "auth_service_loginwithpassword",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L201",
- "weight": 1.0
- },
- {
- "source": "auth_service",
- "target": "auth_service_generatetokens",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L221",
- "weight": 1.0
- },
- {
- "source": "auth_service",
- "target": "auth_service_generatetokensat",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L226",
- "weight": 1.0
- },
- {
- "source": "auth_service",
- "target": "auth_service_verifytoken",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L250",
- "weight": 1.0
- },
- {
- "source": "auth_service",
- "target": "auth_service_verifyrefreshtoken",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L254",
- "weight": 1.0
- },
- {
- "source": "auth_service",
- "target": "auth_service_refreshtokens",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L258",
- "weight": 1.0
- },
- {
- "source": "auth_service",
- "target": "auth_service_verifytokenoftype",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L286",
- "weight": 1.0
- },
- {
- "source": "auth_service",
- "target": "auth_service_signtoken",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L308",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "auth_service_generaterandomtoken",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L329",
- "weight": 1.0
- },
- {
- "source": "auth_service_generatemagiclink",
- "target": "auth_service_generaterandomtoken",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L72",
- "weight": 1.0
- },
- {
- "source": "auth_service_verifymagiclink",
- "target": "auth_service_generatetokens",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L124",
- "weight": 1.0
- },
- {
- "source": "auth_service_oauthloginorcreate",
- "target": "auth_service_generatetokens",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L167",
- "weight": 1.0
- },
- {
- "source": "auth_service_registerwithpassword",
- "target": "auth_service_generatetokens",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L198",
- "weight": 1.0
- },
- {
- "source": "auth_service_loginwithpassword",
- "target": "auth_service_generatetokens",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L218",
- "weight": 1.0
- },
- {
- "source": "auth_service_generatetokens",
- "target": "auth_service_generatetokensat",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L223",
- "weight": 1.0
- },
- {
- "source": "auth_service_generatetokensat",
- "target": "auth_service_signtoken",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L232",
- "weight": 1.0
- },
- {
- "source": "auth_service_verifytoken",
- "target": "auth_service_verifytokenoftype",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L251",
- "weight": 1.0
- },
- {
- "source": "auth_service_verifyrefreshtoken",
- "target": "auth_service_verifytokenoftype",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L255",
- "weight": 1.0
- },
- {
- "source": "auth_service_refreshtokens",
- "target": "auth_service_verifyrefreshtoken",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L259",
- "weight": 1.0
- },
- {
- "source": "auth_service_refreshtokens",
- "target": "auth_service_generatetokens",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L283",
- "weight": 1.0
- },
- {
- "source": "auth_service_signtoken",
- "target": "auth_service_generaterandomtoken",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L319",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_neon_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_neon_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_neon_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_neon_go",
- "target": "go_pkg_net_url",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_neon_go",
- "target": "go_pkg_strings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_neon_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_neon_go",
- "target": "go_pkg_github_com_micahparks_keyfunc_v3",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_neon_go",
- "target": "go_pkg_github_com_golang_jwt_jwt_v5",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_neon_go",
- "target": "auth_neonverifier",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L15",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_neon_go",
- "target": "auth_neon_newneonverifier",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L22",
- "weight": 1.0
- },
- {
- "source": "auth_neonverifier",
- "target": "auth_neonverifier_enabled",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L42",
- "weight": 1.0
- },
- {
- "source": "auth_neonverifier",
- "target": "auth_neonverifier_close",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L46",
- "weight": 1.0
- },
- {
- "source": "auth_neonverifier",
- "target": "auth_neonverifier_verify",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L52",
- "weight": 1.0
- },
- {
- "source": "auth_neonverifier_verify",
- "target": "auth_neonverifier_enabled",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L53",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_test_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_test_go",
- "target": "go_pkg_testing",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_test_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_test_go",
- "target": "go_pkg_bookra_apps_auth_service_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_test_go",
- "target": "go_pkg_github_com_google_uuid",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_test_go",
- "target": "auth_service_test_testgeneratetokensproducesverifiableaccessandrefreshtokens",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_test_go",
- "target": "auth_service_test_testrefreshtokensreturnsrotatedpair",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L51",
- "weight": 1.0
- },
- {
- "source": "apps_auth_service_internal_auth_service_test_go",
- "target": "auth_service_test_testrefreshtokensrejectsinvalidtoken",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L82",
- "weight": 1.0
- },
- {
- "source": "apps_backend_cmd_api_main_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_cmd_api_main_go",
- "target": "go_pkg_log",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_cmd_api_main_go",
- "target": "go_pkg_net_http",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_cmd_api_main_go",
- "target": "go_pkg_os_signal",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_cmd_api_main_go",
- "target": "go_pkg_syscall",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_cmd_api_main_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_backend_cmd_api_main_go",
- "target": "go_pkg_bookra_apps_backend_internal_api",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_backend_cmd_api_main_go",
- "target": "go_pkg_bookra_apps_backend_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_backend_cmd_api_main_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_backend_cmd_api_main_go",
- "target": "api_main_main",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L16",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_catalog_service_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_catalog_service_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_catalog_service_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_catalog_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_catalog_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_domain",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_catalog_service_go",
- "target": "catalog_service",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L22",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_catalog_service_go",
- "target": "catalog_service_newservice",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L26",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_listlocations",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L34",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_createlocation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L60",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_updatelocation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L88",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_deletelocation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L124",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_listblockeddays",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L145",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_createblockedday",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L171",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_updateblockedday",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L207",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_deleteblockedday",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L254",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_listcustomers",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L284",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_createcustomer",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L319",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_updatecustomer",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L356",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_deletecustomer",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L410",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_listworkinghours",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L431",
- "weight": 1.0
- },
- {
- "source": "catalog_service",
- "target": "catalog_service_updateworkinghours",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L454",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_httpx_middleware_go",
- "target": "go_pkg_net_http",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_httpx_middleware_go",
- "target": "go_pkg_sync",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_httpx_middleware_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_httpx_middleware_go",
- "target": "go_pkg_github_com_gin_gonic_gin",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_httpx_middleware_go",
- "target": "go_pkg_golang_org_x_time_rate",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_httpx_middleware_go",
- "target": "httpx_middleware_securityheaders",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_httpx_middleware_go",
- "target": "httpx_visitor",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L22",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_httpx_middleware_go",
- "target": "httpx_ratelimiter",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L27",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_httpx_middleware_go",
- "target": "httpx_middleware_newratelimiter",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L34",
- "weight": 1.0
- },
- {
- "source": "httpx_ratelimiter",
- "target": "httpx_ratelimiter_middleware",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L42",
- "weight": 1.0
- },
- {
- "source": "httpx_ratelimiter",
- "target": "httpx_ratelimiter_getvisitor",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L59",
- "weight": 1.0
- },
- {
- "source": "httpx_ratelimiter",
- "target": "httpx_ratelimiter_cleanuploop",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L77",
- "weight": 1.0
- },
- {
- "source": "httpx_ratelimiter_middleware",
- "target": "httpx_ratelimiter_cleanuploop",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L43",
- "weight": 1.0
- },
- {
- "source": "httpx_ratelimiter_middleware",
- "target": "httpx_ratelimiter_getvisitor",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L50",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "go_pkg_encoding_json",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "go_pkg_sort",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "go_pkg_strings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "go_pkg_github_com_google_uuid",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "go_pkg_github_com_jackc_pgx_v5",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "go_pkg_github_com_jackc_pgx_v5_pgxpool",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_repository",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L16",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_tenantrecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L74",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_tenantmembershiprecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L88",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_createtenantforuserparams",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L94",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_brandprofilerecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L115",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_availabilityblockrecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L124",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_teaminviterecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L131",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_servicerecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L136",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_availabilityrulerecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L146",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_classsessionrecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L155",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_bookingrecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L166",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_createbookingparams",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L181",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_createdbooking",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L197",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_waitlistentryparams",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L203",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_dashboardmetrics",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L211",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_reminderjobparams",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L217",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_reminderjobrecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L224",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_notificationdeliverylogparams",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L240",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_billingsnapshotrecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L251",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_locationrecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L269",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_createlocationparams",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L277",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_updatelocationparams",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L283",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_blockeddayrecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L289",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_createblockeddayparams",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L300",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_updateblockeddayparams",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L309",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_customerrecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L317",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_createcustomerparams",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L328",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_updatecustomerparams",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L337",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_workinghoursrecord",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L346",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_updateworkinghoursparams",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L354",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_pgrepository",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L360",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_repository_newrepository",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L364",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_gettenantbyslug",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L374",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_gettenantbyid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L399",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_gettenantbybillingcustomerid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L424",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_ensureuseridentity",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L449",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_createtenantforuser",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L461",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_getbrandprofile",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L603",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_gettenantmembershipbyuserid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L620",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_listservicesbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L652",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_listavailabilityrulesbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L683",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_listclasssessionsbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L713",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_listbookingsbytenantbetween",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L747",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_createbooking",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L784",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_appendwaitlistentry",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L812",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_createreminderjob",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L820",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_listduereminderjobs",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L828",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_markreminderjobdispatched",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L870",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_createnotificationdeliverylog",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L879",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_getdashboardmetrics",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L891",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_getsubscriptionsnapshot",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L914",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_upsertsubscriptionsnapshot",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L941",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_updatetenantbillingcustomerid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L969",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_updatetenantbillingstate",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L978",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_recordbillingevent",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L987",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_listlocationsbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1003",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_getlocationbyid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1026",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_createlocation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1036",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_updatelocation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1046",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_deletelocation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1059",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_listblockeddaysbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1068",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_createblockedday",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1091",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_updateblockedday",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1101",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_deleteblockedday",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1115",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_listcustomersbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1124",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_getcustomerbyid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1148",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_getcustomerbyemail",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1158",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_createcustomer",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1168",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_updatecustomer",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1178",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_deletecustomer",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1193",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_getcustomerbookingscount",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1198",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_getcustomerlastbooking",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1207",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_getbookingbyreference",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1220",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_updatebookingstatus",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1232",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_reschedulebooking",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1239",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_listworkinghoursbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1250",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository",
- "target": "db_pgrepository_updateworkinghours",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1273",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_memoryrepository",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1283",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_repository_newmemoryrepository",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1302",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_gettenantbyslug",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1411",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_gettenantbyid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1418",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_gettenantbybillingcustomerid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1425",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_ensureuseridentity",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1432",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_createtenantforuser",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1442",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_gettenantmembershipbyuserid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1503",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_getbrandprofile",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1513",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_listservicesbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1523",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_listavailabilityrulesbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1530",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_listclasssessionsbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1537",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_listbookingsbytenantbetween",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1555",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_createbooking",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1569",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_appendwaitlistentry",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1592",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_createreminderjob",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1597",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_listduereminderjobs",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1629",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_markreminderjobdispatched",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1643",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_createnotificationdeliverylog",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1653",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_getdashboardmetrics",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1658",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_getsubscriptionsnapshot",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1683",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_upsertsubscriptionsnapshot",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1690",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_updatetenantbillingcustomerid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1695",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_updatetenantbillingstate",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1708",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_recordbillingevent",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1725",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_listlocationsbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1744",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_getlocationbyid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1751",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_createlocation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1760",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_updatelocation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1772",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_deletelocation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1787",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_listblockeddaysbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1801",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_createblockedday",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1814",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_updateblockedday",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1829",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_deleteblockedday",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1850",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_listcustomersbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1864",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_getcustomerbyid",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1879",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_getcustomerbyemail",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1888",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_createcustomer",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1897",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_updatecustomer",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1912",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_deletecustomer",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1936",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_getcustomerbookingscount",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1946",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_getcustomerlastbooking",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1958",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_getbookingbyreference",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1984",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_updatebookingstatus",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1993",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_reschedulebooking",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2003",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_listworkinghoursbytenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2018",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_updateworkinghours",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2025",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_repository_reference",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2043",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_repository_stringptr",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2047",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_repository_maxint",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2051",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_repository_firstnonempty",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2058",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_repository_defaultavailabilityblocks",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2067",
- "weight": 1.0
- },
- {
- "source": "db_repository_newrepository",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L366",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository_createtenantforuser",
- "target": "db_repository_maxint",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L540",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository_createtenantforuser",
- "target": "db_repository_defaultavailabilityblocks",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L561",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository_upsertsubscriptionsnapshot",
- "target": "db_repository_firstnonempty",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L963",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository_recordbillingevent",
- "target": "db_repository_firstnonempty",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L992",
- "weight": 1.0
- },
- {
- "source": "db_repository_newmemoryrepository",
- "target": "db_repository_stringptr",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1322",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository_createtenantforuser",
- "target": "db_repository_firstnonempty",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1461",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository_createtenantforuser",
- "target": "db_repository_maxint",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1476",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository_createtenantforuser",
- "target": "db_repository_defaultavailabilityblocks",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1483",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository_recordbillingevent",
- "target": "db_repository_firstnonempty",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1726",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_pool_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_pool_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_pool_go",
- "target": "go_pkg_bookra_apps_backend_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_pool_go",
- "target": "go_pkg_github_com_jackc_pgx_v5_pgxpool",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_pool_go",
- "target": "db_pools",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_pool_go",
- "target": "db_pool_newpools",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L17",
- "weight": 1.0
- },
- {
- "source": "db_pools",
- "target": "db_pools_close",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L39",
- "weight": 1.0
- },
- {
- "source": "db_pools",
- "target": "db_pools_databaseconfigured",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L48",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_db_pool_go",
- "target": "db_pool_connect",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L52",
- "weight": 1.0
- },
- {
- "source": "db_pool_newpools",
- "target": "db_pool_connect",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L21",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_principal",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_dashboardkpi",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_upcomingbooking",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L18",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_widgetsnippet",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L28",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_trackingstatus",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L33",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_dashboardsummary",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L40",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_brandprofile",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L54",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_tenantbootstrap",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L61",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_teaminviterequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L74",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_availabilityblockrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L79",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_bookingdefaultsrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L86",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_onboardtenantrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L94",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_timeslot",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L107",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_publicavailability",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L119",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_createbookingrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L126",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_createbookingresponse",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L140",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_planentitlements",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L146",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_plandisplayprice",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L155",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_subscriptionsnapshot",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L161",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_checkoutsessionrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L184",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_checkoutlaunchresponse",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L189",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_portalsessionresponse",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L198",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_dispatchreminderjobsrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L202",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_dispatchreminderjobsresponse",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L206",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_location",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L216",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_createlocationrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L226",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_updatelocationrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L232",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_blockedday",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L242",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_createblockeddayrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L252",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_updateblockeddayrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L259",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_customer",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L268",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_createcustomerrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L281",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_updatecustomerrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L289",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_customerbookingview",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L301",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_reschedulebookingrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L314",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_cancelbookingrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L320",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_workinghours",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L328",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_updateworkinghoursrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L335",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_emailtemplate",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L345",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_sendemailrequest",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L355",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_emailnotification",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L362",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_test_go",
- "target": "go_pkg_testing",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config_test.go",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_test_go",
- "target": "config_config_test_testpaddlecheckoutconfigured",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config_test.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_test_go",
- "target": "config_config_test_testpaddlecheckoutconfiguredrequireswebhook",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config_test.go",
- "source_location": "L21",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_go",
- "target": "go_pkg_os",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_go",
- "target": "go_pkg_strings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_go",
- "target": "config_config",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_go",
- "target": "config_config_load",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L34",
- "weight": 1.0
- },
- {
- "source": "config_config",
- "target": "config_config_validateruntimerequirements",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L69",
- "weight": 1.0
- },
- {
- "source": "config_config",
- "target": "config_config_paddleconfigured",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L106",
- "weight": 1.0
- },
- {
- "source": "config_config",
- "target": "config_config_paddlewebhookconfigured",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L110",
- "weight": 1.0
- },
- {
- "source": "config_config",
- "target": "config_config_paddlecheckoutconfigured",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L114",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_go",
- "target": "config_config_paddlepricematrixfromenv",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L119",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_go",
- "target": "config_config_normalizepaddleenvironment",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L133",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_go",
- "target": "config_config_normalizeplancode",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L142",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_go",
- "target": "config_config_valueordefault",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L153",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_go",
- "target": "config_config_boolfromenv",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L160",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_config_config_go",
- "target": "config_config_uniquestrings",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L169",
- "weight": 1.0
- },
- {
- "source": "config_config_load",
- "target": "config_config_valueordefault",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L36",
- "weight": 1.0
- },
- {
- "source": "config_config_load",
- "target": "config_config_normalizepaddleenvironment",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L50",
- "weight": 1.0
- },
- {
- "source": "config_config_load",
- "target": "config_config_paddlepricematrixfromenv",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L53",
- "weight": 1.0
- },
- {
- "source": "config_config_load",
- "target": "config_config_boolfromenv",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L56",
- "weight": 1.0
- },
- {
- "source": "config_config_load",
- "target": "config_config_validateruntimerequirements",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L62",
- "weight": 1.0
- },
- {
- "source": "config_config_validateruntimerequirements",
- "target": "config_config_uniquestrings",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L101",
- "weight": 1.0
- },
- {
- "source": "config_config_paddlecheckoutconfigured",
- "target": "config_config_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L115",
- "weight": 1.0
- },
- {
- "source": "config_config_paddlecheckoutconfigured",
- "target": "config_config_paddleconfigured",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L116",
- "weight": 1.0
- },
- {
- "source": "config_config_paddlecheckoutconfigured",
- "target": "config_config_paddlewebhookconfigured",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L116",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "go_pkg_net",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "go_pkg_net_smtp",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "go_pkg_strings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_domain",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_deliveryreceipt",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L19",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_emailmessage",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L24",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_emailprovider",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L32",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_service",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L36",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_service_newservice",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L43",
- "weight": 1.0
- },
- {
- "source": "notifications_service",
- "target": "notifications_service_dispatchdue",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L57",
- "weight": 1.0
- },
- {
- "source": "notifications_service",
- "target": "notifications_service_sendbookingconfirmation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L124",
- "weight": 1.0
- },
- {
- "source": "notifications_service",
- "target": "notifications_service_sendbookingreschedule",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L135",
- "weight": 1.0
- },
- {
- "source": "notifications_service",
- "target": "notifications_service_sendbookingcancellation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L146",
- "weight": 1.0
- },
- {
- "source": "notifications_service",
- "target": "notifications_service_sendbusinessnotification",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L157",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_service_renderemailmessage",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L168",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_service_renderremindercopy",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L172",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_service_localizedstartsat",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L196",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_service_reminderrecipient",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L208",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_noopemailprovider",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L212",
- "weight": 1.0
- },
- {
- "source": "notifications_noopemailprovider",
- "target": "notifications_noopemailprovider_send",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L214",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_smtpemailprovider",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L224",
- "weight": 1.0
- },
- {
- "source": "notifications_smtpemailprovider",
- "target": "notifications_smtpemailprovider_send",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L228",
- "weight": 1.0
- },
- {
- "source": "notifications_service_newservice",
- "target": "notifications_emailprovider",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L44",
- "weight": 1.0
- },
- {
- "source": "notifications_service_dispatchdue",
- "target": "notifications_smtpemailprovider_send",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L78",
- "weight": 1.0
- },
- {
- "source": "notifications_service_dispatchdue",
- "target": "notifications_service_renderemailmessage",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L78",
- "weight": 1.0
- },
- {
- "source": "notifications_service_dispatchdue",
- "target": "notifications_service_reminderrecipient",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L105",
- "weight": 1.0
- },
- {
- "source": "notifications_service_sendbookingconfirmation",
- "target": "notifications_service_renderemailmessage",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L129",
- "weight": 1.0
- },
- {
- "source": "notifications_service_sendbookingconfirmation",
- "target": "notifications_smtpemailprovider_send",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L130",
- "weight": 1.0
- },
- {
- "source": "notifications_service_sendbookingreschedule",
- "target": "notifications_service_renderemailmessage",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L140",
- "weight": 1.0
- },
- {
- "source": "notifications_service_sendbookingreschedule",
- "target": "notifications_smtpemailprovider_send",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L141",
- "weight": 1.0
- },
- {
- "source": "notifications_service_sendbookingcancellation",
- "target": "notifications_service_renderemailmessage",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L151",
- "weight": 1.0
- },
- {
- "source": "notifications_service_sendbookingcancellation",
- "target": "notifications_smtpemailprovider_send",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L152",
- "weight": 1.0
- },
- {
- "source": "notifications_service_sendbusinessnotification",
- "target": "notifications_service_renderemailmessage",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L162",
- "weight": 1.0
- },
- {
- "source": "notifications_service_sendbusinessnotification",
- "target": "notifications_smtpemailprovider_send",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L164",
- "weight": 1.0
- },
- {
- "source": "notifications_service_renderremindercopy",
- "target": "notifications_service_localizedstartsat",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L173",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_emailtype",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_bookingemaildata",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L20",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_renderemailmessage",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L42",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_rendersubject",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L56",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_rendertextbody",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L90",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_renderhtmlbody",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L241",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_formatlocalizedtime",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L266",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_formatlocalizeddatetime",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L278",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_splitparagraphs",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L290",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_splitlines",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L313",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_trimspace",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L326",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_renderreminderemail",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L339",
- "weight": 1.0
- },
- {
- "source": "notifications_email_templates_renderemailmessage",
- "target": "notifications_email_templates_rendersubject",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L43",
- "weight": 1.0
- },
- {
- "source": "notifications_email_templates_renderemailmessage",
- "target": "notifications_email_templates_renderhtmlbody",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L44",
- "weight": 1.0
- },
- {
- "source": "notifications_email_templates_renderemailmessage",
- "target": "notifications_email_templates_rendertextbody",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L45",
- "weight": 1.0
- },
- {
- "source": "notifications_email_templates_rendersubject",
- "target": "notifications_email_templates_formatlocalizedtime",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L57",
- "weight": 1.0
- },
- {
- "source": "notifications_email_templates_rendertextbody",
- "target": "notifications_email_templates_formatlocalizeddatetime",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L91",
- "weight": 1.0
- },
- {
- "source": "notifications_email_templates_renderhtmlbody",
- "target": "notifications_email_templates_rendertextbody",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L243",
- "weight": 1.0
- },
- {
- "source": "notifications_email_templates_renderhtmlbody",
- "target": "notifications_email_templates_splitparagraphs",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L250",
- "weight": 1.0
- },
- {
- "source": "notifications_email_templates_splitparagraphs",
- "target": "notifications_email_templates_splitlines",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L293",
- "weight": 1.0
- },
- {
- "source": "notifications_email_templates_splitparagraphs",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L294",
- "weight": 1.0
- },
- {
- "source": "notifications_email_templates_renderreminderemail",
- "target": "notifications_email_templates_renderemailmessage",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L353",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_test_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_test_go",
- "target": "go_pkg_testing",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_test_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_test_go",
- "target": "go_pkg_bookra_apps_backend_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_test_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_test_go",
- "target": "go_pkg_bookra_apps_backend_internal_domain",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_test_go",
- "target": "notifications_service_test_testdispatchdueprocessespendingemailreminders",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_test_go",
- "target": "notifications_service_test_testdispatchduefailsunknownchannel",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L66",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_notifications_service_test_go",
- "target": "notifications_service_test_testdispatchrequestcontractshape",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L87",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "go_pkg_net_mail",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "go_pkg_sort",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "go_pkg_strings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_domain",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_notifications",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "go_pkg_github_com_jackc_pgx_v5",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L16",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L27",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_notifier",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L32",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_newservice",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L37",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_noopnotifier",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L44",
- "weight": 1.0
- },
- {
- "source": "bookings_noopnotifier",
- "target": "bookings_noopnotifier_sendbookingconfirmation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L46",
- "weight": 1.0
- },
- {
- "source": "bookings_noopnotifier",
- "target": "bookings_noopnotifier_sendbusinessnotification",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L50",
- "weight": 1.0
- },
- {
- "source": "bookings_service",
- "target": "bookings_service_availability",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L54",
- "weight": 1.0
- },
- {
- "source": "bookings_service",
- "target": "bookings_service_create",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L98",
- "weight": 1.0
- },
- {
- "source": "bookings_service",
- "target": "bookings_service_sendbookingconfirmationemails",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L240",
- "weight": 1.0
- },
- {
- "source": "bookings_service",
- "target": "bookings_service_serviceforrequest",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L273",
- "weight": 1.0
- },
- {
- "source": "bookings_service",
- "target": "bookings_service_classsessionforrequest",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L286",
- "weight": 1.0
- },
- {
- "source": "bookings_service",
- "target": "bookings_service_dashboardsummary",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L299",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_widgetsnippets",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L352",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_trackingstatus",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L361",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_normalizeplancode",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L369",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_generateappointmentslots",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L380",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_generateclassslots",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L449",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_collides",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L471",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_sameresource",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L486",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_samesecond",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L493",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_countclassbookings",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L497",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_reminderschedule",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L510",
- "weight": 1.0
- },
- {
- "source": "bookings_service_availability",
- "target": "bookings_service_generateappointmentslots",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L83",
- "weight": 1.0
- },
- {
- "source": "bookings_service_availability",
- "target": "bookings_service_generateclassslots",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L84",
- "weight": 1.0
- },
- {
- "source": "bookings_service_create",
- "target": "bookings_service_serviceforrequest",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L146",
- "weight": 1.0
- },
- {
- "source": "bookings_service_create",
- "target": "bookings_service_sameresource",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L161",
- "weight": 1.0
- },
- {
- "source": "bookings_service_create",
- "target": "bookings_service_classsessionforrequest",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L169",
- "weight": 1.0
- },
- {
- "source": "bookings_service_create",
- "target": "bookings_service_samesecond",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L176",
- "weight": 1.0
- },
- {
- "source": "bookings_service_create",
- "target": "bookings_service_countclassbookings",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L179",
- "weight": 1.0
- },
- {
- "source": "bookings_service_create",
- "target": "bookings_service_reminderschedule",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L219",
- "weight": 1.0
- },
- {
- "source": "bookings_service_create",
- "target": "bookings_service_sendbookingconfirmationemails",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L231",
- "weight": 1.0
- },
- {
- "source": "bookings_service_sendbookingconfirmationemails",
- "target": "bookings_noopnotifier_sendbookingconfirmation",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L270",
- "weight": 1.0
- },
- {
- "source": "bookings_service_dashboardsummary",
- "target": "bookings_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L338",
- "weight": 1.0
- },
- {
- "source": "bookings_service_dashboardsummary",
- "target": "bookings_service_widgetsnippets",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L347",
- "weight": 1.0
- },
- {
- "source": "bookings_service_dashboardsummary",
- "target": "bookings_service_trackingstatus",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L348",
- "weight": 1.0
- },
- {
- "source": "bookings_service_generateappointmentslots",
- "target": "bookings_service_collides",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L426",
- "weight": 1.0
- },
- {
- "source": "bookings_service_generateclassslots",
- "target": "bookings_service_countclassbookings",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L452",
- "weight": 1.0
- },
- {
- "source": "bookings_service_collides",
- "target": "bookings_service_sameresource",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L479",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_customer_service_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_customer_service_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_customer_service_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_customer_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_customer_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_domain",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_customer_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_notifications",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_customer_service_go",
- "target": "bookings_customerservice",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L19",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_customer_service_go",
- "target": "bookings_customernotifier",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L24",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_customer_service_go",
- "target": "bookings_customer_service_newcustomerservice",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L29",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_customer_service_go",
- "target": "bookings_customernoopnotifier",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L36",
- "weight": 1.0
- },
- {
- "source": "bookings_customernoopnotifier",
- "target": "bookings_customernoopnotifier_sendbookingreschedule",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L38",
- "weight": 1.0
- },
- {
- "source": "bookings_customernoopnotifier",
- "target": "bookings_customernoopnotifier_sendbookingcancellation",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L42",
- "weight": 1.0
- },
- {
- "source": "bookings_customerservice",
- "target": "bookings_customerservice_getbookingbyreference",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L47",
- "weight": 1.0
- },
- {
- "source": "bookings_customerservice",
- "target": "bookings_customerservice_reschedulebooking",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L73",
- "weight": 1.0
- },
- {
- "source": "bookings_customerservice",
- "target": "bookings_customerservice_cancelbooking",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L112",
- "weight": 1.0
- },
- {
- "source": "bookings_customerservice",
- "target": "bookings_customerservice_sendrescheduleemail",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L132",
- "weight": 1.0
- },
- {
- "source": "bookings_customerservice",
- "target": "bookings_customerservice_sendcancellationemail",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L168",
- "weight": 1.0
- },
- {
- "source": "bookings_customerservice_reschedulebooking",
- "target": "bookings_customerservice_getbookingbyreference",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L74",
- "weight": 1.0
- },
- {
- "source": "bookings_customerservice_reschedulebooking",
- "target": "bookings_customerservice_sendrescheduleemail",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L106",
- "weight": 1.0
- },
- {
- "source": "bookings_customerservice_cancelbooking",
- "target": "bookings_customerservice_getbookingbyreference",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L113",
- "weight": 1.0
- },
- {
- "source": "bookings_customerservice_cancelbooking",
- "target": "bookings_customerservice_sendcancellationemail",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L127",
- "weight": 1.0
- },
- {
- "source": "bookings_customerservice_sendrescheduleemail",
- "target": "bookings_customernoopnotifier_sendbookingreschedule",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L165",
- "weight": 1.0
- },
- {
- "source": "bookings_customerservice_sendcancellationemail",
- "target": "bookings_customernoopnotifier_sendbookingcancellation",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L199",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "go_pkg_testing",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "go_pkg_bookra_apps_backend_internal_domain",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "bookings_service_test_testcreateappointmentrejectsconflict",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "bookings_service_test_testcreateclassfallsbacktowaitlistwhencapacityreached",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L70",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "bookings_service_test_testcreateappointmentrequirestenantservice",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L127",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "bookings_service_test_testcreateclassrequiresexistingsession",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L144",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "bookings_service_test_testavailabilitygeneratesupcomingslots",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L163",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "bookings_service_test_testcreateschedulesreminderjobforupcomingappointment",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L186",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "go_pkg_encoding_json",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "go_pkg_io",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "go_pkg_net_http",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "go_pkg_slices",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "go_pkg_strings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_domain",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L15",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "go_pkg_github_com_paddlehq_paddle_go_sdk_v5",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L17",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "go_pkg_github_com_jackc_pgx_v5",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L18",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L44",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_webhookenvelope",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L51",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_newservice",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L62",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_getsubscription",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L85",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_createcheckoutsession",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L111",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_refresh",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L146",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_createportalsession",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L177",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_handlewebhook",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L218",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_resolvewebhooktenant",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L279",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_syncpaddledata",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L292",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_tosnapshot",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L353",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_entitlementsforplan",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L390",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_plancodeforprice",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L401",
- "weight": 1.0
- },
- {
- "source": "billing_service",
- "target": "billing_service_priceforplan",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L412",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_subscriptionrank",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L429",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_displaypricesforplan",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L446",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_normalizeplancode",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L466",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_normalizecurrency",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L477",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_normalizesubscriptionstatus",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L488",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_checkoutavailable",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L497",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_customdatastring",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L510",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_parserfc3339ptr",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L526",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_timeperiodstart",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L538",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_timeperiodend",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L545",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_derefstring",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L552",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_firstnonempty",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L559",
- "weight": 1.0
- },
- {
- "source": "billing_service_getsubscription",
- "target": "billing_service_tosnapshot",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L97",
- "weight": 1.0
- },
- {
- "source": "billing_service_getsubscription",
- "target": "billing_service_firstnonempty",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L100",
- "weight": 1.0
- },
- {
- "source": "billing_service_getsubscription",
- "target": "billing_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L101",
- "weight": 1.0
- },
- {
- "source": "billing_service_createcheckoutsession",
- "target": "billing_service_priceforplan",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L120",
- "weight": 1.0
- },
- {
- "source": "billing_service_createcheckoutsession",
- "target": "billing_service_checkoutavailable",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L124",
- "weight": 1.0
- },
- {
- "source": "billing_service_createcheckoutsession",
- "target": "billing_service_derefstring",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L130",
- "weight": 1.0
- },
- {
- "source": "billing_service_refresh",
- "target": "billing_service_derefstring",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L155",
- "weight": 1.0
- },
- {
- "source": "billing_service_refresh",
- "target": "billing_service_tosnapshot",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L157",
- "weight": 1.0
- },
- {
- "source": "billing_service_refresh",
- "target": "billing_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L161",
- "weight": 1.0
- },
- {
- "source": "billing_service_refresh",
- "target": "billing_service_syncpaddledata",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L169",
- "weight": 1.0
- },
- {
- "source": "billing_service_createportalsession",
- "target": "billing_service_derefstring",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L189",
- "weight": 1.0
- },
- {
- "source": "billing_service_createportalsession",
- "target": "billing_service_firstnonempty",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L206",
- "weight": 1.0
- },
- {
- "source": "billing_service_handlewebhook",
- "target": "billing_service_resolvewebhooktenant",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L247",
- "weight": 1.0
- },
- {
- "source": "billing_service_handlewebhook",
- "target": "billing_service_derefstring",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L263",
- "weight": 1.0
- },
- {
- "source": "billing_service_handlewebhook",
- "target": "billing_service_firstnonempty",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L270",
- "weight": 1.0
- },
- {
- "source": "billing_service_handlewebhook",
- "target": "billing_service_syncpaddledata",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L275",
- "weight": 1.0
- },
- {
- "source": "billing_service_resolvewebhooktenant",
- "target": "billing_service_customdatastring",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L281",
- "weight": 1.0
- },
- {
- "source": "billing_service_syncpaddledata",
- "target": "billing_service_subscriptionrank",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L309",
- "weight": 1.0
- },
- {
- "source": "billing_service_syncpaddledata",
- "target": "billing_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L324",
- "weight": 1.0
- },
- {
- "source": "billing_service_syncpaddledata",
- "target": "billing_service_normalizesubscriptionstatus",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L332",
- "weight": 1.0
- },
- {
- "source": "billing_service_syncpaddledata",
- "target": "billing_service_normalizecurrency",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L333",
- "weight": 1.0
- },
- {
- "source": "billing_service_syncpaddledata",
- "target": "billing_service_parserfc3339ptr",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L335",
- "weight": 1.0
- },
- {
- "source": "billing_service_syncpaddledata",
- "target": "billing_service_timeperiodstart",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L335",
- "weight": 1.0
- },
- {
- "source": "billing_service_syncpaddledata",
- "target": "billing_service_timeperiodend",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L336",
- "weight": 1.0
- },
- {
- "source": "billing_service_syncpaddledata",
- "target": "billing_service_plancodeforprice",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L339",
- "weight": 1.0
- },
- {
- "source": "billing_service_tosnapshot",
- "target": "billing_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L355",
- "weight": 1.0
- },
- {
- "source": "billing_service_tosnapshot",
- "target": "billing_service_normalizecurrency",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L359",
- "weight": 1.0
- },
- {
- "source": "billing_service_tosnapshot",
- "target": "billing_service_firstnonempty",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L361",
- "weight": 1.0
- },
- {
- "source": "billing_service_tosnapshot",
- "target": "billing_service_derefstring",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L364",
- "weight": 1.0
- },
- {
- "source": "billing_service_tosnapshot",
- "target": "billing_service_entitlementsforplan",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L380",
- "weight": 1.0
- },
- {
- "source": "billing_service_tosnapshot",
- "target": "billing_service_displaypricesforplan",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L381",
- "weight": 1.0
- },
- {
- "source": "billing_service_tosnapshot",
- "target": "billing_service_checkoutavailable",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L384",
- "weight": 1.0
- },
- {
- "source": "billing_service_entitlementsforplan",
- "target": "billing_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L391",
- "weight": 1.0
- },
- {
- "source": "billing_service_plancodeforprice",
- "target": "billing_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L405",
- "weight": 1.0
- },
- {
- "source": "billing_service_priceforplan",
- "target": "billing_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L413",
- "weight": 1.0
- },
- {
- "source": "billing_service_priceforplan",
- "target": "billing_service_normalizecurrency",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L417",
- "weight": 1.0
- },
- {
- "source": "billing_service_displaypricesforplan",
- "target": "billing_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L447",
- "weight": 1.0
- },
- {
- "source": "billing_service_checkoutavailable",
- "target": "billing_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L501",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "go_pkg_testing",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "go_pkg_bookra_apps_backend_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "go_pkg_bookra_apps_backend_internal_domain",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "billing_service_test_testconfig",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "billing_service_test_testgetsubscriptionfallsbacktosnapshotandentitlements",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L25",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "billing_service_test_testcreatecheckoutrequirespaddleconfig",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L47",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "billing_service_test_testcreatecheckoutreturnslaunchpayload",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L61",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "billing_service_test_testrefreshrequirespaddlekeywhencustomerexists",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L82",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "billing_service_test_testgetsubscriptiondisablescheckoutwhenwebhookmissing",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L96",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "billing_service_test_testgetsubscriptionenablescheckoutwhenpaddleconfigured",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L113",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "billing_service_test_testcreateportalsessionrequirescustomer",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L131",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testgetsubscriptionfallsbacktosnapshotandentitlements",
- "target": "billing_service_test_testconfig",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L26",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testcreatecheckoutrequirespaddleconfig",
- "target": "billing_service_test_testconfig",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L48",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testcreatecheckoutreturnslaunchpayload",
- "target": "billing_service_test_testconfig",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L62",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testrefreshrequirespaddlekeywhencustomerexists",
- "target": "billing_service_test_testconfig",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L83",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testgetsubscriptiondisablescheckoutwhenwebhookmissing",
- "target": "billing_service_test_testconfig",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L97",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testgetsubscriptionenablescheckoutwhenpaddleconfigured",
- "target": "billing_service_test_testconfig",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L114",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testcreateportalsessionrequirescustomer",
- "target": "billing_service_test_testconfig",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L140",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_middleware_go",
- "target": "go_pkg_net_http",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_middleware_go",
- "target": "go_pkg_strings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_middleware_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_middleware_go",
- "target": "go_pkg_bookra_apps_backend_internal_domain",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_middleware_go",
- "target": "go_pkg_github_com_gin_gonic_gin",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_middleware_go",
- "target": "auth_middleware_requireauth",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L23",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_middleware_go",
- "target": "auth_middleware_principalfromcontext",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L82",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_neon_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_neon_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_neon_go",
- "target": "go_pkg_fmt",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_neon_go",
- "target": "go_pkg_net_url",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_neon_go",
- "target": "go_pkg_strings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_neon_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_neon_go",
- "target": "go_pkg_github_com_micahparks_keyfunc_v3",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_neon_go",
- "target": "go_pkg_github_com_golang_jwt_jwt_v5",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_neon_go",
- "target": "auth_verifier",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L15",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_auth_neon_go",
- "target": "auth_neon_newverifier",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L23",
- "weight": 1.0
- },
- {
- "source": "auth_verifier",
- "target": "auth_verifier_enabled",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L58",
- "weight": 1.0
- },
- {
- "source": "auth_verifier",
- "target": "auth_verifier_close",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L62",
- "weight": 1.0
- },
- {
- "source": "auth_verifier",
- "target": "auth_verifier_verify",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L68",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_io",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_net_http",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_strconv",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_bookra_apps_backend_internal_auth",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_bookra_apps_backend_internal_billing",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_bookra_apps_backend_internal_bookings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_bookra_apps_backend_internal_catalog",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_bookra_apps_backend_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L15",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_bookra_apps_backend_internal_domain",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L16",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_bookra_apps_backend_internal_httpx",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L17",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_bookra_apps_backend_internal_notifications",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L18",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_bookra_apps_backend_internal_tenancy",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L19",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_github_com_gin_contrib_cors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L21",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_github_com_gin_gonic_gin",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L22",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "go_pkg_golang_org_x_time_rate",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L23",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "api_server",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L26",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "api_server_newserver",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L33",
- "weight": 1.0
- },
- {
- "source": "api_server",
- "target": "api_server_handler",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L590",
- "weight": 1.0
- },
- {
- "source": "api_server",
- "target": "api_server_close",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L594",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "api_server_authorizejobrunner",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L600",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "api_server_allowedorigins",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L607",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_go",
- "target": "api_server_widgetjavascript",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L634",
- "weight": 1.0
- },
- {
- "source": "api_server_newserver",
- "target": "api_server_allowedorigins",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L56",
- "weight": 1.0
- },
- {
- "source": "api_server_newserver",
- "target": "api_server_authorizejobrunner",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L561",
- "weight": 1.0
- },
- {
- "source": "api_server_newserver",
- "target": "api_server_widgetjavascript",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L584",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_test_go",
- "target": "go_pkg_net_http",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_test_go",
- "target": "go_pkg_net_http_httptest",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_test_go",
- "target": "go_pkg_testing",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_test_go",
- "target": "go_pkg_bookra_apps_backend_internal_config",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_test_go",
- "target": "api_server_test_testdispatchreminderjobsrequiresjobrunnerkey",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_api_server_test_go",
- "target": "api_server_test_testdispatchreminderjobsacceptsconfiguredjobrunnerkey",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L33",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "go_pkg_errors",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "go_pkg_regexp",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "go_pkg_strings",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "go_pkg_time",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "go_pkg_bookra_apps_backend_internal_domain",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "go_pkg_github_com_jackc_pgx_v5",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "go_pkg_github_com_jackc_pgx_v5_pgconn",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "tenancy_service",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L25",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "tenancy_service_newservice",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L29",
- "weight": 1.0
- },
- {
- "source": "tenancy_service",
- "target": "tenancy_service_bootstrap",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L33",
- "weight": 1.0
- },
- {
- "source": "tenancy_service",
- "target": "tenancy_service_onboard",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L73",
- "weight": 1.0
- },
- {
- "source": "tenancy_service",
- "target": "tenancy_service_brandprofile",
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L182",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "tenancy_service_validateavailabilityblocks",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L195",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "tenancy_service_toavailabilityblocks",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L218",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "tenancy_service_toteaminvites",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L231",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "tenancy_service_normalizeclock",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L247",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "tenancy_service_normalizeplancode",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L255",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "tenancy_service_firstnonempty",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L266",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_bootstrap",
- "target": "tenancy_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L61",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_bootstrap",
- "target": "tenancy_service_brandprofile",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L63",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_onboard",
- "target": "tenancy_service_validateavailabilityblocks",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L126",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_onboard",
- "target": "tenancy_service_toavailabilityblocks",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L147",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_onboard",
- "target": "tenancy_service_toteaminvites",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L148",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_onboard",
- "target": "tenancy_service_normalizeplancode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L165",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_brandprofile",
- "target": "tenancy_service_firstnonempty",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L188",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_toavailabilityblocks",
- "target": "tenancy_service_normalizeclock",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L223",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_test_go",
- "target": "go_pkg_context",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_test_go",
- "target": "go_pkg_testing",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_test_go",
- "target": "go_pkg_bookra_apps_backend_internal_db",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_test_go",
- "target": "go_pkg_bookra_apps_backend_internal_domain",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_test_go",
- "target": "tenancy_service_test_testbootstrapresolvesmembershipafteridentitysync",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_test_go",
- "target": "tenancy_service_test_testbootstrapreturnsshellwhenmembershipmissing",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L40",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_test_go",
- "target": "tenancy_service_test_testonboardcreatestenantforauthenticateduser",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L62",
- "weight": 1.0
- },
- {
- "source": "apps_backend_internal_tenancy_service_test_go",
- "target": "tenancy_service_test_testonboardrejectsinvalidslug",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L89",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_vite_config_ts",
- "target": "vite",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/vite.config.ts",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_vite_config_ts",
- "target": "vite_plugin_solid",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/vite.config.ts",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_app_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_app_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_app_tsx",
- "target": "router",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_app_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_auth_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_app_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_i18n_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_app_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_theme_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_app_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_shell",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_app_tsx",
- "target": "src_app_scrolltotop",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_app_tsx",
- "target": "src_app_app",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L22",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_main_tsx",
- "target": "web",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/main.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_main_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/main.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_main_tsx",
- "target": "router",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/main.tsx",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_main_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_app",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/main.tsx",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_main_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_styles_index_css",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/main.tsx",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_about_route_tsx",
- "target": "router",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/about-route.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_about_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_i18n_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/about-route.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_about_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_bookra_character",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/about-route.tsx",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_about_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_ui",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/about-route.tsx",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_about_route_tsx",
- "target": "routes_about_route_aboutroute",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/about-route.tsx",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_auth_callback_route_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/auth-callback-route.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_auth_callback_route_tsx",
- "target": "router",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/auth-callback-route.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_auth_callback_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_bookra_character",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/auth-callback-route.tsx",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_auth_callback_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_ui",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/auth-callback-route.tsx",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_auth_callback_route_tsx",
- "target": "routes_auth_callback_route_authcallbackroute",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/auth-callback-route.tsx",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_public_booking_route_tsx",
- "target": "router",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_public_booking_route_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_public_booking_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_lib_api_client",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_public_booking_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_i18n_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_public_booking_route_tsx",
- "target": "types",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_public_booking_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_bookra_character",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_public_booking_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_ui",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_public_booking_route_tsx",
- "target": "routes_public_booking_route_tenantslug",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_public_booking_route_tsx",
- "target": "routes_public_booking_route_bookslot",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L31",
- "weight": 1.0
- },
- {
- "source": "routes_public_booking_route_bookslot",
- "target": "routes_public_booking_route_tenantslug",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L41",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "router",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_lib_api_client",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_lib_paddle",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_auth_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_i18n_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_theme_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_bookra_character",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_widget_builder",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_integration_modal",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_ui_select",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_ui_input",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_ui_textarea",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_layoutdashboardicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L33",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_calendardaysicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L42",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_creditcardicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L52",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_settings2icon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L59",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_logouticon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L67",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_menuicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L75",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_xicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L81",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_trendingupicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L87",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_trendingdownicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L94",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_clockicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L101",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_checkcircleicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L107",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_alertcircleicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L113",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_morehorizontalicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L119",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_chevronlefticon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L125",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_chevronrighticon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L131",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_sparklesicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L137",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_bellicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L143",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_plusicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L149",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_usersicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L155",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_usercircleicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L161",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_iscs",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L319",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_changemonth",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L347",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_prevmonth",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L355",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_nextmonth",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L356",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_trend",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L449",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_trendclass",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L450",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_sparklineclass",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L460",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_isdemomode",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L571",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_resolvedsummary",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L595",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_resolvedbootstrap",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L596",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_resolvedbilling",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L597",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_hastenant",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L642",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_isdashboardready",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L643",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_refreshbilling",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L645",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_opencheckout",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L669",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_openbillingportal",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L716",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_changesection",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L754",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_resolvedallbookings",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L895",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_handlecreatebooking",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L954",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_handleupdatebooking",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L989",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_handlecancelbooking",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1015",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_handlereschedulebooking",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1028",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_openbookingdetail",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1045",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_bookingstats",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1076",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_billingpricelabel",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1538",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_handlesavebrand",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1592",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_getdemocustomers",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2184",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_resolvedcustomers",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2192",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_resolvedbookings",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2193",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_getcustomerbookings",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2223",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_opencustomerdetail",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2229",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_filteredcustomers",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2259",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_demodata",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2496",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_resolvedlocations",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2519",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_resolvedblockeddays",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2520",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_resolvedworkinghours",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2521",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_handleaddzone",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2523",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_handleaddblockedday",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2540",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_handledeleteblockedday",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2562",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_prevmonth",
- "target": "routes_dashboard_route_changemonth",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L355",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_nextmonth",
- "target": "routes_dashboard_route_changemonth",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L356",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_trendclass",
- "target": "routes_dashboard_route_trend",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L451",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_sparklineclass",
- "target": "routes_dashboard_route_trend",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L461",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_resolvedsummary",
- "target": "routes_dashboard_route_isdemomode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L595",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_resolvedsummary",
- "target": "routes_dashboard_route_demodata",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L595",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_resolvedbootstrap",
- "target": "routes_dashboard_route_isdemomode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L596",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_resolvedbootstrap",
- "target": "routes_dashboard_route_demodata",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L596",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_resolvedbilling",
- "target": "routes_dashboard_route_isdemomode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L597",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_resolvedbilling",
- "target": "routes_dashboard_route_demodata",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L597",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_hastenant",
- "target": "routes_dashboard_route_isdemomode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L642",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_isdashboardready",
- "target": "routes_dashboard_route_hastenant",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L643",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_isdashboardready",
- "target": "routes_dashboard_route_isdemomode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L643",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_opencheckout",
- "target": "routes_dashboard_route_resolvedbilling",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L683",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_resolvedallbookings",
- "target": "routes_dashboard_route_demodata",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L895",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_resolvedcustomers",
- "target": "routes_dashboard_route_getdemocustomers",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2192",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_resolvedbookings",
- "target": "routes_dashboard_route_demodata",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2193",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_getcustomerbookings",
- "target": "routes_dashboard_route_resolvedbookings",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2224",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_resolvedlocations",
- "target": "routes_dashboard_route_demodata",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2519",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_resolvedblockeddays",
- "target": "routes_dashboard_route_demodata",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2520",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_resolvedworkinghours",
- "target": "routes_dashboard_route_demodata",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2521",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_contact_route_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/contact-route.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_contact_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_i18n_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/contact-route.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_contact_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_bookra_character",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/contact-route.tsx",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_contact_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_ui",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/contact-route.tsx",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_contact_route_tsx",
- "target": "routes_contact_route_handlesubmit",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/contact-route.tsx",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "router",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_i18n_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_bookra_character",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_calendaricon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_clockicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L16",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_usersicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L23",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_bellicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L32",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_shieldicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L39",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_zapicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L45",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_arrowrighticon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L51",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_checkicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L58",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_sunicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L64",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_moonicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L78",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_stepcard",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L91",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_prevmonth",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L121",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_nextmonth",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L127",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_not_found_route_tsx",
- "target": "router",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/not-found-route.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_not_found_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_i18n_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/not-found-route.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_not_found_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_bookra_character",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/not-found-route.tsx",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_not_found_route_tsx",
- "target": "routes_not_found_route_notfoundroute",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/not-found-route.tsx",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_legal_route_tsx",
- "target": "router",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_legal_route_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_legal_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_ui",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_legal_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_bookra_character",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_legal_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_i18n_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_legal_route_tsx",
- "target": "routes_legal_route_kind",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_legal_route_tsx",
- "target": "routes_legal_route_heropose",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_legal_route_tsx",
- "target": "routes_legal_route_helperpose",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_legal_route_tsx",
- "target": "routes_legal_route_sections",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "routes_legal_route_heropose",
- "target": "routes_legal_route_kind",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "routes_legal_route_helperpose",
- "target": "routes_legal_route_kind",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "routes_legal_route_sections",
- "target": "routes_legal_route_kind",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "router",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_lib_api_client",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_i18n_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_bookra_character",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_ui",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "routes_booking_manage_route_token",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L20",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "routes_booking_manage_route_reference",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L21",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "routes_booking_manage_route_handlereschedule",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L51",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "routes_booking_manage_route_handlecancel",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L96",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "routes_booking_manage_route_formatdate",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L126",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "routes_booking_manage_route_formattime",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L136",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "routes_booking_manage_route_formattime",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L250",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "routes_booking_manage_route_isrescheduling",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L352",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "routes_booking_manage_route_iscancelling",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L411",
- "weight": 1.0
- },
- {
- "source": "routes_booking_manage_route_handlereschedule",
- "target": "routes_booking_manage_route_reference",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L60",
- "weight": 1.0
- },
- {
- "source": "routes_booking_manage_route_handlereschedule",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L61",
- "weight": 1.0
- },
- {
- "source": "routes_booking_manage_route_handlecancel",
- "target": "routes_booking_manage_route_reference",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L100",
- "weight": 1.0
- },
- {
- "source": "routes_booking_manage_route_handlecancel",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L101",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_bookra_character_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/bookra-character.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_bookra_character_tsx",
- "target": "components_bookra_character_bookracharacter",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/bookra-character.tsx",
- "source_location": "L79",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_bookra_character_tsx",
- "target": "components_bookra_character_characterwithmessage",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/bookra-character.tsx",
- "source_location": "L125",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_integration_modal_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/integration-modal.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_integration_modal_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_ui",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/integration-modal.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_integration_modal_tsx",
- "target": "components_integration_modal_copytoclipboard",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/integration-modal.tsx",
- "source_location": "L16",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_location_map_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_location_map_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_lib_map",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_location_map_tsx",
- "target": "components_location_map_loadleaflet",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L29",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_location_map_tsx",
- "target": "components_location_map_safemarkercolor",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L61",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_location_map_tsx",
- "target": "components_location_map_escapehtml",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L68",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_location_map_tsx",
- "target": "components_location_map_createmarkericon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L77",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_location_map_tsx",
- "target": "components_location_map_locationmap",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L88",
- "weight": 1.0
- },
- {
- "source": "components_location_map_createmarkericon",
- "target": "components_location_map_safemarkercolor",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L78",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "router",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_auth_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_i18n_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_theme_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_bookra_character",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_ui",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L7",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_sunicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L19",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_moonicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L33",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_globeicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L39",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_menuicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L47",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_xicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L55",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_googleicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L62",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_hideheader",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L78",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_showgooglesignin",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L88",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_isdemomode",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L96",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_handleopenauth",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L103",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_submitsignin",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L114",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_translateautherror",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L146",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_sendmagiclink",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L179",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_signinwithgoogle",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L194",
- "weight": 1.0
- },
- {
- "source": "components_shell_submitsignin",
- "target": "components_shell_translateautherror",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L138",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_providers_i18n_provider",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_ui",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_bookra_character",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_components_location_map",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L5",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_lib_map",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L6",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_copyicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L39",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_checkicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L46",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_codeicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L52",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_externallinkicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L59",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_iframeicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L67",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_buttonicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L75",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_calendaricon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L81",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_modalicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L90",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_floatingicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L100",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_sunicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L108",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_moonicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L122",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_refreshicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L128",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_lockicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L137",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_dragicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L144",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_moveicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L155",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_paletteicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L166",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_mapicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L176",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_eyeicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L184",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_json",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L199",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_generatedmapelementid",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L203",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_safehexcolor",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L207",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_resolvemaplocation",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L281",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_generatemapcode",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L305",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_handledragstart",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L429",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_handledragover",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L433",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_handledragend",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L445",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_generatecode",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L449",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_copytoclipboard",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L1076",
- "weight": 1.0
- },
- {
- "source": "components_widget_builder_generatemapcode",
- "target": "components_widget_builder_generatedmapelementid",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L308",
- "weight": 1.0
- },
- {
- "source": "components_widget_builder_generatemapcode",
- "target": "components_widget_builder_safehexcolor",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L309",
- "weight": 1.0
- },
- {
- "source": "components_widget_builder_generatemapcode",
- "target": "components_widget_builder_json",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L322",
- "weight": 1.0
- },
- {
- "source": "components_widget_builder_generatecode",
- "target": "components_widget_builder_generatemapcode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L469",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_layoutdashboardicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_calendardaysicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_creditcardicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L20",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_settings2icon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L27",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_logouticon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L35",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_menuicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L43",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_xicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L49",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_trendingupicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L55",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_trendingdownicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L62",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_clockicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L69",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_checkcircleicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L75",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_alertcircleicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L81",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_chevronlefticon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L87",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_chevronrighticon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L93",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_sparklesicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L99",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_bellicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L105",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_plusicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L111",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_usersicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L117",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_usercircleicon",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L123",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_types_ts",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/types.ts",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_types_ts",
- "target": "dashboard_types_getinitials",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/types.ts",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_dashboard_types_ts",
- "target": "dashboard_types_getbookingduration",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/types.ts",
- "source_location": "L22",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_tooltip_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tooltip.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_tooltip_tsx",
- "target": "ui_tooltip_tooltip",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tooltip.tsx",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_input_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/input.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_input_tsx",
- "target": "ui_input_input",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/input.tsx",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_badge_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/badge.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_badge_tsx",
- "target": "ui_badge_badge",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/badge.tsx",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_select_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/select.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_select_tsx",
- "target": "ui_select_select",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/select.tsx",
- "source_location": "L17",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_button_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/button.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_textarea_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/textarea.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_textarea_tsx",
- "target": "ui_textarea_resizeclass",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/textarea.tsx",
- "source_location": "L15",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_card_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_card_tsx",
- "target": "ui_card_card",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_card_tsx",
- "target": "ui_card_cardheader",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L42",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_card_tsx",
- "target": "ui_card_cardtitle",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L53",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_card_tsx",
- "target": "ui_card_carddescription",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L67",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_card_tsx",
- "target": "ui_card_cardcontent",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L78",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_card_tsx",
- "target": "ui_card_cardfooter",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L89",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_skeleton_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/skeleton.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_skeleton_tsx",
- "target": "ui_skeleton_skeleton",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/skeleton.tsx",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_skeleton_tsx",
- "target": "ui_skeleton_skeletoncard",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/skeleton.tsx",
- "source_location": "L28",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_skeleton_tsx",
- "target": "ui_skeleton_skeletontext",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/skeleton.tsx",
- "source_location": "L38",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_avatar_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/avatar.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_avatar_tsx",
- "target": "ui_avatar_avatar",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/avatar.tsx",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_tabs_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_tabs_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_tabs_tsx",
- "target": "ui_tabs_usetabs",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_tabs_tsx",
- "target": "ui_tabs_tabs",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L29",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_tabs_tsx",
- "target": "ui_tabs_tabslist",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L60",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_tabs_tsx",
- "target": "ui_tabs_tabstrigger",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L89",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_tabs_tsx",
- "target": "ui_tabs_tabscontent",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L120",
- "weight": 1.0
- },
- {
- "source": "ui_tabs_tabstrigger",
- "target": "ui_tabs_usetabs",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L91",
- "weight": 1.0
- },
- {
- "source": "ui_tabs_tabscontent",
- "target": "ui_tabs_usetabs",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L122",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "web",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "ui_dialog_dialog",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L10",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "ui_dialog_dialogheader",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L78",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "ui_dialog_dialogtitle",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L88",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "ui_dialog_dialogdescription",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L104",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "ui_dialog_dialogcontent",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L120",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "ui_dialog_dialogfooter",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L130",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "ui_dialog_dialogclosebutton",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L151",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "ui_dialog_usedialog",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L185",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_theme_provider_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/theme-provider.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_theme_provider_tsx",
- "target": "providers_theme_provider_getinitialtheme",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/theme-provider.tsx",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_theme_provider_tsx",
- "target": "providers_theme_provider_getresolvedtheme",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/theme-provider.tsx",
- "source_location": "L19",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_theme_provider_tsx",
- "target": "providers_theme_provider_usetheme",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/theme-provider.tsx",
- "source_location": "L82",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_auth_provider_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_auth_provider_tsx",
- "target": "auth",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_auth_provider_tsx",
- "target": "home_tdvorak_desktop_prog_html_bookra_apps_frontend_src_lib_types",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_auth_provider_tsx",
- "target": "providers_auth_provider_sessionfromlocaltoken",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L21",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_auth_provider_tsx",
- "target": "providers_auth_provider_parsejwtpayload",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L40",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_auth_provider_tsx",
- "target": "providers_auth_provider_authprovider",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L69",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_auth_provider_tsx",
- "target": "providers_auth_provider_useauth",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L208",
- "weight": 1.0
- },
- {
- "source": "providers_auth_provider_sessionfromlocaltoken",
- "target": "providers_auth_provider_parsejwtpayload",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L22",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_i18n_provider_tsx",
- "target": "solid_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/i18n-provider.tsx",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_i18n_provider_tsx",
- "target": "shared_types",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/i18n-provider.tsx",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_providers_i18n_provider_tsx",
- "target": "shared_types",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/i18n-provider.tsx",
- "source_location": "L9",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_mapstylebyid",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L84",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_resolvemaptilestyle",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L88",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_validatecoordinates",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L102",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_parsecoordinatetext",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L113",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_parsemapyczurl",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L133",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_parsegooglemapsurl",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L159",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_parsemapurl",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L217",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_geocodelocation",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L228",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_reversegeocode",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L282",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_resolvelocationinput",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L320",
- "weight": 1.0
- },
- {
- "source": "lib_map_resolvemaptilestyle",
- "target": "lib_map_mapstylebyid",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L99",
- "weight": 1.0
- },
- {
- "source": "lib_map_parsecoordinatetext",
- "target": "lib_map_validatecoordinates",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L123",
- "weight": 1.0
- },
- {
- "source": "lib_map_parsemapyczurl",
- "target": "lib_map_validatecoordinates",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L145",
- "weight": 1.0
- },
- {
- "source": "lib_map_parsegooglemapsurl",
- "target": "lib_map_validatecoordinates",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L175",
- "weight": 1.0
- },
- {
- "source": "lib_map_parsegooglemapsurl",
- "target": "lib_map_parsecoordinatetext",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L189",
- "weight": 1.0
- },
- {
- "source": "lib_map_parsemapurl",
- "target": "lib_map_parsemapyczurl",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L225",
- "weight": 1.0
- },
- {
- "source": "lib_map_parsemapurl",
- "target": "lib_map_parsegooglemapsurl",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L225",
- "weight": 1.0
- },
- {
- "source": "lib_map_geocodelocation",
- "target": "lib_map_validatecoordinates",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L265",
- "weight": 1.0
- },
- {
- "source": "lib_map_reversegeocode",
- "target": "lib_map_validatecoordinates",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L283",
- "weight": 1.0
- },
- {
- "source": "lib_map_resolvelocationinput",
- "target": "lib_map_parsecoordinatetext",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L321",
- "weight": 1.0
- },
- {
- "source": "lib_map_resolvelocationinput",
- "target": "lib_map_reversegeocode",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L323",
- "weight": 1.0
- },
- {
- "source": "lib_map_resolvelocationinput",
- "target": "lib_map_parsemapurl",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L330",
- "weight": 1.0
- },
- {
- "source": "lib_map_resolvelocationinput",
- "target": "lib_map_geocodelocation",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L341",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_api_client_ts",
- "target": "openapi_fetch",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/api-client.ts",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_api_client_ts",
- "target": "types",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/api-client.ts",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_paddle_ts",
- "target": "paddle_js",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/paddle.ts",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_paddle_ts",
- "target": "lib_paddle_paddleconfigured",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/paddle.ts",
- "source_location": "L8",
- "weight": 1.0
- },
- {
- "source": "apps_frontend_src_lib_paddle_ts",
- "target": "lib_paddle_getpaddle",
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/paddle.ts",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "lib_paddle_getpaddle",
- "target": "lib_paddle_paddleconfigured",
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/paddle.ts",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "packages_api_client_scripts_generate_mjs",
- "target": "promises",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "packages/api-client/scripts/generate.mjs",
- "source_location": "L1",
- "weight": 1.0
- },
- {
- "source": "packages_api_client_scripts_generate_mjs",
- "target": "node_path",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "packages/api-client/scripts/generate.mjs",
- "source_location": "L2",
- "weight": 1.0
- },
- {
- "source": "packages_api_client_scripts_generate_mjs",
- "target": "node_url",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "packages/api-client/scripts/generate.mjs",
- "source_location": "L3",
- "weight": 1.0
- },
- {
- "source": "packages_api_client_scripts_generate_mjs",
- "target": "openapi_typescript",
- "relation": "imports_from",
- "confidence": "EXTRACTED",
- "source_file": "packages/api-client/scripts/generate.mjs",
- "source_location": "L4",
- "weight": 1.0
- },
- {
- "source": "api_main_main",
- "target": "config_config_load",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L25",
- "weight": 1.0
- },
- {
- "source": "api_main_main",
- "target": "config_config_getenv",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L32",
- "weight": 1.0
- },
- {
- "source": "api_main_main",
- "target": "handlers_handlers_new",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L36",
- "weight": 1.0
- },
- {
- "source": "api_main_runmigrations",
- "target": "api_server_close",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L110",
- "weight": 1.0
- },
- {
- "source": "email_service_sendmagiclink",
- "target": "email_templates_magiclinkemail",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L29",
- "weight": 1.0
- },
- {
- "source": "email_service_sendwelcomeemail",
- "target": "email_templates_welcomeemail",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L35",
- "weight": 1.0
- },
- {
- "source": "email_service_sendbookingconfirmation",
- "target": "email_templates_bookingconfirmationemail",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L41",
- "weight": 1.0
- },
- {
- "source": "email_service_sendpasswordreset",
- "target": "email_templates_passwordresetemail",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L47",
- "weight": 1.0
- },
- {
- "source": "config_config_test_testloaddefaultsauthserviceportto8081",
- "target": "config_config_getenv",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L53",
- "weight": 1.0
- },
- {
- "source": "config_config_test_testloaddefaultsauthserviceportto8081",
- "target": "config_config_load",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L68",
- "weight": 1.0
- },
- {
- "source": "config_config_stripesecretconfigured",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L95",
- "weight": 1.0
- },
- {
- "source": "config_config_stripewebhookconfigured",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L99",
- "weight": 1.0
- },
- {
- "source": "config_config_stripehasanypriceconfigured",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L104",
- "weight": 1.0
- },
- {
- "source": "handlers_handlers_new",
- "target": "auth_neon_newneonverifier",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L63",
- "weight": 1.0
- },
- {
- "source": "handlers_handlers_new",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L68",
- "weight": 1.0
- },
- {
- "source": "handlers_handlers_new",
- "target": "oauth_google_newgoogleprovider",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L71",
- "weight": 1.0
- },
- {
- "source": "handlers_handler_registerroutes",
- "target": "handlers_admin_newadmindashboard",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L105",
- "weight": 1.0
- },
- {
- "source": "handlers_handler_refreshtoken",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L200",
- "weight": 1.0
- },
- {
- "source": "handlers_handlers_oauthcookiesecure",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L503",
- "weight": 1.0
- },
- {
- "source": "handlers_admindashboard_getprices",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L69",
- "weight": 1.0
- },
- {
- "source": "billing_service_createcheckoutsession",
- "target": "handlers_handlers_new",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L154",
- "weight": 1.0
- },
- {
- "source": "billing_service_ensurecustomer",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L219",
- "weight": 1.0
- },
- {
- "source": "billing_service_ensurecustomer",
- "target": "handlers_handlers_new",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L223",
- "weight": 1.0
- },
- {
- "source": "billing_service_priceforplan",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L328",
- "weight": 1.0
- },
- {
- "source": "billing_service_defaultplancode",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L362",
- "weight": 1.0
- },
- {
- "source": "billing_service_plancodeforprice",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L374",
- "weight": 1.0
- },
- {
- "source": "billing_service_checkoutavailableforplan",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L389",
- "weight": 1.0
- },
- {
- "source": "billing_service_normalizecurrency",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L408",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testpriceforplanusesconfiguredplancodesonly",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L11",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testkvkeyshape",
- "target": "billing_service_usercustomerkey",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L41",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testkvkeyshape",
- "target": "billing_service_customersnapshotkey",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L44",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testcheckoutavailableforplanrequiressecret",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L50",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testcheckoutavailableforplanrequiresconfiguredplan",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L62",
- "weight": 1.0
- },
- {
- "source": "auth_neon_newneonverifier",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L23",
- "weight": 1.0
- },
- {
- "source": "auth_neonverifier_verify",
- "target": "handlers_handlers_new",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L54",
- "weight": 1.0
- },
- {
- "source": "auth_neonverifier_verify",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L75",
- "weight": 1.0
- },
- {
- "source": "auth_service_test_testgeneratetokensproducesverifiableaccessandrefreshtokens",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "auth_service_test_testrefreshtokensreturnsrotatedpair",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L52",
- "weight": 1.0
- },
- {
- "source": "auth_service_test_testrefreshtokensrejectsinvalidtoken",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L83",
- "weight": 1.0
- },
- {
- "source": "api_main_main",
- "target": "db_pool_newpools",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L22",
- "weight": 1.0
- },
- {
- "source": "api_main_main",
- "target": "api_server_newserver",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L28",
- "weight": 1.0
- },
- {
- "source": "db_pgrepository_createtenantforuser",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L513",
- "weight": 1.0
- },
- {
- "source": "db_memoryrepository_ensureuseridentity",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1433",
- "weight": 1.0
- },
- {
- "source": "db_repository_firstnonempty",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2060",
- "weight": 1.0
- },
- {
- "source": "db_pool_connect",
- "target": "handlers_handlers_new",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L55",
- "weight": 1.0
- },
- {
- "source": "config_config_load",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L40",
- "weight": 1.0
- },
- {
- "source": "config_config_load",
- "target": "handlers_handlers_new",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L60",
- "weight": 1.0
- },
- {
- "source": "config_config_paddleconfigured",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L107",
- "weight": 1.0
- },
- {
- "source": "config_config_paddlewebhookconfigured",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L111",
- "weight": 1.0
- },
- {
- "source": "config_config_paddlepricematrixfromenv",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L127",
- "weight": 1.0
- },
- {
- "source": "config_config_paddlepricematrixfromenv",
- "target": "config_config_getenv",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L127",
- "weight": 1.0
- },
- {
- "source": "config_config_normalizepaddleenvironment",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L134",
- "weight": 1.0
- },
- {
- "source": "config_config_normalizeplancode",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L143",
- "weight": 1.0
- },
- {
- "source": "config_config_valueordefault",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L154",
- "weight": 1.0
- },
- {
- "source": "config_config_valueordefault",
- "target": "config_config_getenv",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L154",
- "weight": 1.0
- },
- {
- "source": "config_config_boolfromenv",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L161",
- "weight": 1.0
- },
- {
- "source": "config_config_boolfromenv",
- "target": "config_config_getenv",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L161",
- "weight": 1.0
- },
- {
- "source": "notifications_service_renderemailmessage",
- "target": "notifications_email_templates_renderreminderemail",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L169",
- "weight": 1.0
- },
- {
- "source": "notifications_noopemailprovider_send",
- "target": "handlers_handlers_new",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L216",
- "weight": 1.0
- },
- {
- "source": "notifications_smtpemailprovider_send",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L229",
- "weight": 1.0
- },
- {
- "source": "notifications_smtpemailprovider_send",
- "target": "handlers_handlers_new",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L230",
- "weight": 1.0
- },
- {
- "source": "notifications_service_test_testdispatchdueprocessespendingemailreminders",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "notifications_service_test_testdispatchdueprocessespendingemailreminders",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L38",
- "weight": 1.0
- },
- {
- "source": "notifications_service_test_testdispatchduefailsunknownchannel",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L67",
- "weight": 1.0
- },
- {
- "source": "notifications_service_test_testdispatchduefailsunknownchannel",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L77",
- "weight": 1.0
- },
- {
- "source": "bookings_service_create",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L122",
- "weight": 1.0
- },
- {
- "source": "bookings_service_create",
- "target": "routes_booking_manage_route_reference",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L199",
- "weight": 1.0
- },
- {
- "source": "bookings_service_trackingstatus",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L363",
- "weight": 1.0
- },
- {
- "source": "bookings_service_test_testcreateappointmentrejectsconflict",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L14",
- "weight": 1.0
- },
- {
- "source": "bookings_service_test_testcreateappointmentrejectsconflict",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L15",
- "weight": 1.0
- },
- {
- "source": "bookings_service_test_testcreateclassfallsbacktowaitlistwhencapacityreached",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L71",
- "weight": 1.0
- },
- {
- "source": "bookings_service_test_testcreateclassfallsbacktowaitlistwhencapacityreached",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L72",
- "weight": 1.0
- },
- {
- "source": "bookings_service_test_testcreateappointmentrequirestenantservice",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L128",
- "weight": 1.0
- },
- {
- "source": "bookings_service_test_testcreateappointmentrequirestenantservice",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L129",
- "weight": 1.0
- },
- {
- "source": "bookings_service_test_testcreateclassrequiresexistingsession",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L145",
- "weight": 1.0
- },
- {
- "source": "bookings_service_test_testcreateclassrequiresexistingsession",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L146",
- "weight": 1.0
- },
- {
- "source": "bookings_service_test_testavailabilitygeneratesupcomingslots",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L164",
- "weight": 1.0
- },
- {
- "source": "bookings_service_test_testavailabilitygeneratesupcomingslots",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L165",
- "weight": 1.0
- },
- {
- "source": "bookings_service_test_testcreateschedulesreminderjobforupcomingappointment",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L187",
- "weight": 1.0
- },
- {
- "source": "bookings_service_test_testcreateschedulesreminderjobforupcomingappointment",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L188",
- "weight": 1.0
- },
- {
- "source": "billing_service_newservice",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L65",
- "weight": 1.0
- },
- {
- "source": "billing_service_newservice",
- "target": "handlers_handlers_new",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L69",
- "weight": 1.0
- },
- {
- "source": "billing_service_createcheckoutsession",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L131",
- "weight": 1.0
- },
- {
- "source": "billing_service_createportalsession",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L204",
- "weight": 1.0
- },
- {
- "source": "billing_service_handlewebhook",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L222",
- "weight": 1.0
- },
- {
- "source": "billing_service_handlewebhook",
- "target": "handlers_handlers_new",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L231",
- "weight": 1.0
- },
- {
- "source": "billing_service_resolvewebhooktenant",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L280",
- "weight": 1.0
- },
- {
- "source": "billing_service_normalizeplancode",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L467",
- "weight": 1.0
- },
- {
- "source": "billing_service_normalizesubscriptionstatus",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L489",
- "weight": 1.0
- },
- {
- "source": "billing_service_checkoutavailable",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L503",
- "weight": 1.0
- },
- {
- "source": "billing_service_customdatastring",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L520",
- "weight": 1.0
- },
- {
- "source": "billing_service_parserfc3339ptr",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L527",
- "weight": 1.0
- },
- {
- "source": "billing_service_firstnonempty",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L561",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testgetsubscriptionfallsbacktosnapshotandentitlements",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L26",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testgetsubscriptionfallsbacktosnapshotandentitlements",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L26",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testcreatecheckoutrequirespaddleconfig",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L50",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testcreatecheckoutrequirespaddleconfig",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L50",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testcreatecheckoutreturnslaunchpayload",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L62",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testcreatecheckoutreturnslaunchpayload",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L62",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testrefreshrequirespaddlekeywhencustomerexists",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L85",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testrefreshrequirespaddlekeywhencustomerexists",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L85",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testgetsubscriptiondisablescheckoutwhenwebhookmissing",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L99",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testgetsubscriptiondisablescheckoutwhenwebhookmissing",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L99",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testgetsubscriptionenablescheckoutwhenpaddleconfigured",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L114",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testgetsubscriptionenablescheckoutwhenpaddleconfigured",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L114",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testcreateportalsessionrequirescustomer",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L132",
- "weight": 1.0
- },
- {
- "source": "billing_service_test_testcreateportalsessionrequirescustomer",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L140",
- "weight": 1.0
- },
- {
- "source": "auth_middleware_requireauth",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L39",
- "weight": 1.0
- },
- {
- "source": "auth_neon_newverifier",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L24",
- "weight": 1.0
- },
- {
- "source": "auth_verifier_verify",
- "target": "handlers_handlers_new",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L70",
- "weight": 1.0
- },
- {
- "source": "api_server_newserver",
- "target": "auth_neon_newverifier",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L34",
- "weight": 1.0
- },
- {
- "source": "api_server_newserver",
- "target": "db_repository_newrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L39",
- "weight": 1.0
- },
- {
- "source": "api_server_newserver",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L40",
- "weight": 1.0
- },
- {
- "source": "api_server_newserver",
- "target": "bookings_customer_service_newcustomerservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L42",
- "weight": 1.0
- },
- {
- "source": "api_server_newserver",
- "target": "httpx_middleware_newratelimiter",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L46",
- "weight": 1.0
- },
- {
- "source": "api_server_newserver",
- "target": "handlers_handlers_new",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L49",
- "weight": 1.0
- },
- {
- "source": "api_server_newserver",
- "target": "httpx_middleware_securityheaders",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L60",
- "weight": 1.0
- },
- {
- "source": "api_server_newserver",
- "target": "domain_createbookingrequest",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L111",
- "weight": 1.0
- },
- {
- "source": "api_server_newserver",
- "target": "auth_middleware_requireauth",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L130",
- "weight": 1.0
- },
- {
- "source": "api_server_newserver",
- "target": "auth_middleware_principalfromcontext",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L133",
- "weight": 1.0
- },
- {
- "source": "api_server_test_testdispatchreminderjobsrequiresjobrunnerkey",
- "target": "api_server_newserver",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "api_server_test_testdispatchreminderjobsacceptsconfiguredjobrunnerkey",
- "target": "api_server_newserver",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L34",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_onboard",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L80",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_toteaminvites",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L234",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_normalizeclock",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L248",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_firstnonempty",
- "target": "notifications_email_templates_trimspace",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L268",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_test_testbootstrapresolvesmembershipafteridentitysync",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L12",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_test_testbootstrapresolvesmembershipafteridentitysync",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L13",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_test_testbootstrapreturnsshellwhenmembershipmissing",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L41",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_test_testbootstrapreturnsshellwhenmembershipmissing",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L42",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_test_testonboardcreatestenantforauthenticateduser",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L63",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_test_testonboardcreatestenantforauthenticateduser",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L64",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_test_testonboardrejectsinvalidslug",
- "target": "db_repository_newmemoryrepository",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L90",
- "weight": 1.0
- },
- {
- "source": "tenancy_service_test_testonboardrejectsinvalidslug",
- "target": "tenancy_service_newservice",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L91",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_isdemomode",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L571",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_isdashboardready",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L643",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_refreshbilling",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L646",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_opencheckout",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L670",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_opencheckout",
- "target": "lib_paddle_paddleconfigured",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L676",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_opencheckout",
- "target": "lib_paddle_getpaddle",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L696",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_openbillingportal",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L717",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_handlecreatebooking",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L955",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_handleupdatebooking",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L990",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_handlecancelbooking",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1016",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_handlereschedulebooking",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1029",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_handlesavebrand",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1593",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_handleaddzone",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2524",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_handleaddblockedday",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2541",
- "weight": 1.0
- },
- {
- "source": "routes_dashboard_route_handledeleteblockedday",
- "target": "routes_booking_manage_route_token",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2563",
- "weight": 1.0
- },
- {
- "source": "components_widget_builder_resolvemaplocation",
- "target": "lib_map_resolvelocationinput",
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L285",
- "weight": 1.0
- }
- ],
- "hyperedges": [],
- "input_tokens": 0,
- "output_tokens": 0
-}
\ No newline at end of file
diff --git a/graphify-out/.graphify_labels.json b/graphify-out/.graphify_labels.json
deleted file mode 100644
index 5bfbfd2..0000000
--- a/graphify-out/.graphify_labels.json
+++ /dev/null
@@ -1 +0,0 @@
-{"0": "Neon Database Core", "1": "Paddle Billing & Dashboard", "2": "Memory Repository", "3": "PostgreSQL Repository", "4": "Domain Models", "5": "Server & Main Entry", "6": "Admin Dashboard", "7": "Test Suite", "8": "Database Records", "9": "Widget Builder & Icons", "10": "Email Templates Service", "11": "Notification Service", "12": "Database Connection", "13": "UI Icons Library", "14": "Email Provider", "15": "Auth & Magic Links", "16": "Business Service", "17": "Shell & Auth UI", "18": "Landing Page UI", "19": "Email Localization", "20": "Customer Notifications", "21": "Maps & Geocoding", "22": "Brand Profile Service", "23": "Dialog Component", "24": "Google OAuth", "25": "Card Component", "26": "Map URL Parsing", "27": "Location Map", "28": "Tabs Component", "29": "Legal Pages", "30": "Auth Provider", "31": "Skeleton Component", "32": "Theme Provider", "33": "User Repository", "34": "Paddle Config Tests", "35": "App Root", "36": "Public Booking", "37": "Bookra Character", "38": "Booking Types", "39": "Contact Map", "40": "About Page", "41": "Auth Callback", "42": "Contact Page", "43": "Not Found Page", "44": "Integration Modal", "45": "Tooltip Component", "46": "Input Component", "47": "Badge Component", "48": "Select Component", "49": "Textarea Component", "50": "Avatar Component", "51": "Vite Config", "52": "Main Entry", "53": "API Index", "54": "Button Component", "55": "Repository Index", "56": "I18n Provider", "57": "API Client", "58": "Shared Types", "59": "Index Export", "60": "Repository Export", "61": "Types Export", "62": "Generate Script"}
\ No newline at end of file
diff --git a/graphify-out/.graphify_semantic.json b/graphify-out/.graphify_semantic.json
deleted file mode 100644
index 526b1ae..0000000
--- a/graphify-out/.graphify_semantic.json
+++ /dev/null
@@ -1 +0,0 @@
-{"nodes": [], "edges": [], "hyperedges": [], "input_tokens": 0, "output_tokens": 0}
\ No newline at end of file
diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md
deleted file mode 100644
index 1ab5530..0000000
--- a/graphify-out/GRAPH_REPORT.md
+++ /dev/null
@@ -1,221 +0,0 @@
-# Graph Report - /home/tdvorak/Desktop/PROG+HTML/Bookra (2026-04-30)
-
-## Corpus Check
-- 166 files · ~380,279 words
-- Verdict: corpus is large enough that graph structure adds value.
-
-## Summary
-- 794 nodes · 1114 edges · 29 communities detected
-- Extraction: 87% EXTRACTED · 13% INFERRED · 0% AMBIGUOUS · INFERRED: 150 edges (avg confidence: 0.8)
-- Token cost: 0 input · 0 output
-
-## Community Hubs (Navigation)
-- [[_COMMUNITY_Neon Database Core|Neon Database Core]]
-- [[_COMMUNITY_Paddle Billing & Dashboard|Paddle Billing & Dashboard]]
-- [[_COMMUNITY_Memory Repository|Memory Repository]]
-- [[_COMMUNITY_PostgreSQL Repository|PostgreSQL Repository]]
-- [[_COMMUNITY_Domain Models|Domain Models]]
-- [[_COMMUNITY_Server & Main Entry|Server & Main Entry]]
-- [[_COMMUNITY_Admin Dashboard|Admin Dashboard]]
-- [[_COMMUNITY_Test Suite|Test Suite]]
-- [[_COMMUNITY_Database Records|Database Records]]
-- [[_COMMUNITY_Widget Builder & Icons|Widget Builder & Icons]]
-- [[_COMMUNITY_Email Templates Service|Email Templates Service]]
-- [[_COMMUNITY_Notification Service|Notification Service]]
-- [[_COMMUNITY_Database Connection|Database Connection]]
-- [[_COMMUNITY_Email Provider|Email Provider]]
-- [[_COMMUNITY_Auth & Magic Links|Auth & Magic Links]]
-- [[_COMMUNITY_Business Service|Business Service]]
-- [[_COMMUNITY_Shell & Auth UI|Shell & Auth UI]]
-- [[_COMMUNITY_Email Localization|Email Localization]]
-- [[_COMMUNITY_Customer Notifications|Customer Notifications]]
-- [[_COMMUNITY_Maps & Geocoding|Maps & Geocoding]]
-- [[_COMMUNITY_Brand Profile Service|Brand Profile Service]]
-- [[_COMMUNITY_Google OAuth|Google OAuth]]
-- [[_COMMUNITY_Map URL Parsing|Map URL Parsing]]
-- [[_COMMUNITY_Location Map|Location Map]]
-- [[_COMMUNITY_Tabs Component|Tabs Component]]
-- [[_COMMUNITY_Legal Pages|Legal Pages]]
-- [[_COMMUNITY_Auth Provider|Auth Provider]]
-- [[_COMMUNITY_User Repository|User Repository]]
-- [[_COMMUNITY_Public Booking|Public Booking]]
-
-## God Nodes (most connected - your core abstractions)
-1. `trimSpace()` - 47 edges
-2. `PGRepository` - 46 edges
-3. `MemoryRepository` - 46 edges
-4. `NewService()` - 28 edges
-5. `NewMemoryRepository()` - 22 edges
-6. `Handler` - 20 edges
-7. `Service` - 20 edges
-8. `DB` - 18 edges
-9. `New()` - 17 edges
-10. `NewServer()` - 17 edges
-
-## Surprising Connections (you probably didn't know these)
-- `New()` --calls--> `NewGoogleProvider()` [INFERRED]
- apps/auth-service/internal/handlers/handlers.go → apps/auth-service/internal/oauth/google.go
-- `NewServer()` --calls--> `NewCustomerService()` [INFERRED]
- apps/backend/internal/api/server.go → apps/backend/internal/bookings/customer_service.go
-- `main()` --calls--> `Load()` [INFERRED]
- apps/backend/cmd/api/main.go → apps/backend/internal/config/config.go
-- `main()` --calls--> `getEnv()` [INFERRED]
- apps/backend/cmd/api/main.go → apps/auth-service/internal/config/config.go
-- `main()` --calls--> `New()` [INFERRED]
- apps/backend/cmd/api/main.go → apps/auth-service/internal/handlers/handlers.go
-
-## Communities
-
-### Community 0 - "Neon Database Core"
-Cohesion: 0.06
-Nodes (42): NewNeonVerifier(), NeonVerifier, CheckoutSession, PaymentMethod, Service, checkoutAvailable(), customDataString(), customerSnapshotKey() (+34 more)
-
-### Community 1 - "Paddle Billing & Dashboard"
-Cohesion: 0.04
-Nodes (38): getPaddle(), paddleConfigured(), handleCancel(), handleReschedule(), reference(), token(), changeMonth(), demoData() (+30 more)
-
-### Community 2 - "Memory Repository"
-Cohesion: 0.04
-Nodes (3): MemoryRepository, defaultAvailabilityBlocks(), maxInt()
-
-### Community 3 - "PostgreSQL Repository"
-Cohesion: 0.04
-Nodes (2): PGRepository, firstNonEmpty()
-
-### Community 4 - "Domain Models"
-Cohesion: 0.05
-Nodes (40): AvailabilityBlockRequest, BlockedDay, BookingDefaultsRequest, BrandProfile, CancelBookingRequest, CheckoutLaunchResponse, CheckoutSessionRequest, CreateBlockedDayRequest (+32 more)
-
-### Community 5 - "Server & Main Entry"
-Cohesion: 0.06
-Nodes (22): main(), runMigrations(), Server, allowedOrigins(), authorizeJobRunner(), NewServer(), TestDispatchReminderJobsAcceptsConfiguredJobRunnerKey(), TestDispatchReminderJobsRequiresJobRunnerKey() (+14 more)
-
-### Community 6 - "Admin Dashboard"
-Cohesion: 0.06
-Nodes (12): NewAdminDashboard(), AdminDashboard, CheckoutRequest, Handler, detectLocale(), generateState(), oauthCookieSecure(), LoginRequest (+4 more)
-
-### Community 7 - "Test Suite"
-Cohesion: 0.13
-Nodes (28): TestGenerateTokensProducesVerifiableAccessAndRefreshTokens(), TestRefreshTokensRejectsInvalidToken(), TestRefreshTokensReturnsRotatedPair(), TestCheckoutAvailableForPlanRequiresConfiguredPlan(), TestCheckoutAvailableForPlanRequiresSecret(), testConfig(), TestCreateCheckoutRequiresPaddleConfig(), TestCreateCheckoutReturnsLaunchPayload() (+20 more)
-
-### Community 8 - "Database Records"
-Cohesion: 0.06
-Nodes (31): AvailabilityBlockRecord, AvailabilityRuleRecord, BillingSnapshotRecord, BlockedDayRecord, BookingRecord, BrandProfileRecord, ClassSessionRecord, CreateBlockedDayParams (+23 more)
-
-### Community 9 - "Widget Builder & Icons"
-Cohesion: 0.08
-Nodes (5): generateCode(), generatedMapElementId(), generateMapCode(), json(), safeHexColor()
-
-### Community 10 - "Email Templates Service"
-Cohesion: 0.14
-Nodes (15): Config, EmailTemplate, Service, bookingConfirmationCS(), BookingConfirmationEmail(), bookingConfirmationEN(), MagicLinkEmail(), magicLinkEmailCS() (+7 more)
-
-### Community 11 - "Notification Service"
-Cohesion: 0.15
-Nodes (13): noopNotifier, Notifier, Service, collides(), countClassBookings(), generateAppointmentSlots(), generateClassSlots(), normalizePlanCode() (+5 more)
-
-### Community 12 - "Database Connection"
-Cohesion: 0.1
-Nodes (2): DB, Stats
-
-### Community 14 - "Email Provider"
-Cohesion: 0.18
-Nodes (11): DeliveryReceipt, EmailMessage, EmailProvider, noopEmailProvider, Service, localizedStartsAt(), NewService(), reminderRecipient() (+3 more)
-
-### Community 15 - "Auth & Magic Links"
-Cohesion: 0.19
-Nodes (4): Claims, Service, generateRandomToken(), TokenPair
-
-### Community 16 - "Business Service"
-Cohesion: 0.12
-Nodes (1): Service
-
-### Community 17 - "Shell & Auth UI"
-Cohesion: 0.14
-Nodes (2): submitSignIn(), translateAuthError()
-
-### Community 19 - "Email Localization"
-Cohesion: 0.3
-Nodes (11): BookingEmailData, formatLocalizedDateTime(), formatLocalizedTime(), RenderEmailMessage(), renderHTMLBody(), RenderReminderEmail(), renderSubject(), renderTextBody() (+3 more)
-
-### Community 20 - "Customer Notifications"
-Cohesion: 0.26
-Nodes (4): NewCustomerService(), customerNoopNotifier, CustomerNotifier, CustomerService
-
-### Community 21 - "Maps & Geocoding"
-Cohesion: 0.36
-Nodes (11): resolveMapLocation(), geocodeLocation(), mapStyleById(), parseCoordinateText(), parseGoogleMapsUrl(), parseMapUrl(), parseMapyCzUrl(), resolveLocationInput() (+3 more)
-
-### Community 22 - "Brand Profile Service"
-Cohesion: 0.33
-Nodes (7): Service, firstNonEmpty(), normalizeClock(), normalizePlanCode(), toAvailabilityBlocks(), toTeamInvites(), validateAvailabilityBlocks()
-
-### Community 24 - "Google OAuth"
-Cohesion: 0.25
-Nodes (3): NewGoogleProvider(), GoogleProvider, GoogleUser
-
-### Community 26 - "Map URL Parsing"
-Cohesion: 0.47
-Nodes (3): parseGoogleMapsUrl(), parseMapUrl(), parseMapyCzUrl()
-
-### Community 27 - "Location Map"
-Cohesion: 0.4
-Nodes (2): createMarkerIcon(), safeMarkerColor()
-
-### Community 28 - "Tabs Component"
-Cohesion: 0.47
-Nodes (3): TabsContent(), TabsTrigger(), useTabs()
-
-### Community 29 - "Legal Pages"
-Cohesion: 0.7
-Nodes (4): helperPose(), heroPose(), kind(), sections()
-
-### Community 30 - "Auth Provider"
-Cohesion: 0.5
-Nodes (2): parseJwtPayload(), sessionFromLocalToken()
-
-### Community 33 - "User Repository"
-Cohesion: 0.67
-Nodes (2): MagicLink, User
-
-### Community 36 - "Public Booking"
-Cohesion: 1.0
-Nodes (2): bookSlot(), tenantSlug()
-
-## Knowledge Gaps
-- **97 isolated node(s):** `EmailTemplate`, `Config`, `Stats`, `User`, `MagicLink` (+92 more)
- These have ≤1 connection - possible missing edges or undocumented components.
-- **Thin community `PostgreSQL Repository`** (47 nodes): `.RecordBillingEvent()`, `PGRepository`, `.AppendWaitlistEntry()`, `.CreateBlockedDay()`, `.CreateBooking()`, `.CreateCustomer()`, `.CreateLocation()`, `.CreateNotificationDeliveryLog()`, `.CreateReminderJob()`, `.DeleteBlockedDay()`, `.DeleteCustomer()`, `.DeleteLocation()`, `.EnsureUserIdentity()`, `.GetBookingByReference()`, `.GetBrandProfile()`, `.GetCustomerBookingsCount()`, `.GetCustomerByEmail()`, `.GetCustomerByID()`, `.GetCustomerLastBooking()`, `.GetDashboardMetrics()`, `.GetLocationByID()`, `.GetSubscriptionSnapshot()`, `.GetTenantByBillingCustomerID()`, `.GetTenantByID()`, `.GetTenantBySlug()`, `.GetTenantMembershipByUserID()`, `.ListAvailabilityRulesByTenant()`, `.ListBlockedDaysByTenant()`, `.ListBookingsByTenantBetween()`, `.ListClassSessionsByTenant()`, `.ListCustomersByTenant()`, `.ListDueReminderJobs()`, `.ListLocationsByTenant()`, `.ListServicesByTenant()`, `.ListWorkingHoursByTenant()`, `.MarkReminderJobDispatched()`, `.RecordBillingEvent()`, `.RescheduleBooking()`, `.UpdateBlockedDay()`, `.UpdateBookingStatus()`, `.UpdateCustomer()`, `.UpdateLocation()`, `.UpdateTenantBillingCustomerID()`, `.UpdateTenantBillingState()`, `.UpdateWorkingHours()`, `.UpsertSubscriptionSnapshot()`, `firstNonEmpty()`
- Too small to be a meaningful cluster - may be noise or needs more connections extracted.
-- **Thin community `Database Connection`** (21 nodes): `db.go`, `DB`, `.Close()`, `.CreateMagicLink()`, `.CreateUser()`, `.Exec()`, `.GetKV()`, `.GetMagicLink()`, `.GetStats()`, `.GetUserByEmail()`, `.GetUserByID()`, `.GetUserByProviderID()`, `.MarkMagicLinkUsed()`, `New()`, `.Pool()`, `.PutKV()`, `.Query()`, `.QueryRow()`, `.UpdateLastLogin()`, `.UpdateUser()`, `Stats`
- Too small to be a meaningful cluster - may be noise or needs more connections extracted.
-- **Thin community `Business Service`** (17 nodes): `service.go`, `Service`, `.CreateBlockedDay()`, `.CreateCustomer()`, `.CreateLocation()`, `.DeleteBlockedDay()`, `.DeleteCustomer()`, `.DeleteLocation()`, `.ListBlockedDays()`, `.ListCustomers()`, `.ListLocations()`, `.ListWorkingHours()`, `NewService()`, `.UpdateBlockedDay()`, `.UpdateCustomer()`, `.UpdateLocation()`, `.UpdateWorkingHours()`
- Too small to be a meaningful cluster - may be noise or needs more connections extracted.
-- **Thin community `Shell & Auth UI`** (15 nodes): `shell.tsx`, `GlobeIcon()`, `GoogleIcon()`, `handleOpenAuth()`, `hideHeader()`, `isDemoMode()`, `MenuIcon()`, `MoonIcon()`, `sendMagicLink()`, `showGoogleSignIn()`, `signInWithGoogle()`, `submitSignIn()`, `SunIcon()`, `translateAuthError()`, `XIcon()`
- Too small to be a meaningful cluster - may be noise or needs more connections extracted.
-- **Thin community `Location Map`** (6 nodes): `location-map.tsx`, `createMarkerIcon()`, `escapeHtml()`, `loadLeaflet()`, `LocationMap()`, `safeMarkerColor()`
- Too small to be a meaningful cluster - may be noise or needs more connections extracted.
-- **Thin community `Auth Provider`** (5 nodes): `auth-provider.tsx`, `AuthProvider()`, `parseJwtPayload()`, `sessionFromLocalToken()`, `useAuth()`
- Too small to be a meaningful cluster - may be noise or needs more connections extracted.
-- **Thin community `User Repository`** (3 nodes): `repository.go`, `MagicLink`, `User`
- Too small to be a meaningful cluster - may be noise or needs more connections extracted.
-- **Thin community `Public Booking`** (3 nodes): `public-booking-route.tsx`, `bookSlot()`, `tenantSlug()`
- Too small to be a meaningful cluster - may be noise or needs more connections extracted.
-
-## Suggested Questions
-_Questions this graph is uniquely positioned to answer:_
-
-- **Why does `trimSpace()` connect `Neon Database Core` to `Memory Repository`, `PostgreSQL Repository`, `Server & Main Entry`, `Admin Dashboard`, `Notification Service`, `Email Provider`, `Email Localization`, `Brand Profile Service`?**
- _High betweenness centrality (0.246) - this node is a cross-community bridge._
-- **Why does `NewServer()` connect `Server & Main Entry` to `Neon Database Core`, `Customer Notifications`, `Test Suite`?**
- _High betweenness centrality (0.116) - this node is a cross-community bridge._
-- **Why does `reference()` connect `Paddle Billing & Dashboard` to `Notification Service`?**
- _High betweenness centrality (0.101) - this node is a cross-community bridge._
-- **Are the 45 inferred relationships involving `trimSpace()` (e.g. with `.StripeSecretConfigured()` and `.StripeWebhookConfigured()`) actually correct?**
- _`trimSpace()` has 45 INFERRED edges - model-reasoned connections that need verification._
-- **Are the 27 inferred relationships involving `NewService()` (e.g. with `New()` and `TestPriceForPlanUsesConfiguredPlanCodesOnly()`) actually correct?**
- _`NewService()` has 27 INFERRED edges - model-reasoned connections that need verification._
-- **Are the 19 inferred relationships involving `NewMemoryRepository()` (e.g. with `TestDispatchDueProcessesPendingEmailReminders()` and `TestDispatchDueFailsUnknownChannel()`) actually correct?**
- _`NewMemoryRepository()` has 19 INFERRED edges - model-reasoned connections that need verification._
-- **What connects `EmailTemplate`, `Config`, `Stats` to the rest of the system?**
- _97 weakly-connected nodes found - possible documentation gaps or missing edges._
\ No newline at end of file
diff --git a/graphify-out/cost.json b/graphify-out/cost.json
deleted file mode 100644
index 5ae4e65..0000000
--- a/graphify-out/cost.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "runs": [
- {
- "date": "2026-04-30T05:47:16.076690+00:00",
- "input_tokens": 0,
- "output_tokens": 0,
- "files": 166
- }
- ],
- "total_input_tokens": 0,
- "total_output_tokens": 0
-}
\ No newline at end of file
diff --git a/graphify-out/graph.html b/graphify-out/graph.html
deleted file mode 100644
index 681f51f..0000000
--- a/graphify-out/graph.html
+++ /dev/null
@@ -1,276 +0,0 @@
-
-
-
-
-graphify - graphify-out/graph.html
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/graphify-out/graph.json b/graphify-out/graph.json
deleted file mode 100644
index 7cf9f02..0000000
--- a/graphify-out/graph.json
+++ /dev/null
@@ -1,20524 +0,0 @@
-{
- "directed": false,
- "multigraph": false,
- "graph": {},
- "nodes": [
- {
- "label": "generate_map.tsx",
- "file_type": "code",
- "source_file": "generate_map.tsx",
- "source_location": "L1",
- "id": "generate_map_tsx",
- "community": 39,
- "norm_label": "generate_map.tsx"
- },
- {
- "label": "ContactMap()",
- "file_type": "code",
- "source_file": "generate_map.tsx",
- "source_location": "L100",
- "id": "bookra_generate_map_contactmap",
- "community": 39,
- "norm_label": "contactmap()"
- },
- {
- "label": "map.ts",
- "file_type": "code",
- "source_file": "map.ts",
- "source_location": "L1",
- "id": "map_ts",
- "community": 26,
- "norm_label": "map.ts"
- },
- {
- "label": "parseMapyCzUrl()",
- "file_type": "code",
- "source_file": "map.ts",
- "source_location": "L24",
- "id": "bookra_map_parsemapyczurl",
- "community": 26,
- "norm_label": "parsemapyczurl()"
- },
- {
- "label": "parseGoogleMapsUrl()",
- "file_type": "code",
- "source_file": "map.ts",
- "source_location": "L71",
- "id": "bookra_map_parsegooglemapsurl",
- "community": 26,
- "norm_label": "parsegooglemapsurl()"
- },
- {
- "label": "parseMapUrl()",
- "file_type": "code",
- "source_file": "map.ts",
- "source_location": "L149",
- "id": "bookra_map_parsemapurl",
- "community": 26,
- "norm_label": "parsemapurl()"
- },
- {
- "label": "validateCoordinates()",
- "file_type": "code",
- "source_file": "map.ts",
- "source_location": "L178",
- "id": "bookra_map_validatecoordinates",
- "community": 26,
- "norm_label": "validatecoordinates()"
- },
- {
- "label": "reverseGeocode()",
- "file_type": "code",
- "source_file": "map.ts",
- "source_location": "L193",
- "id": "bookra_map_reversegeocode",
- "community": 26,
- "norm_label": "reversegeocode()"
- },
- {
- "label": "main.go",
- "file_type": "code",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L1",
- "id": "apps_auth_service_cmd_api_main_go",
- "community": 5,
- "norm_label": "main.go"
- },
- {
- "label": "main()",
- "file_type": "code",
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L16",
- "id": "api_main_main",
- "community": 5,
- "norm_label": "main()"
- },
- {
- "label": "runMigrations()",
- "file_type": "code",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L105",
- "id": "api_main_runmigrations",
- "community": 5,
- "norm_label": "runmigrations()"
- },
- {
- "label": "templates.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L1",
- "id": "apps_auth_service_internal_email_templates_go",
- "community": 10,
- "norm_label": "templates.go"
- },
- {
- "label": "EmailTemplate",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L27",
- "id": "email_emailtemplate",
- "community": 10,
- "norm_label": "emailtemplate"
- },
- {
- "label": "MagicLinkEmail()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L33",
- "id": "email_templates_magiclinkemail",
- "community": 10,
- "norm_label": "magiclinkemail()"
- },
- {
- "label": "WelcomeEmail()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L40",
- "id": "email_templates_welcomeemail",
- "community": 10,
- "norm_label": "welcomeemail()"
- },
- {
- "label": "BookingConfirmationEmail()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L47",
- "id": "email_templates_bookingconfirmationemail",
- "community": 10,
- "norm_label": "bookingconfirmationemail()"
- },
- {
- "label": "PasswordResetEmail()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L54",
- "id": "email_templates_passwordresetemail",
- "community": 10,
- "norm_label": "passwordresetemail()"
- },
- {
- "label": "magicLinkEmailEN()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L61",
- "id": "email_templates_magiclinkemailen",
- "community": 10,
- "norm_label": "magiclinkemailen()"
- },
- {
- "label": "magicLinkEmailCS()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L157",
- "id": "email_templates_magiclinkemailcs",
- "community": 10,
- "norm_label": "magiclinkemailcs()"
- },
- {
- "label": "welcomeEmailEN()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L253",
- "id": "email_templates_welcomeemailen",
- "community": 10,
- "norm_label": "welcomeemailen()"
- },
- {
- "label": "welcomeEmailCS()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L335",
- "id": "email_templates_welcomeemailcs",
- "community": 10,
- "norm_label": "welcomeemailcs()"
- },
- {
- "label": "bookingConfirmationEN()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L417",
- "id": "email_templates_bookingconfirmationen",
- "community": 10,
- "norm_label": "bookingconfirmationen()"
- },
- {
- "label": "bookingConfirmationCS()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L507",
- "id": "email_templates_bookingconfirmationcs",
- "community": 10,
- "norm_label": "bookingconfirmationcs()"
- },
- {
- "label": "passwordResetEN()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L597",
- "id": "email_templates_passwordreseten",
- "community": 10,
- "norm_label": "passwordreseten()"
- },
- {
- "label": "passwordResetCS()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L671",
- "id": "email_templates_passwordresetcs",
- "community": 10,
- "norm_label": "passwordresetcs()"
- },
- {
- "label": "service.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L1",
- "id": "apps_auth_service_internal_email_service_go",
- "community": 10,
- "norm_label": "service.go"
- },
- {
- "label": "Config",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L11",
- "id": "email_config",
- "community": 10,
- "norm_label": "config"
- },
- {
- "label": "Service",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L19",
- "id": "email_service",
- "community": 10,
- "norm_label": "service"
- },
- {
- "label": "New()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L23",
- "id": "email_service_new",
- "community": 10,
- "norm_label": "new()"
- },
- {
- "label": ".SendMagicLink()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L28",
- "id": "email_service_sendmagiclink",
- "community": 10,
- "norm_label": ".sendmagiclink()"
- },
- {
- "label": ".SendWelcomeEmail()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L34",
- "id": "email_service_sendwelcomeemail",
- "community": 10,
- "norm_label": ".sendwelcomeemail()"
- },
- {
- "label": ".SendBookingConfirmation()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L40",
- "id": "email_service_sendbookingconfirmation",
- "community": 10,
- "norm_label": ".sendbookingconfirmation()"
- },
- {
- "label": ".SendPasswordReset()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L46",
- "id": "email_service_sendpasswordreset",
- "community": 10,
- "norm_label": ".sendpasswordreset()"
- },
- {
- "label": ".sendTemplate()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L52",
- "id": "email_service_sendtemplate",
- "community": 10,
- "norm_label": ".sendtemplate()"
- },
- {
- "label": ".send()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L64",
- "id": "email_service_send",
- "community": 10,
- "norm_label": ".send()"
- },
- {
- "label": "db.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L1",
- "id": "apps_auth_service_internal_db_db_go",
- "community": 12,
- "norm_label": "db.go"
- },
- {
- "label": "DB",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L35",
- "id": "db_db",
- "community": 12,
- "norm_label": "db"
- },
- {
- "label": "New()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L15",
- "id": "db_db_new",
- "community": 12,
- "norm_label": "new()"
- },
- {
- "label": ".Close()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L33",
- "id": "db_db_close",
- "community": 12,
- "norm_label": ".close()"
- },
- {
- "label": ".Pool()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L37",
- "id": "db_db_pool",
- "community": 12,
- "norm_label": ".pool()"
- },
- {
- "label": ".QueryRow()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L41",
- "id": "db_db_queryrow",
- "community": 12,
- "norm_label": ".queryrow()"
- },
- {
- "label": ".Query()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L45",
- "id": "db_db_query",
- "community": 12,
- "norm_label": ".query()"
- },
- {
- "label": ".Exec()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L49",
- "id": "db_db_exec",
- "community": 12,
- "norm_label": ".exec()"
- },
- {
- "label": "Stats",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L55",
- "id": "db_stats",
- "community": 12,
- "norm_label": "stats"
- },
- {
- "label": ".GetStats()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L70",
- "id": "db_db_getstats",
- "community": 12,
- "norm_label": ".getstats()"
- },
- {
- "label": "repository.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L1",
- "id": "apps_auth_service_internal_db_repository_go",
- "community": 33,
- "norm_label": "repository.go"
- },
- {
- "label": "User",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L13",
- "id": "db_user",
- "community": 33,
- "norm_label": "user"
- },
- {
- "label": "MagicLink",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L26",
- "id": "db_magiclink",
- "community": 33,
- "norm_label": "magiclink"
- },
- {
- "label": ".GetUserByEmail()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L35",
- "id": "db_db_getuserbyemail",
- "community": 12,
- "norm_label": ".getuserbyemail()"
- },
- {
- "label": ".GetUserByID()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L63",
- "id": "db_db_getuserbyid",
- "community": 12,
- "norm_label": ".getuserbyid()"
- },
- {
- "label": ".GetUserByProviderID()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L91",
- "id": "db_db_getuserbyproviderid",
- "community": 12,
- "norm_label": ".getuserbyproviderid()"
- },
- {
- "label": ".CreateUser()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L118",
- "id": "db_db_createuser",
- "community": 12,
- "norm_label": ".createuser()"
- },
- {
- "label": ".UpdateUser()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L138",
- "id": "db_db_updateuser",
- "community": 12,
- "norm_label": ".updateuser()"
- },
- {
- "label": ".UpdateLastLogin()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L152",
- "id": "db_db_updatelastlogin",
- "community": 12,
- "norm_label": ".updatelastlogin()"
- },
- {
- "label": ".CreateMagicLink()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L159",
- "id": "db_db_createmagiclink",
- "community": 12,
- "norm_label": ".createmagiclink()"
- },
- {
- "label": ".GetMagicLink()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L167",
- "id": "db_db_getmagiclink",
- "community": 12,
- "norm_label": ".getmagiclink()"
- },
- {
- "label": ".MarkMagicLinkUsed()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L187",
- "id": "db_db_markmagiclinkused",
- "community": 12,
- "norm_label": ".markmagiclinkused()"
- },
- {
- "label": ".PutKV()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L192",
- "id": "db_db_putkv",
- "community": 12,
- "norm_label": ".putkv()"
- },
- {
- "label": ".GetKV()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L207",
- "id": "db_db_getkv",
- "community": 12,
- "norm_label": ".getkv()"
- },
- {
- "label": "config_test.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L1",
- "id": "apps_auth_service_internal_config_config_test_go",
- "community": 0,
- "norm_label": "config_test.go"
- },
- {
- "label": "TestStripeReadinessHelpers()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L8",
- "id": "config_config_test_teststripereadinesshelpers",
- "community": 0,
- "norm_label": "teststripereadinesshelpers()"
- },
- {
- "label": "TestStripeCheckoutReadyRequiresSecretAndPrice()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L30",
- "id": "config_config_test_teststripecheckoutreadyrequiressecretandprice",
- "community": 0,
- "norm_label": "teststripecheckoutreadyrequiressecretandprice()"
- },
- {
- "label": "TestLoadDefaultsAuthServicePortTo8081()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L47",
- "id": "config_config_test_testloaddefaultsauthserviceportto8081",
- "community": 0,
- "norm_label": "testloaddefaultsauthserviceportto8081()"
- },
- {
- "label": "config.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L1",
- "id": "apps_auth_service_internal_config_config_go",
- "community": 0,
- "norm_label": "config.go"
- },
- {
- "label": "Config",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L10",
- "id": "config_config",
- "community": 0,
- "norm_label": "config"
- },
- {
- "label": "Load()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L34",
- "id": "config_config_load",
- "community": 0,
- "norm_label": "load()"
- },
- {
- "label": "getEnv()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L80",
- "id": "config_config_getenv",
- "community": 0,
- "norm_label": "getenv()"
- },
- {
- "label": "getEnvAllowEmpty()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L87",
- "id": "config_config_getenvallowempty",
- "community": 0,
- "norm_label": "getenvallowempty()"
- },
- {
- "label": ".StripeSecretConfigured()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L94",
- "id": "config_config_stripesecretconfigured",
- "community": 0,
- "norm_label": ".stripesecretconfigured()"
- },
- {
- "label": ".StripeWebhookConfigured()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L98",
- "id": "config_config_stripewebhookconfigured",
- "community": 0,
- "norm_label": ".stripewebhookconfigured()"
- },
- {
- "label": ".StripeHasAnyPriceConfigured()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L102",
- "id": "config_config_stripehasanypriceconfigured",
- "community": 0,
- "norm_label": ".stripehasanypriceconfigured()"
- },
- {
- "label": ".StripeCheckoutReady()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L111",
- "id": "config_config_stripecheckoutready",
- "community": 0,
- "norm_label": ".stripecheckoutready()"
- },
- {
- "label": "google.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L1",
- "id": "apps_auth_service_internal_oauth_google_go",
- "community": 24,
- "norm_label": "google.go"
- },
- {
- "label": "GoogleUser",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L15",
- "id": "oauth_googleuser",
- "community": 24,
- "norm_label": "googleuser"
- },
- {
- "label": "GoogleProvider",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L23",
- "id": "oauth_googleprovider",
- "community": 24,
- "norm_label": "googleprovider"
- },
- {
- "label": "NewGoogleProvider()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L27",
- "id": "oauth_google_newgoogleprovider",
- "community": 24,
- "norm_label": "newgoogleprovider()"
- },
- {
- "label": ".Enabled()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L52",
- "id": "oauth_googleprovider_enabled",
- "community": 24,
- "norm_label": ".enabled()"
- },
- {
- "label": ".GetAuthURL()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L56",
- "id": "oauth_googleprovider_getauthurl",
- "community": 24,
- "norm_label": ".getauthurl()"
- },
- {
- "label": ".ExchangeCode()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L60",
- "id": "oauth_googleprovider_exchangecode",
- "community": 24,
- "norm_label": ".exchangecode()"
- },
- {
- "label": ".ParseUser()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L86",
- "id": "oauth_googleprovider_parseuser",
- "community": 24,
- "norm_label": ".parseuser()"
- },
- {
- "label": "handlers.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L1",
- "id": "apps_auth_service_internal_handlers_handlers_go",
- "community": 6,
- "norm_label": "handlers.go"
- },
- {
- "label": "Handler",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L24",
- "id": "handlers_handler",
- "community": 6,
- "norm_label": "handler"
- },
- {
- "label": "LoginRequest",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L33",
- "id": "handlers_loginrequest",
- "community": 6,
- "norm_label": "loginrequest"
- },
- {
- "label": "VerifyRequest",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L38",
- "id": "handlers_verifyrequest",
- "community": 6,
- "norm_label": "verifyrequest"
- },
- {
- "label": "RefreshRequest",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L42",
- "id": "handlers_refreshrequest",
- "community": 6,
- "norm_label": "refreshrequest"
- },
- {
- "label": "PasswordRegisterRequest",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L46",
- "id": "handlers_passwordregisterrequest",
- "community": 6,
- "norm_label": "passwordregisterrequest"
- },
- {
- "label": "PasswordLoginRequest",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L52",
- "id": "handlers_passwordloginrequest",
- "community": 6,
- "norm_label": "passwordloginrequest"
- },
- {
- "label": "CheckoutRequest",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L57",
- "id": "handlers_checkoutrequest",
- "community": 6,
- "norm_label": "checkoutrequest"
- },
- {
- "label": "New()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L62",
- "id": "handlers_handlers_new",
- "community": 0,
- "norm_label": "new()"
- },
- {
- "label": ".RegisterRoutes()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L77",
- "id": "handlers_handler_registerroutes",
- "community": 6,
- "norm_label": ".registerroutes()"
- },
- {
- "label": ".SendMagicLink()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L109",
- "id": "handlers_handler_sendmagiclink",
- "community": 6,
- "norm_label": ".sendmagiclink()"
- },
- {
- "label": "detectLocale()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L132",
- "id": "handlers_handlers_detectlocale",
- "community": 6,
- "norm_label": "detectlocale()"
- },
- {
- "label": ".VerifyMagicLink()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L141",
- "id": "handlers_handler_verifymagiclink",
- "community": 6,
- "norm_label": ".verifymagiclink()"
- },
- {
- "label": ".RegisterWithPassword()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L157",
- "id": "handlers_handler_registerwithpassword",
- "community": 6,
- "norm_label": ".registerwithpassword()"
- },
- {
- "label": ".LoginWithPassword()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L177",
- "id": "handlers_handler_loginwithpassword",
- "community": 6,
- "norm_label": ".loginwithpassword()"
- },
- {
- "label": ".RefreshToken()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L193",
- "id": "handlers_handler_refreshtoken",
- "community": 6,
- "norm_label": ".refreshtoken()"
- },
- {
- "label": ".GetMe()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L221",
- "id": "handlers_handler_getme",
- "community": 6,
- "norm_label": ".getme()"
- },
- {
- "label": ".Logout()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L237",
- "id": "handlers_handler_logout",
- "community": 6,
- "norm_label": ".logout()"
- },
- {
- "label": ".ListProviders()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L241",
- "id": "handlers_handler_listproviders",
- "community": 6,
- "norm_label": ".listproviders()"
- },
- {
- "label": ".GoogleAuth()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L260",
- "id": "handlers_handler_googleauth",
- "community": 6,
- "norm_label": ".googleauth()"
- },
- {
- "label": ".GoogleCallback()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L273",
- "id": "handlers_handler_googlecallback",
- "community": 6,
- "norm_label": ".googlecallback()"
- },
- {
- "label": ".GetSubscription()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L314",
- "id": "handlers_handler_getsubscription",
- "community": 6,
- "norm_label": ".getsubscription()"
- },
- {
- "label": ".CreateCheckoutSession()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L329",
- "id": "handlers_handler_createcheckoutsession",
- "community": 6,
- "norm_label": ".createcheckoutsession()"
- },
- {
- "label": ".RefreshSubscription()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L361",
- "id": "handlers_handler_refreshsubscription",
- "community": 6,
- "norm_label": ".refreshsubscription()"
- },
- {
- "label": ".ListPlans()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L381",
- "id": "handlers_handler_listplans",
- "community": 6,
- "norm_label": ".listplans()"
- },
- {
- "label": ".StripeWebhook()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L414",
- "id": "handlers_handler_stripewebhook",
- "community": 6,
- "norm_label": ".stripewebhook()"
- },
- {
- "label": ".RequireAuth()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L435",
- "id": "handlers_handler_requireauth",
- "community": 6,
- "norm_label": ".requireauth()"
- },
- {
- "label": ".verifyBearerToken()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L462",
- "id": "handlers_handler_verifybearertoken",
- "community": 6,
- "norm_label": ".verifybearertoken()"
- },
- {
- "label": ".claimsFromContext()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L472",
- "id": "handlers_handler_claimsfromcontext",
- "community": 6,
- "norm_label": ".claimsfromcontext()"
- },
- {
- "label": "generateState()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L488",
- "id": "handlers_handlers_generatestate",
- "community": 6,
- "norm_label": "generatestate()"
- },
- {
- "label": "oauthCookieSecure()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L496",
- "id": "handlers_handlers_oauthcookiesecure",
- "community": 6,
- "norm_label": "oauthcookiesecure()"
- },
- {
- "label": "timeoutMiddleware()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L506",
- "id": "handlers_handlers_timeoutmiddleware",
- "community": 6,
- "norm_label": "timeoutmiddleware()"
- },
- {
- "label": "admin.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L1",
- "id": "apps_auth_service_internal_handlers_admin_go",
- "community": 6,
- "norm_label": "admin.go"
- },
- {
- "label": "AdminDashboard",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L13",
- "id": "handlers_admindashboard",
- "community": 6,
- "norm_label": "admindashboard"
- },
- {
- "label": "NewAdminDashboard()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L18",
- "id": "handlers_admin_newadmindashboard",
- "community": 6,
- "norm_label": "newadmindashboard()"
- },
- {
- "label": ".RegisterRoutes()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L23",
- "id": "handlers_admindashboard_registerroutes",
- "community": 6,
- "norm_label": ".registerroutes()"
- },
- {
- "label": ".GetConfig()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L34",
- "id": "handlers_admindashboard_getconfig",
- "community": 6,
- "norm_label": ".getconfig()"
- },
- {
- "label": ".GetPrices()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L54",
- "id": "handlers_admindashboard_getprices",
- "community": 6,
- "norm_label": ".getprices()"
- },
- {
- "label": ".GetStats()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L108",
- "id": "handlers_admindashboard_getstats",
- "community": 6,
- "norm_label": ".getstats()"
- },
- {
- "label": ".RenderDashboard()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L124",
- "id": "handlers_admindashboard_renderdashboard",
- "community": 6,
- "norm_label": ".renderdashboard()"
- },
- {
- "label": "service.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L1",
- "id": "apps_auth_service_internal_billing_service_go",
- "community": 0,
- "norm_label": "service.go"
- },
- {
- "label": "Service",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L44",
- "id": "billing_service",
- "community": 0,
- "norm_label": "service"
- },
- {
- "label": "CheckoutSession",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L48",
- "id": "billing_checkoutsession",
- "community": 0,
- "norm_label": "checkoutsession"
- },
- {
- "label": "SubscriptionSnapshot",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L52",
- "id": "billing_subscriptionsnapshot",
- "community": 0,
- "norm_label": "subscriptionsnapshot"
- },
- {
- "label": "PaymentMethod",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L68",
- "id": "billing_paymentmethod",
- "community": 0,
- "norm_label": "paymentmethod"
- },
- {
- "label": "UserIdentity",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L73",
- "id": "billing_useridentity",
- "community": 0,
- "norm_label": "useridentity"
- },
- {
- "label": "userCustomerMapping",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L79",
- "id": "billing_usercustomermapping",
- "community": 0,
- "norm_label": "usercustomermapping"
- },
- {
- "label": "NewService()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L62",
- "id": "billing_service_newservice",
- "community": 0,
- "norm_label": "newservice()"
- },
- {
- "label": ".GetSubscription()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L85",
- "id": "billing_service_getsubscription",
- "community": 0,
- "norm_label": ".getsubscription()"
- },
- {
- "label": ".CreateCheckoutSession()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L111",
- "id": "billing_service_createcheckoutsession",
- "community": 0,
- "norm_label": ".createcheckoutsession()"
- },
- {
- "label": ".Refresh()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L146",
- "id": "billing_service_refresh",
- "community": 0,
- "norm_label": ".refresh()"
- },
- {
- "label": ".HandleWebhook()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L218",
- "id": "billing_service_handlewebhook",
- "community": 0,
- "norm_label": ".handlewebhook()"
- },
- {
- "label": ".ensureCustomer()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L203",
- "id": "billing_service_ensurecustomer",
- "community": 0,
- "norm_label": ".ensurecustomer()"
- },
- {
- "label": ".syncStripeDataToKV()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L234",
- "id": "billing_service_syncstripedatatokv",
- "community": 0,
- "norm_label": ".syncstripedatatokv()"
- },
- {
- "label": ".storeCustomerMapping()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L290",
- "id": "billing_service_storecustomermapping",
- "community": 0,
- "norm_label": ".storecustomermapping()"
- },
- {
- "label": ".getCustomerMapping()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L298",
- "id": "billing_service_getcustomermapping",
- "community": 0,
- "norm_label": ".getcustomermapping()"
- },
- {
- "label": ".getCustomerSnapshot()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L310",
- "id": "billing_service_getcustomersnapshot",
- "community": 0,
- "norm_label": ".getcustomersnapshot()"
- },
- {
- "label": ".noneSnapshot()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L319",
- "id": "billing_service_nonesnapshot",
- "community": 0,
- "norm_label": ".nonesnapshot()"
- },
- {
- "label": ".priceForPlan()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L412",
- "id": "billing_service_priceforplan",
- "community": 0,
- "norm_label": ".priceforplan()"
- },
- {
- "label": ".defaultPlanCode()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L360",
- "id": "billing_service_defaultplancode",
- "community": 0,
- "norm_label": ".defaultplancode()"
- },
- {
- "label": ".planCodeForPrice()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L401",
- "id": "billing_service_plancodeforprice",
- "community": 0,
- "norm_label": ".plancodeforprice()"
- },
- {
- "label": ".hasConfiguredPrices()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L381",
- "id": "billing_service_hasconfiguredprices",
- "community": 0,
- "norm_label": ".hasconfiguredprices()"
- },
- {
- "label": ".checkoutAvailableForPlan()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L385",
- "id": "billing_service_checkoutavailableforplan",
- "community": 0,
- "norm_label": ".checkoutavailableforplan()"
- },
- {
- "label": "normalizePlanCode()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L466",
- "id": "billing_service_normalizeplancode",
- "community": 0,
- "norm_label": "normalizeplancode()"
- },
- {
- "label": "normalizeCurrency()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L477",
- "id": "billing_service_normalizecurrency",
- "community": 0,
- "norm_label": "normalizecurrency()"
- },
- {
- "label": "userCustomerKey()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L416",
- "id": "billing_service_usercustomerkey",
- "community": 0,
- "norm_label": "usercustomerkey()"
- },
- {
- "label": "customerSnapshotKey()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L420",
- "id": "billing_service_customersnapshotkey",
- "community": 0,
- "norm_label": "customersnapshotkey()"
- },
- {
- "label": "unixPtr()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L424",
- "id": "billing_service_unixptr",
- "community": 0,
- "norm_label": "unixptr()"
- },
- {
- "label": "subscriptionRank()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L429",
- "id": "billing_service_subscriptionrank",
- "community": 0,
- "norm_label": "subscriptionrank()"
- },
- {
- "label": "extractCustomerID()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L453",
- "id": "billing_service_extractcustomerid",
- "community": 0,
- "norm_label": "extractcustomerid()"
- },
- {
- "label": "service_test.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L1",
- "id": "apps_auth_service_internal_billing_service_test_go",
- "community": 7,
- "norm_label": "service_test.go"
- },
- {
- "label": "TestPriceForPlanUsesConfiguredPlanCodesOnly()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L10",
- "id": "billing_service_test_testpriceforplanusesconfiguredplancodesonly",
- "community": 7,
- "norm_label": "testpriceforplanusesconfiguredplancodesonly()"
- },
- {
- "label": "TestKVKeyShape()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L40",
- "id": "billing_service_test_testkvkeyshape",
- "community": 0,
- "norm_label": "testkvkeyshape()"
- },
- {
- "label": "TestCheckoutAvailableForPlanRequiresSecret()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L49",
- "id": "billing_service_test_testcheckoutavailableforplanrequiressecret",
- "community": 7,
- "norm_label": "testcheckoutavailableforplanrequiressecret()"
- },
- {
- "label": "TestCheckoutAvailableForPlanRequiresConfiguredPlan()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L61",
- "id": "billing_service_test_testcheckoutavailableforplanrequiresconfiguredplan",
- "community": 7,
- "norm_label": "testcheckoutavailableforplanrequiresconfiguredplan()"
- },
- {
- "label": "service.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L1",
- "id": "apps_auth_service_internal_auth_service_go",
- "community": 15,
- "norm_label": "service.go"
- },
- {
- "label": "Service",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L23",
- "id": "auth_service",
- "community": 15,
- "norm_label": "service"
- },
- {
- "label": "TokenPair",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L30",
- "id": "auth_tokenpair",
- "community": 15,
- "norm_label": "tokenpair"
- },
- {
- "label": "Claims",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L37",
- "id": "auth_claims",
- "community": 15,
- "norm_label": "claims"
- },
- {
- "label": "NewService()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L46",
- "id": "auth_service_newservice",
- "community": 15,
- "norm_label": "newservice()"
- },
- {
- "label": ".GenerateMagicLink()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L55",
- "id": "auth_service_generatemagiclink",
- "community": 15,
- "norm_label": ".generatemagiclink()"
- },
- {
- "label": ".VerifyMagicLink()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L93",
- "id": "auth_service_verifymagiclink",
- "community": 15,
- "norm_label": ".verifymagiclink()"
- },
- {
- "label": ".OAuthLoginOrCreate()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L127",
- "id": "auth_service_oauthloginorcreate",
- "community": 15,
- "norm_label": ".oauthloginorcreate()"
- },
- {
- "label": ".RegisterWithPassword()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L170",
- "id": "auth_service_registerwithpassword",
- "community": 15,
- "norm_label": ".registerwithpassword()"
- },
- {
- "label": ".LoginWithPassword()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L201",
- "id": "auth_service_loginwithpassword",
- "community": 15,
- "norm_label": ".loginwithpassword()"
- },
- {
- "label": ".generateTokens()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L221",
- "id": "auth_service_generatetokens",
- "community": 15,
- "norm_label": ".generatetokens()"
- },
- {
- "label": ".generateTokensAt()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L226",
- "id": "auth_service_generatetokensat",
- "community": 15,
- "norm_label": ".generatetokensat()"
- },
- {
- "label": ".VerifyToken()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L250",
- "id": "auth_service_verifytoken",
- "community": 15,
- "norm_label": ".verifytoken()"
- },
- {
- "label": ".VerifyRefreshToken()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L254",
- "id": "auth_service_verifyrefreshtoken",
- "community": 15,
- "norm_label": ".verifyrefreshtoken()"
- },
- {
- "label": ".RefreshTokens()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L258",
- "id": "auth_service_refreshtokens",
- "community": 15,
- "norm_label": ".refreshtokens()"
- },
- {
- "label": ".verifyTokenOfType()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L286",
- "id": "auth_service_verifytokenoftype",
- "community": 15,
- "norm_label": ".verifytokenoftype()"
- },
- {
- "label": ".signToken()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L308",
- "id": "auth_service_signtoken",
- "community": 15,
- "norm_label": ".signtoken()"
- },
- {
- "label": "generateRandomToken()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L329",
- "id": "auth_service_generaterandomtoken",
- "community": 15,
- "norm_label": "generaterandomtoken()"
- },
- {
- "label": "neon.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L1",
- "id": "apps_auth_service_internal_auth_neon_go",
- "community": 0,
- "norm_label": "neon.go"
- },
- {
- "label": "NeonVerifier",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L15",
- "id": "auth_neonverifier",
- "community": 0,
- "norm_label": "neonverifier"
- },
- {
- "label": "NewNeonVerifier()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L22",
- "id": "auth_neon_newneonverifier",
- "community": 0,
- "norm_label": "newneonverifier()"
- },
- {
- "label": ".Enabled()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L42",
- "id": "auth_neonverifier_enabled",
- "community": 0,
- "norm_label": ".enabled()"
- },
- {
- "label": ".Close()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L46",
- "id": "auth_neonverifier_close",
- "community": 0,
- "norm_label": ".close()"
- },
- {
- "label": ".Verify()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L52",
- "id": "auth_neonverifier_verify",
- "community": 0,
- "norm_label": ".verify()"
- },
- {
- "label": "service_test.go",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L1",
- "id": "apps_auth_service_internal_auth_service_test_go",
- "community": 7,
- "norm_label": "service_test.go"
- },
- {
- "label": "TestGenerateTokensProducesVerifiableAccessAndRefreshTokens()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L13",
- "id": "auth_service_test_testgeneratetokensproducesverifiableaccessandrefreshtokens",
- "community": 7,
- "norm_label": "testgeneratetokensproducesverifiableaccessandrefreshtokens()"
- },
- {
- "label": "TestRefreshTokensReturnsRotatedPair()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L51",
- "id": "auth_service_test_testrefreshtokensreturnsrotatedpair",
- "community": 7,
- "norm_label": "testrefreshtokensreturnsrotatedpair()"
- },
- {
- "label": "TestRefreshTokensRejectsInvalidToken()",
- "file_type": "code",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L82",
- "id": "auth_service_test_testrefreshtokensrejectsinvalidtoken",
- "community": 7,
- "norm_label": "testrefreshtokensrejectsinvalidtoken()"
- },
- {
- "label": "main.go",
- "file_type": "code",
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L1",
- "id": "apps_backend_cmd_api_main_go",
- "community": 5,
- "norm_label": "main.go"
- },
- {
- "label": "service.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L1",
- "id": "apps_backend_internal_catalog_service_go",
- "community": 16,
- "norm_label": "service.go"
- },
- {
- "label": "Service",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L22",
- "id": "catalog_service",
- "community": 16,
- "norm_label": "service"
- },
- {
- "label": "NewService()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L26",
- "id": "catalog_service_newservice",
- "community": 16,
- "norm_label": "newservice()"
- },
- {
- "label": ".ListLocations()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L34",
- "id": "catalog_service_listlocations",
- "community": 16,
- "norm_label": ".listlocations()"
- },
- {
- "label": ".CreateLocation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L60",
- "id": "catalog_service_createlocation",
- "community": 16,
- "norm_label": ".createlocation()"
- },
- {
- "label": ".UpdateLocation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L88",
- "id": "catalog_service_updatelocation",
- "community": 16,
- "norm_label": ".updatelocation()"
- },
- {
- "label": ".DeleteLocation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L124",
- "id": "catalog_service_deletelocation",
- "community": 16,
- "norm_label": ".deletelocation()"
- },
- {
- "label": ".ListBlockedDays()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L145",
- "id": "catalog_service_listblockeddays",
- "community": 16,
- "norm_label": ".listblockeddays()"
- },
- {
- "label": ".CreateBlockedDay()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L171",
- "id": "catalog_service_createblockedday",
- "community": 16,
- "norm_label": ".createblockedday()"
- },
- {
- "label": ".UpdateBlockedDay()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L207",
- "id": "catalog_service_updateblockedday",
- "community": 16,
- "norm_label": ".updateblockedday()"
- },
- {
- "label": ".DeleteBlockedDay()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L254",
- "id": "catalog_service_deleteblockedday",
- "community": 16,
- "norm_label": ".deleteblockedday()"
- },
- {
- "label": ".ListCustomers()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L284",
- "id": "catalog_service_listcustomers",
- "community": 16,
- "norm_label": ".listcustomers()"
- },
- {
- "label": ".CreateCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L319",
- "id": "catalog_service_createcustomer",
- "community": 16,
- "norm_label": ".createcustomer()"
- },
- {
- "label": ".UpdateCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L356",
- "id": "catalog_service_updatecustomer",
- "community": 16,
- "norm_label": ".updatecustomer()"
- },
- {
- "label": ".DeleteCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L410",
- "id": "catalog_service_deletecustomer",
- "community": 16,
- "norm_label": ".deletecustomer()"
- },
- {
- "label": ".ListWorkingHours()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L431",
- "id": "catalog_service_listworkinghours",
- "community": 16,
- "norm_label": ".listworkinghours()"
- },
- {
- "label": ".UpdateWorkingHours()",
- "file_type": "code",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L454",
- "id": "catalog_service_updateworkinghours",
- "community": 16,
- "norm_label": ".updateworkinghours()"
- },
- {
- "label": "middleware.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L1",
- "id": "apps_backend_internal_httpx_middleware_go",
- "community": 5,
- "norm_label": "middleware.go"
- },
- {
- "label": "SecurityHeaders()",
- "file_type": "code",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L12",
- "id": "httpx_middleware_securityheaders",
- "community": 5,
- "norm_label": "securityheaders()"
- },
- {
- "label": "visitor",
- "file_type": "code",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L22",
- "id": "httpx_visitor",
- "community": 5,
- "norm_label": "visitor"
- },
- {
- "label": "RateLimiter",
- "file_type": "code",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L27",
- "id": "httpx_ratelimiter",
- "community": 5,
- "norm_label": "ratelimiter"
- },
- {
- "label": "NewRateLimiter()",
- "file_type": "code",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L34",
- "id": "httpx_middleware_newratelimiter",
- "community": 5,
- "norm_label": "newratelimiter()"
- },
- {
- "label": ".Middleware()",
- "file_type": "code",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L42",
- "id": "httpx_ratelimiter_middleware",
- "community": 5,
- "norm_label": ".middleware()"
- },
- {
- "label": ".getVisitor()",
- "file_type": "code",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L59",
- "id": "httpx_ratelimiter_getvisitor",
- "community": 5,
- "norm_label": ".getvisitor()"
- },
- {
- "label": ".cleanupLoop()",
- "file_type": "code",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L77",
- "id": "httpx_ratelimiter_cleanuploop",
- "community": 5,
- "norm_label": ".cleanuploop()"
- },
- {
- "label": "repository.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1",
- "id": "apps_backend_internal_db_repository_go",
- "community": 8,
- "norm_label": "repository.go"
- },
- {
- "label": "Repository",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L16",
- "id": "db_repository",
- "community": 8,
- "norm_label": "repository"
- },
- {
- "label": "TenantRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L74",
- "id": "db_tenantrecord",
- "community": 8,
- "norm_label": "tenantrecord"
- },
- {
- "label": "TenantMembershipRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L88",
- "id": "db_tenantmembershiprecord",
- "community": 8,
- "norm_label": "tenantmembershiprecord"
- },
- {
- "label": "CreateTenantForUserParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L94",
- "id": "db_createtenantforuserparams",
- "community": 8,
- "norm_label": "createtenantforuserparams"
- },
- {
- "label": "BrandProfileRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L115",
- "id": "db_brandprofilerecord",
- "community": 8,
- "norm_label": "brandprofilerecord"
- },
- {
- "label": "AvailabilityBlockRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L124",
- "id": "db_availabilityblockrecord",
- "community": 8,
- "norm_label": "availabilityblockrecord"
- },
- {
- "label": "TeamInviteRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L131",
- "id": "db_teaminviterecord",
- "community": 8,
- "norm_label": "teaminviterecord"
- },
- {
- "label": "ServiceRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L136",
- "id": "db_servicerecord",
- "community": 8,
- "norm_label": "servicerecord"
- },
- {
- "label": "AvailabilityRuleRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L146",
- "id": "db_availabilityrulerecord",
- "community": 8,
- "norm_label": "availabilityrulerecord"
- },
- {
- "label": "ClassSessionRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L155",
- "id": "db_classsessionrecord",
- "community": 8,
- "norm_label": "classsessionrecord"
- },
- {
- "label": "BookingRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L166",
- "id": "db_bookingrecord",
- "community": 8,
- "norm_label": "bookingrecord"
- },
- {
- "label": "CreateBookingParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L181",
- "id": "db_createbookingparams",
- "community": 8,
- "norm_label": "createbookingparams"
- },
- {
- "label": "CreatedBooking",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L197",
- "id": "db_createdbooking",
- "community": 8,
- "norm_label": "createdbooking"
- },
- {
- "label": "WaitlistEntryParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L203",
- "id": "db_waitlistentryparams",
- "community": 8,
- "norm_label": "waitlistentryparams"
- },
- {
- "label": "DashboardMetrics",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L211",
- "id": "db_dashboardmetrics",
- "community": 8,
- "norm_label": "dashboardmetrics"
- },
- {
- "label": "ReminderJobParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L217",
- "id": "db_reminderjobparams",
- "community": 8,
- "norm_label": "reminderjobparams"
- },
- {
- "label": "ReminderJobRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L224",
- "id": "db_reminderjobrecord",
- "community": 8,
- "norm_label": "reminderjobrecord"
- },
- {
- "label": "NotificationDeliveryLogParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L240",
- "id": "db_notificationdeliverylogparams",
- "community": 8,
- "norm_label": "notificationdeliverylogparams"
- },
- {
- "label": "BillingSnapshotRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L251",
- "id": "db_billingsnapshotrecord",
- "community": 8,
- "norm_label": "billingsnapshotrecord"
- },
- {
- "label": "LocationRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L269",
- "id": "db_locationrecord",
- "community": 8,
- "norm_label": "locationrecord"
- },
- {
- "label": "CreateLocationParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L277",
- "id": "db_createlocationparams",
- "community": 8,
- "norm_label": "createlocationparams"
- },
- {
- "label": "UpdateLocationParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L283",
- "id": "db_updatelocationparams",
- "community": 8,
- "norm_label": "updatelocationparams"
- },
- {
- "label": "BlockedDayRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L289",
- "id": "db_blockeddayrecord",
- "community": 8,
- "norm_label": "blockeddayrecord"
- },
- {
- "label": "CreateBlockedDayParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L300",
- "id": "db_createblockeddayparams",
- "community": 8,
- "norm_label": "createblockeddayparams"
- },
- {
- "label": "UpdateBlockedDayParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L309",
- "id": "db_updateblockeddayparams",
- "community": 8,
- "norm_label": "updateblockeddayparams"
- },
- {
- "label": "CustomerRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L317",
- "id": "db_customerrecord",
- "community": 8,
- "norm_label": "customerrecord"
- },
- {
- "label": "CreateCustomerParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L328",
- "id": "db_createcustomerparams",
- "community": 8,
- "norm_label": "createcustomerparams"
- },
- {
- "label": "UpdateCustomerParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L337",
- "id": "db_updatecustomerparams",
- "community": 8,
- "norm_label": "updatecustomerparams"
- },
- {
- "label": "WorkingHoursRecord",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L346",
- "id": "db_workinghoursrecord",
- "community": 8,
- "norm_label": "workinghoursrecord"
- },
- {
- "label": "UpdateWorkingHoursParams",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L354",
- "id": "db_updateworkinghoursparams",
- "community": 8,
- "norm_label": "updateworkinghoursparams"
- },
- {
- "label": "PGRepository",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L360",
- "id": "db_pgrepository",
- "community": 3,
- "norm_label": "pgrepository"
- },
- {
- "label": "NewRepository()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L364",
- "id": "db_repository_newrepository",
- "community": 5,
- "norm_label": "newrepository()"
- },
- {
- "label": ".GetTenantBySlug()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L374",
- "id": "db_pgrepository_gettenantbyslug",
- "community": 3,
- "norm_label": ".gettenantbyslug()"
- },
- {
- "label": ".GetTenantByID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L399",
- "id": "db_pgrepository_gettenantbyid",
- "community": 3,
- "norm_label": ".gettenantbyid()"
- },
- {
- "label": ".GetTenantByBillingCustomerID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L424",
- "id": "db_pgrepository_gettenantbybillingcustomerid",
- "community": 3,
- "norm_label": ".gettenantbybillingcustomerid()"
- },
- {
- "label": ".EnsureUserIdentity()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L449",
- "id": "db_pgrepository_ensureuseridentity",
- "community": 3,
- "norm_label": ".ensureuseridentity()"
- },
- {
- "label": ".CreateTenantForUser()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L461",
- "id": "db_pgrepository_createtenantforuser",
- "community": 2,
- "norm_label": ".createtenantforuser()"
- },
- {
- "label": ".GetBrandProfile()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L603",
- "id": "db_pgrepository_getbrandprofile",
- "community": 3,
- "norm_label": ".getbrandprofile()"
- },
- {
- "label": ".GetTenantMembershipByUserID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L620",
- "id": "db_pgrepository_gettenantmembershipbyuserid",
- "community": 3,
- "norm_label": ".gettenantmembershipbyuserid()"
- },
- {
- "label": ".ListServicesByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L652",
- "id": "db_pgrepository_listservicesbytenant",
- "community": 3,
- "norm_label": ".listservicesbytenant()"
- },
- {
- "label": ".ListAvailabilityRulesByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L683",
- "id": "db_pgrepository_listavailabilityrulesbytenant",
- "community": 3,
- "norm_label": ".listavailabilityrulesbytenant()"
- },
- {
- "label": ".ListClassSessionsByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L713",
- "id": "db_pgrepository_listclasssessionsbytenant",
- "community": 3,
- "norm_label": ".listclasssessionsbytenant()"
- },
- {
- "label": ".ListBookingsByTenantBetween()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L747",
- "id": "db_pgrepository_listbookingsbytenantbetween",
- "community": 3,
- "norm_label": ".listbookingsbytenantbetween()"
- },
- {
- "label": ".CreateBooking()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L784",
- "id": "db_pgrepository_createbooking",
- "community": 3,
- "norm_label": ".createbooking()"
- },
- {
- "label": ".AppendWaitlistEntry()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L812",
- "id": "db_pgrepository_appendwaitlistentry",
- "community": 3,
- "norm_label": ".appendwaitlistentry()"
- },
- {
- "label": ".CreateReminderJob()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L820",
- "id": "db_pgrepository_createreminderjob",
- "community": 3,
- "norm_label": ".createreminderjob()"
- },
- {
- "label": ".ListDueReminderJobs()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L828",
- "id": "db_pgrepository_listduereminderjobs",
- "community": 3,
- "norm_label": ".listduereminderjobs()"
- },
- {
- "label": ".MarkReminderJobDispatched()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L870",
- "id": "db_pgrepository_markreminderjobdispatched",
- "community": 3,
- "norm_label": ".markreminderjobdispatched()"
- },
- {
- "label": ".CreateNotificationDeliveryLog()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L879",
- "id": "db_pgrepository_createnotificationdeliverylog",
- "community": 3,
- "norm_label": ".createnotificationdeliverylog()"
- },
- {
- "label": ".GetDashboardMetrics()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L891",
- "id": "db_pgrepository_getdashboardmetrics",
- "community": 3,
- "norm_label": ".getdashboardmetrics()"
- },
- {
- "label": ".GetSubscriptionSnapshot()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L914",
- "id": "db_pgrepository_getsubscriptionsnapshot",
- "community": 3,
- "norm_label": ".getsubscriptionsnapshot()"
- },
- {
- "label": ".UpsertSubscriptionSnapshot()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L941",
- "id": "db_pgrepository_upsertsubscriptionsnapshot",
- "community": 3,
- "norm_label": ".upsertsubscriptionsnapshot()"
- },
- {
- "label": ".UpdateTenantBillingCustomerID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L969",
- "id": "db_pgrepository_updatetenantbillingcustomerid",
- "community": 3,
- "norm_label": ".updatetenantbillingcustomerid()"
- },
- {
- "label": ".UpdateTenantBillingState()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L978",
- "id": "db_pgrepository_updatetenantbillingstate",
- "community": 3,
- "norm_label": ".updatetenantbillingstate()"
- },
- {
- "label": ".RecordBillingEvent()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L987",
- "id": "db_pgrepository_recordbillingevent",
- "community": 3,
- "norm_label": ".recordbillingevent()"
- },
- {
- "label": ".ListLocationsByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1003",
- "id": "db_pgrepository_listlocationsbytenant",
- "community": 3,
- "norm_label": ".listlocationsbytenant()"
- },
- {
- "label": ".GetLocationByID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1026",
- "id": "db_pgrepository_getlocationbyid",
- "community": 3,
- "norm_label": ".getlocationbyid()"
- },
- {
- "label": ".CreateLocation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1036",
- "id": "db_pgrepository_createlocation",
- "community": 3,
- "norm_label": ".createlocation()"
- },
- {
- "label": ".UpdateLocation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1046",
- "id": "db_pgrepository_updatelocation",
- "community": 3,
- "norm_label": ".updatelocation()"
- },
- {
- "label": ".DeleteLocation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1059",
- "id": "db_pgrepository_deletelocation",
- "community": 3,
- "norm_label": ".deletelocation()"
- },
- {
- "label": ".ListBlockedDaysByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1068",
- "id": "db_pgrepository_listblockeddaysbytenant",
- "community": 3,
- "norm_label": ".listblockeddaysbytenant()"
- },
- {
- "label": ".CreateBlockedDay()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1091",
- "id": "db_pgrepository_createblockedday",
- "community": 3,
- "norm_label": ".createblockedday()"
- },
- {
- "label": ".UpdateBlockedDay()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1101",
- "id": "db_pgrepository_updateblockedday",
- "community": 3,
- "norm_label": ".updateblockedday()"
- },
- {
- "label": ".DeleteBlockedDay()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1115",
- "id": "db_pgrepository_deleteblockedday",
- "community": 3,
- "norm_label": ".deleteblockedday()"
- },
- {
- "label": ".ListCustomersByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1124",
- "id": "db_pgrepository_listcustomersbytenant",
- "community": 3,
- "norm_label": ".listcustomersbytenant()"
- },
- {
- "label": ".GetCustomerByID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1148",
- "id": "db_pgrepository_getcustomerbyid",
- "community": 3,
- "norm_label": ".getcustomerbyid()"
- },
- {
- "label": ".GetCustomerByEmail()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1158",
- "id": "db_pgrepository_getcustomerbyemail",
- "community": 3,
- "norm_label": ".getcustomerbyemail()"
- },
- {
- "label": ".CreateCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1168",
- "id": "db_pgrepository_createcustomer",
- "community": 3,
- "norm_label": ".createcustomer()"
- },
- {
- "label": ".UpdateCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1178",
- "id": "db_pgrepository_updatecustomer",
- "community": 3,
- "norm_label": ".updatecustomer()"
- },
- {
- "label": ".DeleteCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1193",
- "id": "db_pgrepository_deletecustomer",
- "community": 3,
- "norm_label": ".deletecustomer()"
- },
- {
- "label": ".GetCustomerBookingsCount()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1198",
- "id": "db_pgrepository_getcustomerbookingscount",
- "community": 3,
- "norm_label": ".getcustomerbookingscount()"
- },
- {
- "label": ".GetCustomerLastBooking()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1207",
- "id": "db_pgrepository_getcustomerlastbooking",
- "community": 3,
- "norm_label": ".getcustomerlastbooking()"
- },
- {
- "label": ".GetBookingByReference()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1220",
- "id": "db_pgrepository_getbookingbyreference",
- "community": 3,
- "norm_label": ".getbookingbyreference()"
- },
- {
- "label": ".UpdateBookingStatus()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1232",
- "id": "db_pgrepository_updatebookingstatus",
- "community": 3,
- "norm_label": ".updatebookingstatus()"
- },
- {
- "label": ".RescheduleBooking()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1239",
- "id": "db_pgrepository_reschedulebooking",
- "community": 3,
- "norm_label": ".reschedulebooking()"
- },
- {
- "label": ".ListWorkingHoursByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1250",
- "id": "db_pgrepository_listworkinghoursbytenant",
- "community": 3,
- "norm_label": ".listworkinghoursbytenant()"
- },
- {
- "label": ".UpdateWorkingHours()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1273",
- "id": "db_pgrepository_updateworkinghours",
- "community": 3,
- "norm_label": ".updateworkinghours()"
- },
- {
- "label": "MemoryRepository",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1283",
- "id": "db_memoryrepository",
- "community": 2,
- "norm_label": "memoryrepository"
- },
- {
- "label": "NewMemoryRepository()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1302",
- "id": "db_repository_newmemoryrepository",
- "community": 7,
- "norm_label": "newmemoryrepository()"
- },
- {
- "label": ".GetTenantBySlug()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1411",
- "id": "db_memoryrepository_gettenantbyslug",
- "community": 2,
- "norm_label": ".gettenantbyslug()"
- },
- {
- "label": ".GetTenantByID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1418",
- "id": "db_memoryrepository_gettenantbyid",
- "community": 2,
- "norm_label": ".gettenantbyid()"
- },
- {
- "label": ".GetTenantByBillingCustomerID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1425",
- "id": "db_memoryrepository_gettenantbybillingcustomerid",
- "community": 2,
- "norm_label": ".gettenantbybillingcustomerid()"
- },
- {
- "label": ".EnsureUserIdentity()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1432",
- "id": "db_memoryrepository_ensureuseridentity",
- "community": 2,
- "norm_label": ".ensureuseridentity()"
- },
- {
- "label": ".CreateTenantForUser()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1442",
- "id": "db_memoryrepository_createtenantforuser",
- "community": 2,
- "norm_label": ".createtenantforuser()"
- },
- {
- "label": ".GetTenantMembershipByUserID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1503",
- "id": "db_memoryrepository_gettenantmembershipbyuserid",
- "community": 2,
- "norm_label": ".gettenantmembershipbyuserid()"
- },
- {
- "label": ".GetBrandProfile()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1513",
- "id": "db_memoryrepository_getbrandprofile",
- "community": 2,
- "norm_label": ".getbrandprofile()"
- },
- {
- "label": ".ListServicesByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1523",
- "id": "db_memoryrepository_listservicesbytenant",
- "community": 2,
- "norm_label": ".listservicesbytenant()"
- },
- {
- "label": ".ListAvailabilityRulesByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1530",
- "id": "db_memoryrepository_listavailabilityrulesbytenant",
- "community": 2,
- "norm_label": ".listavailabilityrulesbytenant()"
- },
- {
- "label": ".ListClassSessionsByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1537",
- "id": "db_memoryrepository_listclasssessionsbytenant",
- "community": 2,
- "norm_label": ".listclasssessionsbytenant()"
- },
- {
- "label": ".ListBookingsByTenantBetween()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1555",
- "id": "db_memoryrepository_listbookingsbytenantbetween",
- "community": 2,
- "norm_label": ".listbookingsbytenantbetween()"
- },
- {
- "label": ".CreateBooking()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1569",
- "id": "db_memoryrepository_createbooking",
- "community": 2,
- "norm_label": ".createbooking()"
- },
- {
- "label": ".AppendWaitlistEntry()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1592",
- "id": "db_memoryrepository_appendwaitlistentry",
- "community": 2,
- "norm_label": ".appendwaitlistentry()"
- },
- {
- "label": ".CreateReminderJob()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1597",
- "id": "db_memoryrepository_createreminderjob",
- "community": 2,
- "norm_label": ".createreminderjob()"
- },
- {
- "label": ".ListDueReminderJobs()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1629",
- "id": "db_memoryrepository_listduereminderjobs",
- "community": 2,
- "norm_label": ".listduereminderjobs()"
- },
- {
- "label": ".MarkReminderJobDispatched()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1643",
- "id": "db_memoryrepository_markreminderjobdispatched",
- "community": 2,
- "norm_label": ".markreminderjobdispatched()"
- },
- {
- "label": ".CreateNotificationDeliveryLog()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1653",
- "id": "db_memoryrepository_createnotificationdeliverylog",
- "community": 2,
- "norm_label": ".createnotificationdeliverylog()"
- },
- {
- "label": ".GetDashboardMetrics()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1658",
- "id": "db_memoryrepository_getdashboardmetrics",
- "community": 2,
- "norm_label": ".getdashboardmetrics()"
- },
- {
- "label": ".GetSubscriptionSnapshot()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1683",
- "id": "db_memoryrepository_getsubscriptionsnapshot",
- "community": 2,
- "norm_label": ".getsubscriptionsnapshot()"
- },
- {
- "label": ".UpsertSubscriptionSnapshot()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1690",
- "id": "db_memoryrepository_upsertsubscriptionsnapshot",
- "community": 2,
- "norm_label": ".upsertsubscriptionsnapshot()"
- },
- {
- "label": ".UpdateTenantBillingCustomerID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1695",
- "id": "db_memoryrepository_updatetenantbillingcustomerid",
- "community": 2,
- "norm_label": ".updatetenantbillingcustomerid()"
- },
- {
- "label": ".UpdateTenantBillingState()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1708",
- "id": "db_memoryrepository_updatetenantbillingstate",
- "community": 2,
- "norm_label": ".updatetenantbillingstate()"
- },
- {
- "label": ".RecordBillingEvent()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1725",
- "id": "db_memoryrepository_recordbillingevent",
- "community": 3,
- "norm_label": ".recordbillingevent()"
- },
- {
- "label": ".ListLocationsByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1744",
- "id": "db_memoryrepository_listlocationsbytenant",
- "community": 2,
- "norm_label": ".listlocationsbytenant()"
- },
- {
- "label": ".GetLocationByID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1751",
- "id": "db_memoryrepository_getlocationbyid",
- "community": 2,
- "norm_label": ".getlocationbyid()"
- },
- {
- "label": ".CreateLocation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1760",
- "id": "db_memoryrepository_createlocation",
- "community": 2,
- "norm_label": ".createlocation()"
- },
- {
- "label": ".UpdateLocation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1772",
- "id": "db_memoryrepository_updatelocation",
- "community": 2,
- "norm_label": ".updatelocation()"
- },
- {
- "label": ".DeleteLocation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1787",
- "id": "db_memoryrepository_deletelocation",
- "community": 2,
- "norm_label": ".deletelocation()"
- },
- {
- "label": ".ListBlockedDaysByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1801",
- "id": "db_memoryrepository_listblockeddaysbytenant",
- "community": 2,
- "norm_label": ".listblockeddaysbytenant()"
- },
- {
- "label": ".CreateBlockedDay()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1814",
- "id": "db_memoryrepository_createblockedday",
- "community": 2,
- "norm_label": ".createblockedday()"
- },
- {
- "label": ".UpdateBlockedDay()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1829",
- "id": "db_memoryrepository_updateblockedday",
- "community": 2,
- "norm_label": ".updateblockedday()"
- },
- {
- "label": ".DeleteBlockedDay()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1850",
- "id": "db_memoryrepository_deleteblockedday",
- "community": 2,
- "norm_label": ".deleteblockedday()"
- },
- {
- "label": ".ListCustomersByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1864",
- "id": "db_memoryrepository_listcustomersbytenant",
- "community": 2,
- "norm_label": ".listcustomersbytenant()"
- },
- {
- "label": ".GetCustomerByID()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1879",
- "id": "db_memoryrepository_getcustomerbyid",
- "community": 2,
- "norm_label": ".getcustomerbyid()"
- },
- {
- "label": ".GetCustomerByEmail()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1888",
- "id": "db_memoryrepository_getcustomerbyemail",
- "community": 2,
- "norm_label": ".getcustomerbyemail()"
- },
- {
- "label": ".CreateCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1897",
- "id": "db_memoryrepository_createcustomer",
- "community": 2,
- "norm_label": ".createcustomer()"
- },
- {
- "label": ".UpdateCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1912",
- "id": "db_memoryrepository_updatecustomer",
- "community": 2,
- "norm_label": ".updatecustomer()"
- },
- {
- "label": ".DeleteCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1936",
- "id": "db_memoryrepository_deletecustomer",
- "community": 2,
- "norm_label": ".deletecustomer()"
- },
- {
- "label": ".GetCustomerBookingsCount()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1946",
- "id": "db_memoryrepository_getcustomerbookingscount",
- "community": 2,
- "norm_label": ".getcustomerbookingscount()"
- },
- {
- "label": ".GetCustomerLastBooking()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1958",
- "id": "db_memoryrepository_getcustomerlastbooking",
- "community": 2,
- "norm_label": ".getcustomerlastbooking()"
- },
- {
- "label": ".GetBookingByReference()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1984",
- "id": "db_memoryrepository_getbookingbyreference",
- "community": 2,
- "norm_label": ".getbookingbyreference()"
- },
- {
- "label": ".UpdateBookingStatus()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1993",
- "id": "db_memoryrepository_updatebookingstatus",
- "community": 2,
- "norm_label": ".updatebookingstatus()"
- },
- {
- "label": ".RescheduleBooking()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2003",
- "id": "db_memoryrepository_reschedulebooking",
- "community": 2,
- "norm_label": ".reschedulebooking()"
- },
- {
- "label": ".ListWorkingHoursByTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2018",
- "id": "db_memoryrepository_listworkinghoursbytenant",
- "community": 2,
- "norm_label": ".listworkinghoursbytenant()"
- },
- {
- "label": ".UpdateWorkingHours()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2025",
- "id": "db_memoryrepository_updateworkinghours",
- "community": 2,
- "norm_label": ".updateworkinghours()"
- },
- {
- "label": "Reference()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2043",
- "id": "db_repository_reference",
- "community": 8,
- "norm_label": "reference()"
- },
- {
- "label": "stringPtr()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2047",
- "id": "db_repository_stringptr",
- "community": 8,
- "norm_label": "stringptr()"
- },
- {
- "label": "maxInt()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2051",
- "id": "db_repository_maxint",
- "community": 2,
- "norm_label": "maxint()"
- },
- {
- "label": "firstNonEmpty()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2058",
- "id": "db_repository_firstnonempty",
- "community": 3,
- "norm_label": "firstnonempty()"
- },
- {
- "label": "defaultAvailabilityBlocks()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2067",
- "id": "db_repository_defaultavailabilityblocks",
- "community": 2,
- "norm_label": "defaultavailabilityblocks()"
- },
- {
- "label": "pool.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L1",
- "id": "apps_backend_internal_db_pool_go",
- "community": 5,
- "norm_label": "pool.go"
- },
- {
- "label": "Pools",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L12",
- "id": "db_pools",
- "community": 5,
- "norm_label": "pools"
- },
- {
- "label": "NewPools()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L17",
- "id": "db_pool_newpools",
- "community": 5,
- "norm_label": "newpools()"
- },
- {
- "label": ".Close()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L39",
- "id": "db_pools_close",
- "community": 5,
- "norm_label": ".close()"
- },
- {
- "label": ".DatabaseConfigured()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L48",
- "id": "db_pools_databaseconfigured",
- "community": 5,
- "norm_label": ".databaseconfigured()"
- },
- {
- "label": "connect()",
- "file_type": "code",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L52",
- "id": "db_pool_connect",
- "community": 5,
- "norm_label": "connect()"
- },
- {
- "label": "models.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L1",
- "id": "apps_backend_internal_domain_models_go",
- "community": 4,
- "norm_label": "models.go"
- },
- {
- "label": "Principal",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L5",
- "id": "domain_principal",
- "community": 4,
- "norm_label": "principal"
- },
- {
- "label": "DashboardKPI",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L12",
- "id": "domain_dashboardkpi",
- "community": 4,
- "norm_label": "dashboardkpi"
- },
- {
- "label": "UpcomingBooking",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L18",
- "id": "domain_upcomingbooking",
- "community": 4,
- "norm_label": "upcomingbooking"
- },
- {
- "label": "WidgetSnippet",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L28",
- "id": "domain_widgetsnippet",
- "community": 4,
- "norm_label": "widgetsnippet"
- },
- {
- "label": "TrackingStatus",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L33",
- "id": "domain_trackingstatus",
- "community": 4,
- "norm_label": "trackingstatus"
- },
- {
- "label": "DashboardSummary",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L40",
- "id": "domain_dashboardsummary",
- "community": 4,
- "norm_label": "dashboardsummary"
- },
- {
- "label": "BrandProfile",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L54",
- "id": "domain_brandprofile",
- "community": 4,
- "norm_label": "brandprofile"
- },
- {
- "label": "TenantBootstrap",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L61",
- "id": "domain_tenantbootstrap",
- "community": 4,
- "norm_label": "tenantbootstrap"
- },
- {
- "label": "TeamInviteRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L74",
- "id": "domain_teaminviterequest",
- "community": 4,
- "norm_label": "teaminviterequest"
- },
- {
- "label": "AvailabilityBlockRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L79",
- "id": "domain_availabilityblockrequest",
- "community": 4,
- "norm_label": "availabilityblockrequest"
- },
- {
- "label": "BookingDefaultsRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L86",
- "id": "domain_bookingdefaultsrequest",
- "community": 4,
- "norm_label": "bookingdefaultsrequest"
- },
- {
- "label": "OnboardTenantRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L94",
- "id": "domain_onboardtenantrequest",
- "community": 4,
- "norm_label": "onboardtenantrequest"
- },
- {
- "label": "TimeSlot",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L107",
- "id": "domain_timeslot",
- "community": 4,
- "norm_label": "timeslot"
- },
- {
- "label": "PublicAvailability",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L119",
- "id": "domain_publicavailability",
- "community": 4,
- "norm_label": "publicavailability"
- },
- {
- "label": "CreateBookingRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L126",
- "id": "domain_createbookingrequest",
- "community": 5,
- "norm_label": "createbookingrequest"
- },
- {
- "label": "CreateBookingResponse",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L140",
- "id": "domain_createbookingresponse",
- "community": 4,
- "norm_label": "createbookingresponse"
- },
- {
- "label": "PlanEntitlements",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L146",
- "id": "domain_planentitlements",
- "community": 4,
- "norm_label": "planentitlements"
- },
- {
- "label": "PlanDisplayPrice",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L155",
- "id": "domain_plandisplayprice",
- "community": 4,
- "norm_label": "plandisplayprice"
- },
- {
- "label": "SubscriptionSnapshot",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L161",
- "id": "domain_subscriptionsnapshot",
- "community": 4,
- "norm_label": "subscriptionsnapshot"
- },
- {
- "label": "CheckoutSessionRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L184",
- "id": "domain_checkoutsessionrequest",
- "community": 4,
- "norm_label": "checkoutsessionrequest"
- },
- {
- "label": "CheckoutLaunchResponse",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L189",
- "id": "domain_checkoutlaunchresponse",
- "community": 4,
- "norm_label": "checkoutlaunchresponse"
- },
- {
- "label": "PortalSessionResponse",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L198",
- "id": "domain_portalsessionresponse",
- "community": 4,
- "norm_label": "portalsessionresponse"
- },
- {
- "label": "DispatchReminderJobsRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L202",
- "id": "domain_dispatchreminderjobsrequest",
- "community": 4,
- "norm_label": "dispatchreminderjobsrequest"
- },
- {
- "label": "DispatchReminderJobsResponse",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L206",
- "id": "domain_dispatchreminderjobsresponse",
- "community": 4,
- "norm_label": "dispatchreminderjobsresponse"
- },
- {
- "label": "Location",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L216",
- "id": "domain_location",
- "community": 4,
- "norm_label": "location"
- },
- {
- "label": "CreateLocationRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L226",
- "id": "domain_createlocationrequest",
- "community": 4,
- "norm_label": "createlocationrequest"
- },
- {
- "label": "UpdateLocationRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L232",
- "id": "domain_updatelocationrequest",
- "community": 4,
- "norm_label": "updatelocationrequest"
- },
- {
- "label": "BlockedDay",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L242",
- "id": "domain_blockedday",
- "community": 4,
- "norm_label": "blockedday"
- },
- {
- "label": "CreateBlockedDayRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L252",
- "id": "domain_createblockeddayrequest",
- "community": 4,
- "norm_label": "createblockeddayrequest"
- },
- {
- "label": "UpdateBlockedDayRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L259",
- "id": "domain_updateblockeddayrequest",
- "community": 4,
- "norm_label": "updateblockeddayrequest"
- },
- {
- "label": "Customer",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L268",
- "id": "domain_customer",
- "community": 4,
- "norm_label": "customer"
- },
- {
- "label": "CreateCustomerRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L281",
- "id": "domain_createcustomerrequest",
- "community": 4,
- "norm_label": "createcustomerrequest"
- },
- {
- "label": "UpdateCustomerRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L289",
- "id": "domain_updatecustomerrequest",
- "community": 4,
- "norm_label": "updatecustomerrequest"
- },
- {
- "label": "CustomerBookingView",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L301",
- "id": "domain_customerbookingview",
- "community": 4,
- "norm_label": "customerbookingview"
- },
- {
- "label": "RescheduleBookingRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L314",
- "id": "domain_reschedulebookingrequest",
- "community": 4,
- "norm_label": "reschedulebookingrequest"
- },
- {
- "label": "CancelBookingRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L320",
- "id": "domain_cancelbookingrequest",
- "community": 4,
- "norm_label": "cancelbookingrequest"
- },
- {
- "label": "WorkingHours",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L328",
- "id": "domain_workinghours",
- "community": 4,
- "norm_label": "workinghours"
- },
- {
- "label": "UpdateWorkingHoursRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L335",
- "id": "domain_updateworkinghoursrequest",
- "community": 4,
- "norm_label": "updateworkinghoursrequest"
- },
- {
- "label": "EmailTemplate",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L345",
- "id": "domain_emailtemplate",
- "community": 4,
- "norm_label": "emailtemplate"
- },
- {
- "label": "SendEmailRequest",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L355",
- "id": "domain_sendemailrequest",
- "community": 4,
- "norm_label": "sendemailrequest"
- },
- {
- "label": "EmailNotification",
- "file_type": "code",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L362",
- "id": "domain_emailnotification",
- "community": 4,
- "norm_label": "emailnotification"
- },
- {
- "label": "config_test.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config_test.go",
- "source_location": "L1",
- "id": "apps_backend_internal_config_config_test_go",
- "community": 34,
- "norm_label": "config_test.go"
- },
- {
- "label": "TestPaddleCheckoutConfigured()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config_test.go",
- "source_location": "L5",
- "id": "config_config_test_testpaddlecheckoutconfigured",
- "community": 34,
- "norm_label": "testpaddlecheckoutconfigured()"
- },
- {
- "label": "TestPaddleCheckoutConfiguredRequiresWebhook()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config_test.go",
- "source_location": "L21",
- "id": "config_config_test_testpaddlecheckoutconfiguredrequireswebhook",
- "community": 34,
- "norm_label": "testpaddlecheckoutconfiguredrequireswebhook()"
- },
- {
- "label": "config.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L1",
- "id": "apps_backend_internal_config_config_go",
- "community": 0,
- "norm_label": "config.go"
- },
- {
- "label": ".validateRuntimeRequirements()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L69",
- "id": "config_config_validateruntimerequirements",
- "community": 0,
- "norm_label": ".validateruntimerequirements()"
- },
- {
- "label": ".PaddleConfigured()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L106",
- "id": "config_config_paddleconfigured",
- "community": 0,
- "norm_label": ".paddleconfigured()"
- },
- {
- "label": ".PaddleWebhookConfigured()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L110",
- "id": "config_config_paddlewebhookconfigured",
- "community": 0,
- "norm_label": ".paddlewebhookconfigured()"
- },
- {
- "label": ".PaddleCheckoutConfigured()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L114",
- "id": "config_config_paddlecheckoutconfigured",
- "community": 0,
- "norm_label": ".paddlecheckoutconfigured()"
- },
- {
- "label": "paddlePriceMatrixFromEnv()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L119",
- "id": "config_config_paddlepricematrixfromenv",
- "community": 0,
- "norm_label": "paddlepricematrixfromenv()"
- },
- {
- "label": "normalizePaddleEnvironment()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L133",
- "id": "config_config_normalizepaddleenvironment",
- "community": 0,
- "norm_label": "normalizepaddleenvironment()"
- },
- {
- "label": "normalizePlanCode()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L142",
- "id": "config_config_normalizeplancode",
- "community": 0,
- "norm_label": "normalizeplancode()"
- },
- {
- "label": "valueOrDefault()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L153",
- "id": "config_config_valueordefault",
- "community": 0,
- "norm_label": "valueordefault()"
- },
- {
- "label": "boolFromEnv()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L160",
- "id": "config_config_boolfromenv",
- "community": 0,
- "norm_label": "boolfromenv()"
- },
- {
- "label": "uniqueStrings()",
- "file_type": "code",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L169",
- "id": "config_config_uniquestrings",
- "community": 0,
- "norm_label": "uniquestrings()"
- },
- {
- "label": "service.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L1",
- "id": "apps_backend_internal_notifications_service_go",
- "community": 14,
- "norm_label": "service.go"
- },
- {
- "label": "DeliveryReceipt",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L19",
- "id": "notifications_deliveryreceipt",
- "community": 14,
- "norm_label": "deliveryreceipt"
- },
- {
- "label": "EmailMessage",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L24",
- "id": "notifications_emailmessage",
- "community": 14,
- "norm_label": "emailmessage"
- },
- {
- "label": "EmailProvider",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L32",
- "id": "notifications_emailprovider",
- "community": 14,
- "norm_label": "emailprovider"
- },
- {
- "label": "Service",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L36",
- "id": "notifications_service",
- "community": 14,
- "norm_label": "service"
- },
- {
- "label": "NewService()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L43",
- "id": "notifications_service_newservice",
- "community": 14,
- "norm_label": "newservice()"
- },
- {
- "label": ".DispatchDue()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L57",
- "id": "notifications_service_dispatchdue",
- "community": 14,
- "norm_label": ".dispatchdue()"
- },
- {
- "label": ".SendBookingConfirmation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L124",
- "id": "notifications_service_sendbookingconfirmation",
- "community": 14,
- "norm_label": ".sendbookingconfirmation()"
- },
- {
- "label": ".SendBookingReschedule()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L135",
- "id": "notifications_service_sendbookingreschedule",
- "community": 14,
- "norm_label": ".sendbookingreschedule()"
- },
- {
- "label": ".SendBookingCancellation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L146",
- "id": "notifications_service_sendbookingcancellation",
- "community": 14,
- "norm_label": ".sendbookingcancellation()"
- },
- {
- "label": ".SendBusinessNotification()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L157",
- "id": "notifications_service_sendbusinessnotification",
- "community": 14,
- "norm_label": ".sendbusinessnotification()"
- },
- {
- "label": "renderEmailMessage()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L168",
- "id": "notifications_service_renderemailmessage",
- "community": 14,
- "norm_label": "renderemailmessage()"
- },
- {
- "label": "renderReminderCopy()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L172",
- "id": "notifications_service_renderremindercopy",
- "community": 14,
- "norm_label": "renderremindercopy()"
- },
- {
- "label": "localizedStartsAt()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L196",
- "id": "notifications_service_localizedstartsat",
- "community": 14,
- "norm_label": "localizedstartsat()"
- },
- {
- "label": "reminderRecipient()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L208",
- "id": "notifications_service_reminderrecipient",
- "community": 14,
- "norm_label": "reminderrecipient()"
- },
- {
- "label": "noopEmailProvider",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L212",
- "id": "notifications_noopemailprovider",
- "community": 14,
- "norm_label": "noopemailprovider"
- },
- {
- "label": ".Send()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L214",
- "id": "notifications_noopemailprovider_send",
- "community": 14,
- "norm_label": ".send()"
- },
- {
- "label": "smtpEmailProvider",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L224",
- "id": "notifications_smtpemailprovider",
- "community": 14,
- "norm_label": "smtpemailprovider"
- },
- {
- "label": ".Send()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L228",
- "id": "notifications_smtpemailprovider_send",
- "community": 14,
- "norm_label": ".send()"
- },
- {
- "label": "email_templates.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L1",
- "id": "apps_backend_internal_notifications_email_templates_go",
- "community": 19,
- "norm_label": "email_templates.go"
- },
- {
- "label": "EmailType",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L10",
- "id": "notifications_emailtype",
- "community": 19,
- "norm_label": "emailtype"
- },
- {
- "label": "BookingEmailData",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L20",
- "id": "notifications_bookingemaildata",
- "community": 19,
- "norm_label": "bookingemaildata"
- },
- {
- "label": "RenderEmailMessage()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L42",
- "id": "notifications_email_templates_renderemailmessage",
- "community": 19,
- "norm_label": "renderemailmessage()"
- },
- {
- "label": "renderSubject()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L56",
- "id": "notifications_email_templates_rendersubject",
- "community": 19,
- "norm_label": "rendersubject()"
- },
- {
- "label": "renderTextBody()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L90",
- "id": "notifications_email_templates_rendertextbody",
- "community": 19,
- "norm_label": "rendertextbody()"
- },
- {
- "label": "renderHTMLBody()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L241",
- "id": "notifications_email_templates_renderhtmlbody",
- "community": 19,
- "norm_label": "renderhtmlbody()"
- },
- {
- "label": "formatLocalizedTime()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L266",
- "id": "notifications_email_templates_formatlocalizedtime",
- "community": 19,
- "norm_label": "formatlocalizedtime()"
- },
- {
- "label": "formatLocalizedDateTime()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L278",
- "id": "notifications_email_templates_formatlocalizeddatetime",
- "community": 19,
- "norm_label": "formatlocalizeddatetime()"
- },
- {
- "label": "splitParagraphs()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L290",
- "id": "notifications_email_templates_splitparagraphs",
- "community": 19,
- "norm_label": "splitparagraphs()"
- },
- {
- "label": "splitLines()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L313",
- "id": "notifications_email_templates_splitlines",
- "community": 19,
- "norm_label": "splitlines()"
- },
- {
- "label": "trimSpace()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L326",
- "id": "notifications_email_templates_trimspace",
- "community": 0,
- "norm_label": "trimspace()"
- },
- {
- "label": "RenderReminderEmail()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L339",
- "id": "notifications_email_templates_renderreminderemail",
- "community": 19,
- "norm_label": "renderreminderemail()"
- },
- {
- "label": "service_test.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L1",
- "id": "apps_backend_internal_notifications_service_test_go",
- "community": 7,
- "norm_label": "service_test.go"
- },
- {
- "label": "TestDispatchDueProcessesPendingEmailReminders()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L13",
- "id": "notifications_service_test_testdispatchdueprocessespendingemailreminders",
- "community": 7,
- "norm_label": "testdispatchdueprocessespendingemailreminders()"
- },
- {
- "label": "TestDispatchDueFailsUnknownChannel()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L66",
- "id": "notifications_service_test_testdispatchduefailsunknownchannel",
- "community": 7,
- "norm_label": "testdispatchduefailsunknownchannel()"
- },
- {
- "label": "TestDispatchRequestContractShape()",
- "file_type": "code",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L87",
- "id": "notifications_service_test_testdispatchrequestcontractshape",
- "community": 7,
- "norm_label": "testdispatchrequestcontractshape()"
- },
- {
- "label": "service.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L1",
- "id": "apps_backend_internal_bookings_service_go",
- "community": 11,
- "norm_label": "service.go"
- },
- {
- "label": "Service",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L27",
- "id": "bookings_service",
- "community": 11,
- "norm_label": "service"
- },
- {
- "label": "Notifier",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L32",
- "id": "bookings_notifier",
- "community": 11,
- "norm_label": "notifier"
- },
- {
- "label": "NewService()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L37",
- "id": "bookings_service_newservice",
- "community": 11,
- "norm_label": "newservice()"
- },
- {
- "label": "noopNotifier",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L44",
- "id": "bookings_noopnotifier",
- "community": 11,
- "norm_label": "noopnotifier"
- },
- {
- "label": ".SendBookingConfirmation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L46",
- "id": "bookings_noopnotifier_sendbookingconfirmation",
- "community": 11,
- "norm_label": ".sendbookingconfirmation()"
- },
- {
- "label": ".SendBusinessNotification()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L50",
- "id": "bookings_noopnotifier_sendbusinessnotification",
- "community": 11,
- "norm_label": ".sendbusinessnotification()"
- },
- {
- "label": ".Availability()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L54",
- "id": "bookings_service_availability",
- "community": 11,
- "norm_label": ".availability()"
- },
- {
- "label": ".Create()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L98",
- "id": "bookings_service_create",
- "community": 11,
- "norm_label": ".create()"
- },
- {
- "label": ".sendBookingConfirmationEmails()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L240",
- "id": "bookings_service_sendbookingconfirmationemails",
- "community": 11,
- "norm_label": ".sendbookingconfirmationemails()"
- },
- {
- "label": ".serviceForRequest()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L273",
- "id": "bookings_service_serviceforrequest",
- "community": 11,
- "norm_label": ".serviceforrequest()"
- },
- {
- "label": ".classSessionForRequest()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L286",
- "id": "bookings_service_classsessionforrequest",
- "community": 11,
- "norm_label": ".classsessionforrequest()"
- },
- {
- "label": ".DashboardSummary()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L299",
- "id": "bookings_service_dashboardsummary",
- "community": 11,
- "norm_label": ".dashboardsummary()"
- },
- {
- "label": "widgetSnippets()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L352",
- "id": "bookings_service_widgetsnippets",
- "community": 11,
- "norm_label": "widgetsnippets()"
- },
- {
- "label": "trackingStatus()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L361",
- "id": "bookings_service_trackingstatus",
- "community": 11,
- "norm_label": "trackingstatus()"
- },
- {
- "label": "normalizePlanCode()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L369",
- "id": "bookings_service_normalizeplancode",
- "community": 11,
- "norm_label": "normalizeplancode()"
- },
- {
- "label": "generateAppointmentSlots()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L380",
- "id": "bookings_service_generateappointmentslots",
- "community": 11,
- "norm_label": "generateappointmentslots()"
- },
- {
- "label": "generateClassSlots()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L449",
- "id": "bookings_service_generateclassslots",
- "community": 11,
- "norm_label": "generateclassslots()"
- },
- {
- "label": "collides()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L471",
- "id": "bookings_service_collides",
- "community": 11,
- "norm_label": "collides()"
- },
- {
- "label": "sameResource()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L486",
- "id": "bookings_service_sameresource",
- "community": 11,
- "norm_label": "sameresource()"
- },
- {
- "label": "sameSecond()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L493",
- "id": "bookings_service_samesecond",
- "community": 11,
- "norm_label": "samesecond()"
- },
- {
- "label": "countClassBookings()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L497",
- "id": "bookings_service_countclassbookings",
- "community": 11,
- "norm_label": "countclassbookings()"
- },
- {
- "label": "reminderSchedule()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L510",
- "id": "bookings_service_reminderschedule",
- "community": 11,
- "norm_label": "reminderschedule()"
- },
- {
- "label": "customer_service.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L1",
- "id": "apps_backend_internal_bookings_customer_service_go",
- "community": 20,
- "norm_label": "customer_service.go"
- },
- {
- "label": "CustomerService",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L19",
- "id": "bookings_customerservice",
- "community": 20,
- "norm_label": "customerservice"
- },
- {
- "label": "CustomerNotifier",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L24",
- "id": "bookings_customernotifier",
- "community": 20,
- "norm_label": "customernotifier"
- },
- {
- "label": "NewCustomerService()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L29",
- "id": "bookings_customer_service_newcustomerservice",
- "community": 20,
- "norm_label": "newcustomerservice()"
- },
- {
- "label": "customerNoopNotifier",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L36",
- "id": "bookings_customernoopnotifier",
- "community": 20,
- "norm_label": "customernoopnotifier"
- },
- {
- "label": ".SendBookingReschedule()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L38",
- "id": "bookings_customernoopnotifier_sendbookingreschedule",
- "community": 20,
- "norm_label": ".sendbookingreschedule()"
- },
- {
- "label": ".SendBookingCancellation()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L42",
- "id": "bookings_customernoopnotifier_sendbookingcancellation",
- "community": 20,
- "norm_label": ".sendbookingcancellation()"
- },
- {
- "label": ".GetBookingByReference()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L47",
- "id": "bookings_customerservice_getbookingbyreference",
- "community": 20,
- "norm_label": ".getbookingbyreference()"
- },
- {
- "label": ".RescheduleBooking()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L73",
- "id": "bookings_customerservice_reschedulebooking",
- "community": 20,
- "norm_label": ".reschedulebooking()"
- },
- {
- "label": ".CancelBooking()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L112",
- "id": "bookings_customerservice_cancelbooking",
- "community": 20,
- "norm_label": ".cancelbooking()"
- },
- {
- "label": ".sendRescheduleEmail()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L132",
- "id": "bookings_customerservice_sendrescheduleemail",
- "community": 20,
- "norm_label": ".sendrescheduleemail()"
- },
- {
- "label": ".sendCancellationEmail()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L168",
- "id": "bookings_customerservice_sendcancellationemail",
- "community": 20,
- "norm_label": ".sendcancellationemail()"
- },
- {
- "label": "service_test.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L1",
- "id": "apps_backend_internal_bookings_service_test_go",
- "community": 7,
- "norm_label": "service_test.go"
- },
- {
- "label": "TestCreateAppointmentRejectsConflict()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L13",
- "id": "bookings_service_test_testcreateappointmentrejectsconflict",
- "community": 7,
- "norm_label": "testcreateappointmentrejectsconflict()"
- },
- {
- "label": "TestCreateClassFallsBackToWaitlistWhenCapacityReached()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L70",
- "id": "bookings_service_test_testcreateclassfallsbacktowaitlistwhencapacityreached",
- "community": 7,
- "norm_label": "testcreateclassfallsbacktowaitlistwhencapacityreached()"
- },
- {
- "label": "TestCreateAppointmentRequiresTenantService()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L127",
- "id": "bookings_service_test_testcreateappointmentrequirestenantservice",
- "community": 7,
- "norm_label": "testcreateappointmentrequirestenantservice()"
- },
- {
- "label": "TestCreateClassRequiresExistingSession()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L144",
- "id": "bookings_service_test_testcreateclassrequiresexistingsession",
- "community": 7,
- "norm_label": "testcreateclassrequiresexistingsession()"
- },
- {
- "label": "TestAvailabilityGeneratesUpcomingSlots()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L163",
- "id": "bookings_service_test_testavailabilitygeneratesupcomingslots",
- "community": 7,
- "norm_label": "testavailabilitygeneratesupcomingslots()"
- },
- {
- "label": "TestCreateSchedulesReminderJobForUpcomingAppointment()",
- "file_type": "code",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L186",
- "id": "bookings_service_test_testcreateschedulesreminderjobforupcomingappointment",
- "community": 7,
- "norm_label": "testcreateschedulesreminderjobforupcomingappointment()"
- },
- {
- "label": "service.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L1",
- "id": "apps_backend_internal_billing_service_go",
- "community": 0,
- "norm_label": "service.go"
- },
- {
- "label": "webhookEnvelope",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L51",
- "id": "billing_webhookenvelope",
- "community": 0,
- "norm_label": "webhookenvelope"
- },
- {
- "label": ".CreatePortalSession()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L177",
- "id": "billing_service_createportalsession",
- "community": 0,
- "norm_label": ".createportalsession()"
- },
- {
- "label": ".resolveWebhookTenant()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L279",
- "id": "billing_service_resolvewebhooktenant",
- "community": 0,
- "norm_label": ".resolvewebhooktenant()"
- },
- {
- "label": ".syncPaddleData()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L292",
- "id": "billing_service_syncpaddledata",
- "community": 0,
- "norm_label": ".syncpaddledata()"
- },
- {
- "label": "toSnapshot()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L353",
- "id": "billing_service_tosnapshot",
- "community": 0,
- "norm_label": "tosnapshot()"
- },
- {
- "label": "entitlementsForPlan()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L390",
- "id": "billing_service_entitlementsforplan",
- "community": 0,
- "norm_label": "entitlementsforplan()"
- },
- {
- "label": "displayPricesForPlan()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L446",
- "id": "billing_service_displaypricesforplan",
- "community": 0,
- "norm_label": "displaypricesforplan()"
- },
- {
- "label": "normalizeSubscriptionStatus()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L488",
- "id": "billing_service_normalizesubscriptionstatus",
- "community": 0,
- "norm_label": "normalizesubscriptionstatus()"
- },
- {
- "label": "checkoutAvailable()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L497",
- "id": "billing_service_checkoutavailable",
- "community": 0,
- "norm_label": "checkoutavailable()"
- },
- {
- "label": "customDataString()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L510",
- "id": "billing_service_customdatastring",
- "community": 0,
- "norm_label": "customdatastring()"
- },
- {
- "label": "parseRFC3339Ptr()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L526",
- "id": "billing_service_parserfc3339ptr",
- "community": 0,
- "norm_label": "parserfc3339ptr()"
- },
- {
- "label": "timePeriodStart()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L538",
- "id": "billing_service_timeperiodstart",
- "community": 0,
- "norm_label": "timeperiodstart()"
- },
- {
- "label": "timePeriodEnd()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L545",
- "id": "billing_service_timeperiodend",
- "community": 0,
- "norm_label": "timeperiodend()"
- },
- {
- "label": "derefString()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L552",
- "id": "billing_service_derefstring",
- "community": 0,
- "norm_label": "derefstring()"
- },
- {
- "label": "firstNonEmpty()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L559",
- "id": "billing_service_firstnonempty",
- "community": 0,
- "norm_label": "firstnonempty()"
- },
- {
- "label": "service_test.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L1",
- "id": "apps_backend_internal_billing_service_test_go",
- "community": 7,
- "norm_label": "service_test.go"
- },
- {
- "label": "testConfig()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L12",
- "id": "billing_service_test_testconfig",
- "community": 7,
- "norm_label": "testconfig()"
- },
- {
- "label": "TestGetSubscriptionFallsBackToSnapshotAndEntitlements()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L25",
- "id": "billing_service_test_testgetsubscriptionfallsbacktosnapshotandentitlements",
- "community": 7,
- "norm_label": "testgetsubscriptionfallsbacktosnapshotandentitlements()"
- },
- {
- "label": "TestCreateCheckoutRequiresPaddleConfig()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L47",
- "id": "billing_service_test_testcreatecheckoutrequirespaddleconfig",
- "community": 7,
- "norm_label": "testcreatecheckoutrequirespaddleconfig()"
- },
- {
- "label": "TestCreateCheckoutReturnsLaunchPayload()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L61",
- "id": "billing_service_test_testcreatecheckoutreturnslaunchpayload",
- "community": 7,
- "norm_label": "testcreatecheckoutreturnslaunchpayload()"
- },
- {
- "label": "TestRefreshRequiresPaddleKeyWhenCustomerExists()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L82",
- "id": "billing_service_test_testrefreshrequirespaddlekeywhencustomerexists",
- "community": 7,
- "norm_label": "testrefreshrequirespaddlekeywhencustomerexists()"
- },
- {
- "label": "TestGetSubscriptionDisablesCheckoutWhenWebhookMissing()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L96",
- "id": "billing_service_test_testgetsubscriptiondisablescheckoutwhenwebhookmissing",
- "community": 7,
- "norm_label": "testgetsubscriptiondisablescheckoutwhenwebhookmissing()"
- },
- {
- "label": "TestGetSubscriptionEnablesCheckoutWhenPaddleConfigured()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L113",
- "id": "billing_service_test_testgetsubscriptionenablescheckoutwhenpaddleconfigured",
- "community": 7,
- "norm_label": "testgetsubscriptionenablescheckoutwhenpaddleconfigured()"
- },
- {
- "label": "TestCreatePortalSessionRequiresCustomer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L131",
- "id": "billing_service_test_testcreateportalsessionrequirescustomer",
- "community": 7,
- "norm_label": "testcreateportalsessionrequirescustomer()"
- },
- {
- "label": "middleware.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L1",
- "id": "apps_backend_internal_auth_middleware_go",
- "community": 5,
- "norm_label": "middleware.go"
- },
- {
- "label": "RequireAuth()",
- "file_type": "code",
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L23",
- "id": "auth_middleware_requireauth",
- "community": 5,
- "norm_label": "requireauth()"
- },
- {
- "label": "PrincipalFromContext()",
- "file_type": "code",
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L82",
- "id": "auth_middleware_principalfromcontext",
- "community": 5,
- "norm_label": "principalfromcontext()"
- },
- {
- "label": "neon.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L1",
- "id": "apps_backend_internal_auth_neon_go",
- "community": 5,
- "norm_label": "neon.go"
- },
- {
- "label": "Verifier",
- "file_type": "code",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L15",
- "id": "auth_verifier",
- "community": 5,
- "norm_label": "verifier"
- },
- {
- "label": "NewVerifier()",
- "file_type": "code",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L23",
- "id": "auth_neon_newverifier",
- "community": 5,
- "norm_label": "newverifier()"
- },
- {
- "label": ".Enabled()",
- "file_type": "code",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L58",
- "id": "auth_verifier_enabled",
- "community": 5,
- "norm_label": ".enabled()"
- },
- {
- "label": ".Close()",
- "file_type": "code",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L62",
- "id": "auth_verifier_close",
- "community": 5,
- "norm_label": ".close()"
- },
- {
- "label": ".Verify()",
- "file_type": "code",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L68",
- "id": "auth_verifier_verify",
- "community": 5,
- "norm_label": ".verify()"
- },
- {
- "label": "server.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L1",
- "id": "apps_backend_internal_api_server_go",
- "community": 5,
- "norm_label": "server.go"
- },
- {
- "label": "Server",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L26",
- "id": "api_server",
- "community": 5,
- "norm_label": "server"
- },
- {
- "label": "NewServer()",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L33",
- "id": "api_server_newserver",
- "community": 5,
- "norm_label": "newserver()"
- },
- {
- "label": ".Handler()",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L590",
- "id": "api_server_handler",
- "community": 5,
- "norm_label": ".handler()"
- },
- {
- "label": ".Close()",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L594",
- "id": "api_server_close",
- "community": 5,
- "norm_label": ".close()"
- },
- {
- "label": "authorizeJobRunner()",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L600",
- "id": "api_server_authorizejobrunner",
- "community": 5,
- "norm_label": "authorizejobrunner()"
- },
- {
- "label": "allowedOrigins()",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L607",
- "id": "api_server_allowedorigins",
- "community": 5,
- "norm_label": "allowedorigins()"
- },
- {
- "label": "widgetJavaScript()",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L634",
- "id": "api_server_widgetjavascript",
- "community": 5,
- "norm_label": "widgetjavascript()"
- },
- {
- "label": "server_test.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L1",
- "id": "apps_backend_internal_api_server_test_go",
- "community": 5,
- "norm_label": "server_test.go"
- },
- {
- "label": "TestDispatchReminderJobsRequiresJobRunnerKey()",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L11",
- "id": "api_server_test_testdispatchreminderjobsrequiresjobrunnerkey",
- "community": 5,
- "norm_label": "testdispatchreminderjobsrequiresjobrunnerkey()"
- },
- {
- "label": "TestDispatchReminderJobsAcceptsConfiguredJobRunnerKey()",
- "file_type": "code",
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L33",
- "id": "api_server_test_testdispatchreminderjobsacceptsconfiguredjobrunnerkey",
- "community": 5,
- "norm_label": "testdispatchreminderjobsacceptsconfiguredjobrunnerkey()"
- },
- {
- "label": "service.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L1",
- "id": "apps_backend_internal_tenancy_service_go",
- "community": 22,
- "norm_label": "service.go"
- },
- {
- "label": "Service",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L25",
- "id": "tenancy_service",
- "community": 22,
- "norm_label": "service"
- },
- {
- "label": "NewService()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L29",
- "id": "tenancy_service_newservice",
- "community": 7,
- "norm_label": "newservice()"
- },
- {
- "label": ".Bootstrap()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L33",
- "id": "tenancy_service_bootstrap",
- "community": 22,
- "norm_label": ".bootstrap()"
- },
- {
- "label": ".Onboard()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L73",
- "id": "tenancy_service_onboard",
- "community": 22,
- "norm_label": ".onboard()"
- },
- {
- "label": ".brandProfile()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L182",
- "id": "tenancy_service_brandprofile",
- "community": 22,
- "norm_label": ".brandprofile()"
- },
- {
- "label": "validateAvailabilityBlocks()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L195",
- "id": "tenancy_service_validateavailabilityblocks",
- "community": 22,
- "norm_label": "validateavailabilityblocks()"
- },
- {
- "label": "toAvailabilityBlocks()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L218",
- "id": "tenancy_service_toavailabilityblocks",
- "community": 22,
- "norm_label": "toavailabilityblocks()"
- },
- {
- "label": "toTeamInvites()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L231",
- "id": "tenancy_service_toteaminvites",
- "community": 22,
- "norm_label": "toteaminvites()"
- },
- {
- "label": "normalizeClock()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L247",
- "id": "tenancy_service_normalizeclock",
- "community": 22,
- "norm_label": "normalizeclock()"
- },
- {
- "label": "normalizePlanCode()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L255",
- "id": "tenancy_service_normalizeplancode",
- "community": 22,
- "norm_label": "normalizeplancode()"
- },
- {
- "label": "firstNonEmpty()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L266",
- "id": "tenancy_service_firstnonempty",
- "community": 22,
- "norm_label": "firstnonempty()"
- },
- {
- "label": "service_test.go",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L1",
- "id": "apps_backend_internal_tenancy_service_test_go",
- "community": 7,
- "norm_label": "service_test.go"
- },
- {
- "label": "TestBootstrapResolvesMembershipAfterIdentitySync()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L11",
- "id": "tenancy_service_test_testbootstrapresolvesmembershipafteridentitysync",
- "community": 7,
- "norm_label": "testbootstrapresolvesmembershipafteridentitysync()"
- },
- {
- "label": "TestBootstrapReturnsShellWhenMembershipMissing()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L40",
- "id": "tenancy_service_test_testbootstrapreturnsshellwhenmembershipmissing",
- "community": 7,
- "norm_label": "testbootstrapreturnsshellwhenmembershipmissing()"
- },
- {
- "label": "TestOnboardCreatesTenantForAuthenticatedUser()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L62",
- "id": "tenancy_service_test_testonboardcreatestenantforauthenticateduser",
- "community": 7,
- "norm_label": "testonboardcreatestenantforauthenticateduser()"
- },
- {
- "label": "TestOnboardRejectsInvalidSlug()",
- "file_type": "code",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L89",
- "id": "tenancy_service_test_testonboardrejectsinvalidslug",
- "community": 7,
- "norm_label": "testonboardrejectsinvalidslug()"
- },
- {
- "label": "vite.config.ts",
- "file_type": "code",
- "source_file": "apps/frontend/vite.config.ts",
- "source_location": "L1",
- "id": "apps_frontend_vite_config_ts",
- "community": 51,
- "norm_label": "vite.config.ts"
- },
- {
- "label": "App.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_app_tsx",
- "community": 35,
- "norm_label": "app.tsx"
- },
- {
- "label": "ScrollToTop()",
- "file_type": "code",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L10",
- "id": "src_app_scrolltotop",
- "community": 35,
- "norm_label": "scrolltotop()"
- },
- {
- "label": "App()",
- "file_type": "code",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L22",
- "id": "src_app_app",
- "community": 35,
- "norm_label": "app()"
- },
- {
- "label": "main.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/main.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_main_tsx",
- "community": 52,
- "norm_label": "main.tsx"
- },
- {
- "label": "about-route.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/about-route.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_routes_about_route_tsx",
- "community": 40,
- "norm_label": "about-route.tsx"
- },
- {
- "label": "AboutRoute()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/about-route.tsx",
- "source_location": "L6",
- "id": "routes_about_route_aboutroute",
- "community": 40,
- "norm_label": "aboutroute()"
- },
- {
- "label": "auth-callback-route.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/auth-callback-route.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_routes_auth_callback_route_tsx",
- "community": 41,
- "norm_label": "auth-callback-route.tsx"
- },
- {
- "label": "AuthCallbackRoute()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/auth-callback-route.tsx",
- "source_location": "L6",
- "id": "routes_auth_callback_route_authcallbackroute",
- "community": 41,
- "norm_label": "authcallbackroute()"
- },
- {
- "label": "public-booking-route.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_routes_public_booking_route_tsx",
- "community": 36,
- "norm_label": "public-booking-route.tsx"
- },
- {
- "label": "tenantSlug()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L12",
- "id": "routes_public_booking_route_tenantslug",
- "community": 36,
- "norm_label": "tenantslug()"
- },
- {
- "label": "bookSlot()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L31",
- "id": "routes_public_booking_route_bookslot",
- "community": 36,
- "norm_label": "bookslot()"
- },
- {
- "label": "dashboard-route.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_routes_dashboard_route_tsx",
- "community": 1,
- "norm_label": "dashboard-route.tsx"
- },
- {
- "label": "LayoutDashboardIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L33",
- "id": "routes_dashboard_route_layoutdashboardicon",
- "community": 1,
- "norm_label": "layoutdashboardicon()"
- },
- {
- "label": "CalendarDaysIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L42",
- "id": "routes_dashboard_route_calendardaysicon",
- "community": 1,
- "norm_label": "calendardaysicon()"
- },
- {
- "label": "CreditCardIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L52",
- "id": "routes_dashboard_route_creditcardicon",
- "community": 1,
- "norm_label": "creditcardicon()"
- },
- {
- "label": "Settings2Icon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L59",
- "id": "routes_dashboard_route_settings2icon",
- "community": 1,
- "norm_label": "settings2icon()"
- },
- {
- "label": "LogOutIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L67",
- "id": "routes_dashboard_route_logouticon",
- "community": 1,
- "norm_label": "logouticon()"
- },
- {
- "label": "MenuIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L75",
- "id": "routes_dashboard_route_menuicon",
- "community": 1,
- "norm_label": "menuicon()"
- },
- {
- "label": "XIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L81",
- "id": "routes_dashboard_route_xicon",
- "community": 1,
- "norm_label": "xicon()"
- },
- {
- "label": "TrendingUpIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L87",
- "id": "routes_dashboard_route_trendingupicon",
- "community": 1,
- "norm_label": "trendingupicon()"
- },
- {
- "label": "TrendingDownIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L94",
- "id": "routes_dashboard_route_trendingdownicon",
- "community": 1,
- "norm_label": "trendingdownicon()"
- },
- {
- "label": "ClockIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L101",
- "id": "routes_dashboard_route_clockicon",
- "community": 1,
- "norm_label": "clockicon()"
- },
- {
- "label": "CheckCircleIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L107",
- "id": "routes_dashboard_route_checkcircleicon",
- "community": 1,
- "norm_label": "checkcircleicon()"
- },
- {
- "label": "AlertCircleIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L113",
- "id": "routes_dashboard_route_alertcircleicon",
- "community": 1,
- "norm_label": "alertcircleicon()"
- },
- {
- "label": "MoreHorizontalIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L119",
- "id": "routes_dashboard_route_morehorizontalicon",
- "community": 1,
- "norm_label": "morehorizontalicon()"
- },
- {
- "label": "ChevronLeftIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L125",
- "id": "routes_dashboard_route_chevronlefticon",
- "community": 1,
- "norm_label": "chevronlefticon()"
- },
- {
- "label": "ChevronRightIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L131",
- "id": "routes_dashboard_route_chevronrighticon",
- "community": 1,
- "norm_label": "chevronrighticon()"
- },
- {
- "label": "SparklesIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L137",
- "id": "routes_dashboard_route_sparklesicon",
- "community": 1,
- "norm_label": "sparklesicon()"
- },
- {
- "label": "BellIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L143",
- "id": "routes_dashboard_route_bellicon",
- "community": 1,
- "norm_label": "bellicon()"
- },
- {
- "label": "PlusIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L149",
- "id": "routes_dashboard_route_plusicon",
- "community": 1,
- "norm_label": "plusicon()"
- },
- {
- "label": "UsersIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L155",
- "id": "routes_dashboard_route_usersicon",
- "community": 1,
- "norm_label": "usersicon()"
- },
- {
- "label": "UserCircleIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L161",
- "id": "routes_dashboard_route_usercircleicon",
- "community": 1,
- "norm_label": "usercircleicon()"
- },
- {
- "label": "isCs()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L319",
- "id": "routes_dashboard_route_iscs",
- "community": 1,
- "norm_label": "iscs()"
- },
- {
- "label": "changeMonth()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L347",
- "id": "routes_dashboard_route_changemonth",
- "community": 1,
- "norm_label": "changemonth()"
- },
- {
- "label": "prevMonth()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L355",
- "id": "routes_dashboard_route_prevmonth",
- "community": 1,
- "norm_label": "prevmonth()"
- },
- {
- "label": "nextMonth()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L356",
- "id": "routes_dashboard_route_nextmonth",
- "community": 1,
- "norm_label": "nextmonth()"
- },
- {
- "label": "trend()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L449",
- "id": "routes_dashboard_route_trend",
- "community": 1,
- "norm_label": "trend()"
- },
- {
- "label": "trendClass()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L450",
- "id": "routes_dashboard_route_trendclass",
- "community": 1,
- "norm_label": "trendclass()"
- },
- {
- "label": "sparklineClass()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L460",
- "id": "routes_dashboard_route_sparklineclass",
- "community": 1,
- "norm_label": "sparklineclass()"
- },
- {
- "label": "isDemoMode()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L571",
- "id": "routes_dashboard_route_isdemomode",
- "community": 1,
- "norm_label": "isdemomode()"
- },
- {
- "label": "resolvedSummary()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L595",
- "id": "routes_dashboard_route_resolvedsummary",
- "community": 1,
- "norm_label": "resolvedsummary()"
- },
- {
- "label": "resolvedBootstrap()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L596",
- "id": "routes_dashboard_route_resolvedbootstrap",
- "community": 1,
- "norm_label": "resolvedbootstrap()"
- },
- {
- "label": "resolvedBilling()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L597",
- "id": "routes_dashboard_route_resolvedbilling",
- "community": 1,
- "norm_label": "resolvedbilling()"
- },
- {
- "label": "hasTenant()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L642",
- "id": "routes_dashboard_route_hastenant",
- "community": 1,
- "norm_label": "hastenant()"
- },
- {
- "label": "isDashboardReady()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L643",
- "id": "routes_dashboard_route_isdashboardready",
- "community": 1,
- "norm_label": "isdashboardready()"
- },
- {
- "label": "refreshBilling()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L645",
- "id": "routes_dashboard_route_refreshbilling",
- "community": 1,
- "norm_label": "refreshbilling()"
- },
- {
- "label": "openCheckout()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L669",
- "id": "routes_dashboard_route_opencheckout",
- "community": 1,
- "norm_label": "opencheckout()"
- },
- {
- "label": "openBillingPortal()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L716",
- "id": "routes_dashboard_route_openbillingportal",
- "community": 1,
- "norm_label": "openbillingportal()"
- },
- {
- "label": "changeSection()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L754",
- "id": "routes_dashboard_route_changesection",
- "community": 1,
- "norm_label": "changesection()"
- },
- {
- "label": "resolvedAllBookings()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L895",
- "id": "routes_dashboard_route_resolvedallbookings",
- "community": 1,
- "norm_label": "resolvedallbookings()"
- },
- {
- "label": "handleCreateBooking()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L954",
- "id": "routes_dashboard_route_handlecreatebooking",
- "community": 1,
- "norm_label": "handlecreatebooking()"
- },
- {
- "label": "handleUpdateBooking()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L989",
- "id": "routes_dashboard_route_handleupdatebooking",
- "community": 1,
- "norm_label": "handleupdatebooking()"
- },
- {
- "label": "handleCancelBooking()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1015",
- "id": "routes_dashboard_route_handlecancelbooking",
- "community": 1,
- "norm_label": "handlecancelbooking()"
- },
- {
- "label": "handleRescheduleBooking()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1028",
- "id": "routes_dashboard_route_handlereschedulebooking",
- "community": 1,
- "norm_label": "handlereschedulebooking()"
- },
- {
- "label": "openBookingDetail()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1045",
- "id": "routes_dashboard_route_openbookingdetail",
- "community": 1,
- "norm_label": "openbookingdetail()"
- },
- {
- "label": "bookingStats()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1076",
- "id": "routes_dashboard_route_bookingstats",
- "community": 1,
- "norm_label": "bookingstats()"
- },
- {
- "label": "billingPriceLabel()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1538",
- "id": "routes_dashboard_route_billingpricelabel",
- "community": 1,
- "norm_label": "billingpricelabel()"
- },
- {
- "label": "handleSaveBrand()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1592",
- "id": "routes_dashboard_route_handlesavebrand",
- "community": 1,
- "norm_label": "handlesavebrand()"
- },
- {
- "label": "getDemoCustomers()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2184",
- "id": "routes_dashboard_route_getdemocustomers",
- "community": 1,
- "norm_label": "getdemocustomers()"
- },
- {
- "label": "resolvedCustomers()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2192",
- "id": "routes_dashboard_route_resolvedcustomers",
- "community": 1,
- "norm_label": "resolvedcustomers()"
- },
- {
- "label": "resolvedBookings()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2193",
- "id": "routes_dashboard_route_resolvedbookings",
- "community": 1,
- "norm_label": "resolvedbookings()"
- },
- {
- "label": "getCustomerBookings()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2223",
- "id": "routes_dashboard_route_getcustomerbookings",
- "community": 1,
- "norm_label": "getcustomerbookings()"
- },
- {
- "label": "openCustomerDetail()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2229",
- "id": "routes_dashboard_route_opencustomerdetail",
- "community": 1,
- "norm_label": "opencustomerdetail()"
- },
- {
- "label": "filteredCustomers()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2259",
- "id": "routes_dashboard_route_filteredcustomers",
- "community": 1,
- "norm_label": "filteredcustomers()"
- },
- {
- "label": "demoData()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2496",
- "id": "routes_dashboard_route_demodata",
- "community": 1,
- "norm_label": "demodata()"
- },
- {
- "label": "resolvedLocations()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2519",
- "id": "routes_dashboard_route_resolvedlocations",
- "community": 1,
- "norm_label": "resolvedlocations()"
- },
- {
- "label": "resolvedBlockedDays()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2520",
- "id": "routes_dashboard_route_resolvedblockeddays",
- "community": 1,
- "norm_label": "resolvedblockeddays()"
- },
- {
- "label": "resolvedWorkingHours()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2521",
- "id": "routes_dashboard_route_resolvedworkinghours",
- "community": 1,
- "norm_label": "resolvedworkinghours()"
- },
- {
- "label": "handleAddZone()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2523",
- "id": "routes_dashboard_route_handleaddzone",
- "community": 1,
- "norm_label": "handleaddzone()"
- },
- {
- "label": "handleAddBlockedDay()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2540",
- "id": "routes_dashboard_route_handleaddblockedday",
- "community": 1,
- "norm_label": "handleaddblockedday()"
- },
- {
- "label": "handleDeleteBlockedDay()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2562",
- "id": "routes_dashboard_route_handledeleteblockedday",
- "community": 1,
- "norm_label": "handledeleteblockedday()"
- },
- {
- "label": "contact-route.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/contact-route.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_routes_contact_route_tsx",
- "community": 42,
- "norm_label": "contact-route.tsx"
- },
- {
- "label": "handleSubmit()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/contact-route.tsx",
- "source_location": "L14",
- "id": "routes_contact_route_handlesubmit",
- "community": 42,
- "norm_label": "handlesubmit()"
- },
- {
- "label": "home-route.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_routes_home_route_tsx",
- "community": 18,
- "norm_label": "home-route.tsx"
- },
- {
- "label": "CalendarIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L7",
- "id": "routes_home_route_calendaricon",
- "community": 18,
- "norm_label": "calendaricon()"
- },
- {
- "label": "ClockIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L16",
- "id": "routes_home_route_clockicon",
- "community": 18,
- "norm_label": "clockicon()"
- },
- {
- "label": "UsersIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L23",
- "id": "routes_home_route_usersicon",
- "community": 18,
- "norm_label": "usersicon()"
- },
- {
- "label": "BellIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L32",
- "id": "routes_home_route_bellicon",
- "community": 18,
- "norm_label": "bellicon()"
- },
- {
- "label": "ShieldIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L39",
- "id": "routes_home_route_shieldicon",
- "community": 18,
- "norm_label": "shieldicon()"
- },
- {
- "label": "ZapIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L45",
- "id": "routes_home_route_zapicon",
- "community": 18,
- "norm_label": "zapicon()"
- },
- {
- "label": "ArrowRightIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L51",
- "id": "routes_home_route_arrowrighticon",
- "community": 18,
- "norm_label": "arrowrighticon()"
- },
- {
- "label": "CheckIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L58",
- "id": "routes_home_route_checkicon",
- "community": 18,
- "norm_label": "checkicon()"
- },
- {
- "label": "SunIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L64",
- "id": "routes_home_route_sunicon",
- "community": 18,
- "norm_label": "sunicon()"
- },
- {
- "label": "MoonIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L78",
- "id": "routes_home_route_moonicon",
- "community": 18,
- "norm_label": "moonicon()"
- },
- {
- "label": "StepCard()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L91",
- "id": "routes_home_route_stepcard",
- "community": 18,
- "norm_label": "stepcard()"
- },
- {
- "label": "prevMonth()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L121",
- "id": "routes_home_route_prevmonth",
- "community": 18,
- "norm_label": "prevmonth()"
- },
- {
- "label": "nextMonth()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L127",
- "id": "routes_home_route_nextmonth",
- "community": 18,
- "norm_label": "nextmonth()"
- },
- {
- "label": "not-found-route.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/not-found-route.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_routes_not_found_route_tsx",
- "community": 43,
- "norm_label": "not-found-route.tsx"
- },
- {
- "label": "NotFoundRoute()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/not-found-route.tsx",
- "source_location": "L5",
- "id": "routes_not_found_route_notfoundroute",
- "community": 43,
- "norm_label": "notfoundroute()"
- },
- {
- "label": "legal-route.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_routes_legal_route_tsx",
- "community": 29,
- "norm_label": "legal-route.tsx"
- },
- {
- "label": "kind()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L10",
- "id": "routes_legal_route_kind",
- "community": 29,
- "norm_label": "kind()"
- },
- {
- "label": "heroPose()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L11",
- "id": "routes_legal_route_heropose",
- "community": 29,
- "norm_label": "heropose()"
- },
- {
- "label": "helperPose()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L12",
- "id": "routes_legal_route_helperpose",
- "community": 29,
- "norm_label": "helperpose()"
- },
- {
- "label": "sections()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L13",
- "id": "routes_legal_route_sections",
- "community": 29,
- "norm_label": "sections()"
- },
- {
- "label": "booking-manage-route.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_routes_booking_manage_route_tsx",
- "community": 1,
- "norm_label": "booking-manage-route.tsx"
- },
- {
- "label": "token()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L20",
- "id": "routes_booking_manage_route_token",
- "community": 1,
- "norm_label": "token()"
- },
- {
- "label": "reference()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L21",
- "id": "routes_booking_manage_route_reference",
- "community": 1,
- "norm_label": "reference()"
- },
- {
- "label": "handleReschedule()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L51",
- "id": "routes_booking_manage_route_handlereschedule",
- "community": 1,
- "norm_label": "handlereschedule()"
- },
- {
- "label": "handleCancel()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L96",
- "id": "routes_booking_manage_route_handlecancel",
- "community": 1,
- "norm_label": "handlecancel()"
- },
- {
- "label": "formatDate()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L126",
- "id": "routes_booking_manage_route_formatdate",
- "community": 1,
- "norm_label": "formatdate()"
- },
- {
- "label": "formatTime()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L136",
- "id": "routes_booking_manage_route_formattime",
- "community": 1,
- "norm_label": "formattime()"
- },
- {
- "label": "isRescheduling()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L352",
- "id": "routes_booking_manage_route_isrescheduling",
- "community": 1,
- "norm_label": "isrescheduling()"
- },
- {
- "label": "isCancelling()",
- "file_type": "code",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L411",
- "id": "routes_booking_manage_route_iscancelling",
- "community": 1,
- "norm_label": "iscancelling()"
- },
- {
- "label": "bookra-character.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/bookra-character.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_components_bookra_character_tsx",
- "community": 37,
- "norm_label": "bookra-character.tsx"
- },
- {
- "label": "BookraCharacter()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/bookra-character.tsx",
- "source_location": "L79",
- "id": "components_bookra_character_bookracharacter",
- "community": 37,
- "norm_label": "bookracharacter()"
- },
- {
- "label": "CharacterWithMessage()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/bookra-character.tsx",
- "source_location": "L125",
- "id": "components_bookra_character_characterwithmessage",
- "community": 37,
- "norm_label": "characterwithmessage()"
- },
- {
- "label": "index.ts",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/index.ts",
- "source_location": "L1",
- "id": "apps_frontend_src_components_index_ts",
- "community": 53,
- "norm_label": "index.ts"
- },
- {
- "label": "integration-modal.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/integration-modal.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_components_integration_modal_tsx",
- "community": 44,
- "norm_label": "integration-modal.tsx"
- },
- {
- "label": "copyToClipboard()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/integration-modal.tsx",
- "source_location": "L16",
- "id": "components_integration_modal_copytoclipboard",
- "community": 44,
- "norm_label": "copytoclipboard()"
- },
- {
- "label": "location-map.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_components_location_map_tsx",
- "community": 27,
- "norm_label": "location-map.tsx"
- },
- {
- "label": "loadLeaflet()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L29",
- "id": "components_location_map_loadleaflet",
- "community": 27,
- "norm_label": "loadleaflet()"
- },
- {
- "label": "safeMarkerColor()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L61",
- "id": "components_location_map_safemarkercolor",
- "community": 27,
- "norm_label": "safemarkercolor()"
- },
- {
- "label": "escapeHtml()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L68",
- "id": "components_location_map_escapehtml",
- "community": 27,
- "norm_label": "escapehtml()"
- },
- {
- "label": "createMarkerIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L77",
- "id": "components_location_map_createmarkericon",
- "community": 27,
- "norm_label": "createmarkericon()"
- },
- {
- "label": "LocationMap()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L88",
- "id": "components_location_map_locationmap",
- "community": 27,
- "norm_label": "locationmap()"
- },
- {
- "label": "shell.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_components_shell_tsx",
- "community": 17,
- "norm_label": "shell.tsx"
- },
- {
- "label": "SunIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L19",
- "id": "components_shell_sunicon",
- "community": 17,
- "norm_label": "sunicon()"
- },
- {
- "label": "MoonIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L33",
- "id": "components_shell_moonicon",
- "community": 17,
- "norm_label": "moonicon()"
- },
- {
- "label": "GlobeIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L39",
- "id": "components_shell_globeicon",
- "community": 17,
- "norm_label": "globeicon()"
- },
- {
- "label": "MenuIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L47",
- "id": "components_shell_menuicon",
- "community": 17,
- "norm_label": "menuicon()"
- },
- {
- "label": "XIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L55",
- "id": "components_shell_xicon",
- "community": 17,
- "norm_label": "xicon()"
- },
- {
- "label": "GoogleIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L62",
- "id": "components_shell_googleicon",
- "community": 17,
- "norm_label": "googleicon()"
- },
- {
- "label": "hideHeader()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L78",
- "id": "components_shell_hideheader",
- "community": 17,
- "norm_label": "hideheader()"
- },
- {
- "label": "showGoogleSignIn()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L88",
- "id": "components_shell_showgooglesignin",
- "community": 17,
- "norm_label": "showgooglesignin()"
- },
- {
- "label": "isDemoMode()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L96",
- "id": "components_shell_isdemomode",
- "community": 17,
- "norm_label": "isdemomode()"
- },
- {
- "label": "handleOpenAuth()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L103",
- "id": "components_shell_handleopenauth",
- "community": 17,
- "norm_label": "handleopenauth()"
- },
- {
- "label": "submitSignIn()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L114",
- "id": "components_shell_submitsignin",
- "community": 17,
- "norm_label": "submitsignin()"
- },
- {
- "label": "translateAuthError()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L146",
- "id": "components_shell_translateautherror",
- "community": 17,
- "norm_label": "translateautherror()"
- },
- {
- "label": "sendMagicLink()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L179",
- "id": "components_shell_sendmagiclink",
- "community": 17,
- "norm_label": "sendmagiclink()"
- },
- {
- "label": "signInWithGoogle()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L194",
- "id": "components_shell_signinwithgoogle",
- "community": 17,
- "norm_label": "signinwithgoogle()"
- },
- {
- "label": "widget-builder.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_components_widget_builder_tsx",
- "community": 9,
- "norm_label": "widget-builder.tsx"
- },
- {
- "label": "CopyIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L39",
- "id": "components_widget_builder_copyicon",
- "community": 9,
- "norm_label": "copyicon()"
- },
- {
- "label": "CheckIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L46",
- "id": "components_widget_builder_checkicon",
- "community": 9,
- "norm_label": "checkicon()"
- },
- {
- "label": "CodeIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L52",
- "id": "components_widget_builder_codeicon",
- "community": 9,
- "norm_label": "codeicon()"
- },
- {
- "label": "ExternalLinkIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L59",
- "id": "components_widget_builder_externallinkicon",
- "community": 9,
- "norm_label": "externallinkicon()"
- },
- {
- "label": "IframeIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L67",
- "id": "components_widget_builder_iframeicon",
- "community": 9,
- "norm_label": "iframeicon()"
- },
- {
- "label": "ButtonIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L75",
- "id": "components_widget_builder_buttonicon",
- "community": 9,
- "norm_label": "buttonicon()"
- },
- {
- "label": "CalendarIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L81",
- "id": "components_widget_builder_calendaricon",
- "community": 9,
- "norm_label": "calendaricon()"
- },
- {
- "label": "ModalIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L90",
- "id": "components_widget_builder_modalicon",
- "community": 9,
- "norm_label": "modalicon()"
- },
- {
- "label": "FloatingIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L100",
- "id": "components_widget_builder_floatingicon",
- "community": 9,
- "norm_label": "floatingicon()"
- },
- {
- "label": "SunIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L108",
- "id": "components_widget_builder_sunicon",
- "community": 9,
- "norm_label": "sunicon()"
- },
- {
- "label": "MoonIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L122",
- "id": "components_widget_builder_moonicon",
- "community": 9,
- "norm_label": "moonicon()"
- },
- {
- "label": "RefreshIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L128",
- "id": "components_widget_builder_refreshicon",
- "community": 9,
- "norm_label": "refreshicon()"
- },
- {
- "label": "LockIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L137",
- "id": "components_widget_builder_lockicon",
- "community": 9,
- "norm_label": "lockicon()"
- },
- {
- "label": "DragIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L144",
- "id": "components_widget_builder_dragicon",
- "community": 9,
- "norm_label": "dragicon()"
- },
- {
- "label": "MoveIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L155",
- "id": "components_widget_builder_moveicon",
- "community": 9,
- "norm_label": "moveicon()"
- },
- {
- "label": "PaletteIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L166",
- "id": "components_widget_builder_paletteicon",
- "community": 9,
- "norm_label": "paletteicon()"
- },
- {
- "label": "MapIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L176",
- "id": "components_widget_builder_mapicon",
- "community": 9,
- "norm_label": "mapicon()"
- },
- {
- "label": "EyeIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L184",
- "id": "components_widget_builder_eyeicon",
- "community": 9,
- "norm_label": "eyeicon()"
- },
- {
- "label": "json()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L199",
- "id": "components_widget_builder_json",
- "community": 9,
- "norm_label": "json()"
- },
- {
- "label": "generatedMapElementId()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L203",
- "id": "components_widget_builder_generatedmapelementid",
- "community": 9,
- "norm_label": "generatedmapelementid()"
- },
- {
- "label": "safeHexColor()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L207",
- "id": "components_widget_builder_safehexcolor",
- "community": 9,
- "norm_label": "safehexcolor()"
- },
- {
- "label": "resolveMapLocation()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L281",
- "id": "components_widget_builder_resolvemaplocation",
- "community": 21,
- "norm_label": "resolvemaplocation()"
- },
- {
- "label": "generateMapCode()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L305",
- "id": "components_widget_builder_generatemapcode",
- "community": 9,
- "norm_label": "generatemapcode()"
- },
- {
- "label": "handleDragStart()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L429",
- "id": "components_widget_builder_handledragstart",
- "community": 9,
- "norm_label": "handledragstart()"
- },
- {
- "label": "handleDragOver()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L433",
- "id": "components_widget_builder_handledragover",
- "community": 9,
- "norm_label": "handledragover()"
- },
- {
- "label": "handleDragEnd()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L445",
- "id": "components_widget_builder_handledragend",
- "community": 9,
- "norm_label": "handledragend()"
- },
- {
- "label": "generateCode()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L449",
- "id": "components_widget_builder_generatecode",
- "community": 9,
- "norm_label": "generatecode()"
- },
- {
- "label": "copyToClipboard()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L1076",
- "id": "components_widget_builder_copytoclipboard",
- "community": 9,
- "norm_label": "copytoclipboard()"
- },
- {
- "label": "icons.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_components_dashboard_icons_tsx",
- "community": 13,
- "norm_label": "icons.tsx"
- },
- {
- "label": "LayoutDashboardIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L1",
- "id": "dashboard_icons_layoutdashboardicon",
- "community": 13,
- "norm_label": "layoutdashboardicon()"
- },
- {
- "label": "CalendarDaysIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L10",
- "id": "dashboard_icons_calendardaysicon",
- "community": 13,
- "norm_label": "calendardaysicon()"
- },
- {
- "label": "CreditCardIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L20",
- "id": "dashboard_icons_creditcardicon",
- "community": 13,
- "norm_label": "creditcardicon()"
- },
- {
- "label": "Settings2Icon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L27",
- "id": "dashboard_icons_settings2icon",
- "community": 13,
- "norm_label": "settings2icon()"
- },
- {
- "label": "LogOutIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L35",
- "id": "dashboard_icons_logouticon",
- "community": 13,
- "norm_label": "logouticon()"
- },
- {
- "label": "MenuIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L43",
- "id": "dashboard_icons_menuicon",
- "community": 13,
- "norm_label": "menuicon()"
- },
- {
- "label": "XIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L49",
- "id": "dashboard_icons_xicon",
- "community": 13,
- "norm_label": "xicon()"
- },
- {
- "label": "TrendingUpIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L55",
- "id": "dashboard_icons_trendingupicon",
- "community": 13,
- "norm_label": "trendingupicon()"
- },
- {
- "label": "TrendingDownIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L62",
- "id": "dashboard_icons_trendingdownicon",
- "community": 13,
- "norm_label": "trendingdownicon()"
- },
- {
- "label": "ClockIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L69",
- "id": "dashboard_icons_clockicon",
- "community": 13,
- "norm_label": "clockicon()"
- },
- {
- "label": "CheckCircleIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L75",
- "id": "dashboard_icons_checkcircleicon",
- "community": 13,
- "norm_label": "checkcircleicon()"
- },
- {
- "label": "AlertCircleIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L81",
- "id": "dashboard_icons_alertcircleicon",
- "community": 13,
- "norm_label": "alertcircleicon()"
- },
- {
- "label": "ChevronLeftIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L87",
- "id": "dashboard_icons_chevronlefticon",
- "community": 13,
- "norm_label": "chevronlefticon()"
- },
- {
- "label": "ChevronRightIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L93",
- "id": "dashboard_icons_chevronrighticon",
- "community": 13,
- "norm_label": "chevronrighticon()"
- },
- {
- "label": "SparklesIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L99",
- "id": "dashboard_icons_sparklesicon",
- "community": 13,
- "norm_label": "sparklesicon()"
- },
- {
- "label": "BellIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L105",
- "id": "dashboard_icons_bellicon",
- "community": 13,
- "norm_label": "bellicon()"
- },
- {
- "label": "PlusIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L111",
- "id": "dashboard_icons_plusicon",
- "community": 13,
- "norm_label": "plusicon()"
- },
- {
- "label": "UsersIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L117",
- "id": "dashboard_icons_usersicon",
- "community": 13,
- "norm_label": "usersicon()"
- },
- {
- "label": "UserCircleIcon()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L123",
- "id": "dashboard_icons_usercircleicon",
- "community": 13,
- "norm_label": "usercircleicon()"
- },
- {
- "label": "types.ts",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/types.ts",
- "source_location": "L1",
- "id": "apps_frontend_src_components_dashboard_types_ts",
- "community": 38,
- "norm_label": "types.ts"
- },
- {
- "label": "getInitials()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/types.ts",
- "source_location": "L14",
- "id": "dashboard_types_getinitials",
- "community": 38,
- "norm_label": "getinitials()"
- },
- {
- "label": "getBookingDuration()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/dashboard/types.ts",
- "source_location": "L22",
- "id": "dashboard_types_getbookingduration",
- "community": 38,
- "norm_label": "getbookingduration()"
- },
- {
- "label": "tooltip.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/tooltip.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_components_ui_tooltip_tsx",
- "community": 45,
- "norm_label": "tooltip.tsx"
- },
- {
- "label": "Tooltip()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/tooltip.tsx",
- "source_location": "L10",
- "id": "ui_tooltip_tooltip",
- "community": 45,
- "norm_label": "tooltip()"
- },
- {
- "label": "input.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/input.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_components_ui_input_tsx",
- "community": 46,
- "norm_label": "input.tsx"
- },
- {
- "label": "Input()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/input.tsx",
- "source_location": "L9",
- "id": "ui_input_input",
- "community": 46,
- "norm_label": "input()"
- },
- {
- "label": "badge.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/badge.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_components_ui_badge_tsx",
- "community": 47,
- "norm_label": "badge.tsx"
- },
- {
- "label": "Badge()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/badge.tsx",
- "source_location": "L8",
- "id": "ui_badge_badge",
- "community": 47,
- "norm_label": "badge()"
- },
- {
- "label": "select.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/select.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_components_ui_select_tsx",
- "community": 48,
- "norm_label": "select.tsx"
- },
- {
- "label": "Select()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/select.tsx",
- "source_location": "L17",
- "id": "ui_select_select",
- "community": 48,
- "norm_label": "select()"
- },
- {
- "label": "button.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/button.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_components_ui_button_tsx",
- "community": 54,
- "norm_label": "button.tsx"
- },
- {
- "label": "textarea.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/textarea.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_components_ui_textarea_tsx",
- "community": 49,
- "norm_label": "textarea.tsx"
- },
- {
- "label": "resizeClass()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/textarea.tsx",
- "source_location": "L15",
- "id": "ui_textarea_resizeclass",
- "community": 49,
- "norm_label": "resizeclass()"
- },
- {
- "label": "index.ts",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/index.ts",
- "source_location": "L1",
- "id": "apps_frontend_src_components_ui_index_ts",
- "community": 55,
- "norm_label": "index.ts"
- },
- {
- "label": "card.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_components_ui_card_tsx",
- "community": 25,
- "norm_label": "card.tsx"
- },
- {
- "label": "Card()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L8",
- "id": "ui_card_card",
- "community": 25,
- "norm_label": "card()"
- },
- {
- "label": "CardHeader()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L42",
- "id": "ui_card_cardheader",
- "community": 25,
- "norm_label": "cardheader()"
- },
- {
- "label": "CardTitle()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L53",
- "id": "ui_card_cardtitle",
- "community": 25,
- "norm_label": "cardtitle()"
- },
- {
- "label": "CardDescription()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L67",
- "id": "ui_card_carddescription",
- "community": 25,
- "norm_label": "carddescription()"
- },
- {
- "label": "CardContent()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L78",
- "id": "ui_card_cardcontent",
- "community": 25,
- "norm_label": "cardcontent()"
- },
- {
- "label": "CardFooter()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L89",
- "id": "ui_card_cardfooter",
- "community": 25,
- "norm_label": "cardfooter()"
- },
- {
- "label": "skeleton.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/skeleton.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_components_ui_skeleton_tsx",
- "community": 31,
- "norm_label": "skeleton.tsx"
- },
- {
- "label": "Skeleton()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/skeleton.tsx",
- "source_location": "L9",
- "id": "ui_skeleton_skeleton",
- "community": 31,
- "norm_label": "skeleton()"
- },
- {
- "label": "SkeletonCard()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/skeleton.tsx",
- "source_location": "L28",
- "id": "ui_skeleton_skeletoncard",
- "community": 31,
- "norm_label": "skeletoncard()"
- },
- {
- "label": "SkeletonText()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/skeleton.tsx",
- "source_location": "L38",
- "id": "ui_skeleton_skeletontext",
- "community": 31,
- "norm_label": "skeletontext()"
- },
- {
- "label": "avatar.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/avatar.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_components_ui_avatar_tsx",
- "community": 50,
- "norm_label": "avatar.tsx"
- },
- {
- "label": "Avatar()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/avatar.tsx",
- "source_location": "L12",
- "id": "ui_avatar_avatar",
- "community": 50,
- "norm_label": "avatar()"
- },
- {
- "label": "tabs.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_components_ui_tabs_tsx",
- "community": 28,
- "norm_label": "tabs.tsx"
- },
- {
- "label": "useTabs()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L12",
- "id": "ui_tabs_usetabs",
- "community": 28,
- "norm_label": "usetabs()"
- },
- {
- "label": "Tabs()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L29",
- "id": "ui_tabs_tabs",
- "community": 28,
- "norm_label": "tabs()"
- },
- {
- "label": "TabsList()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L60",
- "id": "ui_tabs_tabslist",
- "community": 28,
- "norm_label": "tabslist()"
- },
- {
- "label": "TabsTrigger()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L89",
- "id": "ui_tabs_tabstrigger",
- "community": 28,
- "norm_label": "tabstrigger()"
- },
- {
- "label": "TabsContent()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L120",
- "id": "ui_tabs_tabscontent",
- "community": 28,
- "norm_label": "tabscontent()"
- },
- {
- "label": "dialog.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_components_ui_dialog_tsx",
- "community": 23,
- "norm_label": "dialog.tsx"
- },
- {
- "label": "Dialog()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L10",
- "id": "ui_dialog_dialog",
- "community": 23,
- "norm_label": "dialog()"
- },
- {
- "label": "DialogHeader()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L78",
- "id": "ui_dialog_dialogheader",
- "community": 23,
- "norm_label": "dialogheader()"
- },
- {
- "label": "DialogTitle()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L88",
- "id": "ui_dialog_dialogtitle",
- "community": 23,
- "norm_label": "dialogtitle()"
- },
- {
- "label": "DialogDescription()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L104",
- "id": "ui_dialog_dialogdescription",
- "community": 23,
- "norm_label": "dialogdescription()"
- },
- {
- "label": "DialogContent()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L120",
- "id": "ui_dialog_dialogcontent",
- "community": 23,
- "norm_label": "dialogcontent()"
- },
- {
- "label": "DialogFooter()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L130",
- "id": "ui_dialog_dialogfooter",
- "community": 23,
- "norm_label": "dialogfooter()"
- },
- {
- "label": "DialogCloseButton()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L151",
- "id": "ui_dialog_dialogclosebutton",
- "community": 23,
- "norm_label": "dialogclosebutton()"
- },
- {
- "label": "useDialog()",
- "file_type": "code",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L185",
- "id": "ui_dialog_usedialog",
- "community": 23,
- "norm_label": "usedialog()"
- },
- {
- "label": "theme-provider.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/theme-provider.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_providers_theme_provider_tsx",
- "community": 32,
- "norm_label": "theme-provider.tsx"
- },
- {
- "label": "getInitialTheme()",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/theme-provider.tsx",
- "source_location": "L13",
- "id": "providers_theme_provider_getinitialtheme",
- "community": 32,
- "norm_label": "getinitialtheme()"
- },
- {
- "label": "getResolvedTheme()",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/theme-provider.tsx",
- "source_location": "L19",
- "id": "providers_theme_provider_getresolvedtheme",
- "community": 32,
- "norm_label": "getresolvedtheme()"
- },
- {
- "label": "useTheme()",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/theme-provider.tsx",
- "source_location": "L82",
- "id": "providers_theme_provider_usetheme",
- "community": 32,
- "norm_label": "usetheme()"
- },
- {
- "label": "auth-provider.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_providers_auth_provider_tsx",
- "community": 30,
- "norm_label": "auth-provider.tsx"
- },
- {
- "label": "sessionFromLocalToken()",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L21",
- "id": "providers_auth_provider_sessionfromlocaltoken",
- "community": 30,
- "norm_label": "sessionfromlocaltoken()"
- },
- {
- "label": "parseJwtPayload()",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L40",
- "id": "providers_auth_provider_parsejwtpayload",
- "community": 30,
- "norm_label": "parsejwtpayload()"
- },
- {
- "label": "AuthProvider()",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L69",
- "id": "providers_auth_provider_authprovider",
- "community": 30,
- "norm_label": "authprovider()"
- },
- {
- "label": "useAuth()",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L208",
- "id": "providers_auth_provider_useauth",
- "community": 30,
- "norm_label": "useauth()"
- },
- {
- "label": "i18n-provider.tsx",
- "file_type": "code",
- "source_file": "apps/frontend/src/providers/i18n-provider.tsx",
- "source_location": "L1",
- "id": "apps_frontend_src_providers_i18n_provider_tsx",
- "community": 56,
- "norm_label": "i18n-provider.tsx"
- },
- {
- "label": "map.ts",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L1",
- "id": "apps_frontend_src_lib_map_ts",
- "community": 21,
- "norm_label": "map.ts"
- },
- {
- "label": "mapStyleById()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L84",
- "id": "lib_map_mapstylebyid",
- "community": 21,
- "norm_label": "mapstylebyid()"
- },
- {
- "label": "resolveMapTileStyle()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L88",
- "id": "lib_map_resolvemaptilestyle",
- "community": 21,
- "norm_label": "resolvemaptilestyle()"
- },
- {
- "label": "validateCoordinates()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L102",
- "id": "lib_map_validatecoordinates",
- "community": 21,
- "norm_label": "validatecoordinates()"
- },
- {
- "label": "parseCoordinateText()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L113",
- "id": "lib_map_parsecoordinatetext",
- "community": 21,
- "norm_label": "parsecoordinatetext()"
- },
- {
- "label": "parseMapyCzUrl()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L133",
- "id": "lib_map_parsemapyczurl",
- "community": 21,
- "norm_label": "parsemapyczurl()"
- },
- {
- "label": "parseGoogleMapsUrl()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L159",
- "id": "lib_map_parsegooglemapsurl",
- "community": 21,
- "norm_label": "parsegooglemapsurl()"
- },
- {
- "label": "parseMapUrl()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L217",
- "id": "lib_map_parsemapurl",
- "community": 21,
- "norm_label": "parsemapurl()"
- },
- {
- "label": "geocodeLocation()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L228",
- "id": "lib_map_geocodelocation",
- "community": 21,
- "norm_label": "geocodelocation()"
- },
- {
- "label": "reverseGeocode()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L282",
- "id": "lib_map_reversegeocode",
- "community": 21,
- "norm_label": "reversegeocode()"
- },
- {
- "label": "resolveLocationInput()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L320",
- "id": "lib_map_resolvelocationinput",
- "community": 21,
- "norm_label": "resolvelocationinput()"
- },
- {
- "label": "api-client.ts",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/api-client.ts",
- "source_location": "L1",
- "id": "apps_frontend_src_lib_api_client_ts",
- "community": 57,
- "norm_label": "api-client.ts"
- },
- {
- "label": "types.ts",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/types.ts",
- "source_location": "L1",
- "id": "apps_frontend_src_lib_types_ts",
- "community": 58,
- "norm_label": "types.ts"
- },
- {
- "label": "paddle.ts",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/paddle.ts",
- "source_location": "L1",
- "id": "apps_frontend_src_lib_paddle_ts",
- "community": 1,
- "norm_label": "paddle.ts"
- },
- {
- "label": "paddleConfigured()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/paddle.ts",
- "source_location": "L8",
- "id": "lib_paddle_paddleconfigured",
- "community": 1,
- "norm_label": "paddleconfigured()"
- },
- {
- "label": "getPaddle()",
- "file_type": "code",
- "source_file": "apps/frontend/src/lib/paddle.ts",
- "source_location": "L12",
- "id": "lib_paddle_getpaddle",
- "community": 1,
- "norm_label": "getpaddle()"
- },
- {
- "label": "index.ts",
- "file_type": "code",
- "source_file": "packages/shared-types/src/index.ts",
- "source_location": "L1",
- "id": "packages_shared_types_src_index_ts",
- "community": 59,
- "norm_label": "index.ts"
- },
- {
- "label": "index.ts",
- "file_type": "code",
- "source_file": "packages/api-client/src/index.ts",
- "source_location": "L1",
- "id": "packages_api_client_src_index_ts",
- "community": 60,
- "norm_label": "index.ts"
- },
- {
- "label": "types.ts",
- "file_type": "code",
- "source_file": "packages/api-client/src/generated/types.ts",
- "source_location": "L1",
- "id": "packages_api_client_src_generated_types_ts",
- "community": 61,
- "norm_label": "types.ts"
- },
- {
- "label": "generate.mjs",
- "file_type": "code",
- "source_file": "packages/api-client/scripts/generate.mjs",
- "source_location": "L1",
- "id": "packages_api_client_scripts_generate_mjs",
- "community": 62,
- "norm_label": "generate.mjs"
- }
- ],
- "links": [
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "generate_map.tsx",
- "source_location": "L100",
- "weight": 1.0,
- "_src": "generate_map_tsx",
- "_tgt": "bookra_generate_map_contactmap",
- "source": "generate_map_tsx",
- "target": "bookra_generate_map_contactmap",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "map.ts",
- "source_location": "L24",
- "weight": 1.0,
- "_src": "map_ts",
- "_tgt": "bookra_map_parsemapyczurl",
- "source": "map_ts",
- "target": "bookra_map_parsemapyczurl",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "map.ts",
- "source_location": "L71",
- "weight": 1.0,
- "_src": "map_ts",
- "_tgt": "bookra_map_parsegooglemapsurl",
- "source": "map_ts",
- "target": "bookra_map_parsegooglemapsurl",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "map.ts",
- "source_location": "L149",
- "weight": 1.0,
- "_src": "map_ts",
- "_tgt": "bookra_map_parsemapurl",
- "source": "map_ts",
- "target": "bookra_map_parsemapurl",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "map.ts",
- "source_location": "L178",
- "weight": 1.0,
- "_src": "map_ts",
- "_tgt": "bookra_map_validatecoordinates",
- "source": "map_ts",
- "target": "bookra_map_validatecoordinates",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "map.ts",
- "source_location": "L193",
- "weight": 1.0,
- "_src": "map_ts",
- "_tgt": "bookra_map_reversegeocode",
- "source": "map_ts",
- "target": "bookra_map_reversegeocode",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "map.ts",
- "source_location": "L161",
- "weight": 1.0,
- "_src": "bookra_map_parsemapurl",
- "_tgt": "bookra_map_parsemapyczurl",
- "source": "bookra_map_parsemapyczurl",
- "target": "bookra_map_parsemapurl",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "map.ts",
- "source_location": "L167",
- "weight": 1.0,
- "_src": "bookra_map_parsemapurl",
- "_tgt": "bookra_map_parsegooglemapsurl",
- "source": "bookra_map_parsegooglemapsurl",
- "target": "bookra_map_parsemapurl",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L24",
- "weight": 1.0,
- "_src": "apps_auth_service_cmd_api_main_go",
- "_tgt": "api_main_main",
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "api_main_main",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L105",
- "weight": 1.0,
- "_src": "apps_auth_service_cmd_api_main_go",
- "_tgt": "api_main_runmigrations",
- "source": "apps_auth_service_cmd_api_main_go",
- "target": "api_main_runmigrations",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L42",
- "weight": 1.0,
- "_src": "api_main_main",
- "_tgt": "api_main_runmigrations",
- "source": "api_main_main",
- "target": "api_main_runmigrations",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L16",
- "weight": 1.0,
- "_src": "apps_backend_cmd_api_main_go",
- "_tgt": "api_main_main",
- "source": "api_main_main",
- "target": "apps_backend_cmd_api_main_go",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L25",
- "weight": 1.0,
- "_src": "api_main_main",
- "_tgt": "config_config_load",
- "source": "api_main_main",
- "target": "config_config_load"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L32",
- "weight": 1.0,
- "_src": "api_main_main",
- "_tgt": "config_config_getenv",
- "source": "api_main_main",
- "target": "config_config_getenv"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L36",
- "weight": 1.0,
- "_src": "api_main_main",
- "_tgt": "handlers_handlers_new",
- "source": "api_main_main",
- "target": "handlers_handlers_new"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L22",
- "weight": 1.0,
- "_src": "api_main_main",
- "_tgt": "db_pool_newpools",
- "source": "api_main_main",
- "target": "db_pool_newpools"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/cmd/api/main.go",
- "source_location": "L28",
- "weight": 1.0,
- "_src": "api_main_main",
- "_tgt": "api_server_newserver",
- "source": "api_main_main",
- "target": "api_server_newserver"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/cmd/api/main.go",
- "source_location": "L110",
- "weight": 1.0,
- "_src": "api_main_runmigrations",
- "_tgt": "api_server_close",
- "source": "api_main_runmigrations",
- "target": "api_server_close"
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L27",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_email_templates_go",
- "_tgt": "email_emailtemplate",
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_emailtemplate",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L33",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_email_templates_go",
- "_tgt": "email_templates_magiclinkemail",
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_magiclinkemail",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L40",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_email_templates_go",
- "_tgt": "email_templates_welcomeemail",
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_welcomeemail",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L47",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_email_templates_go",
- "_tgt": "email_templates_bookingconfirmationemail",
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_bookingconfirmationemail",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L54",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_email_templates_go",
- "_tgt": "email_templates_passwordresetemail",
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_passwordresetemail",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L61",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_email_templates_go",
- "_tgt": "email_templates_magiclinkemailen",
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_magiclinkemailen",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L157",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_email_templates_go",
- "_tgt": "email_templates_magiclinkemailcs",
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_magiclinkemailcs",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L253",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_email_templates_go",
- "_tgt": "email_templates_welcomeemailen",
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_welcomeemailen",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L335",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_email_templates_go",
- "_tgt": "email_templates_welcomeemailcs",
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_welcomeemailcs",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L417",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_email_templates_go",
- "_tgt": "email_templates_bookingconfirmationen",
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_bookingconfirmationen",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L507",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_email_templates_go",
- "_tgt": "email_templates_bookingconfirmationcs",
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_bookingconfirmationcs",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L597",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_email_templates_go",
- "_tgt": "email_templates_passwordreseten",
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_passwordreseten",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L671",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_email_templates_go",
- "_tgt": "email_templates_passwordresetcs",
- "source": "apps_auth_service_internal_email_templates_go",
- "target": "email_templates_passwordresetcs",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L35",
- "weight": 1.0,
- "_src": "email_templates_magiclinkemail",
- "_tgt": "email_templates_magiclinkemailcs",
- "source": "email_templates_magiclinkemail",
- "target": "email_templates_magiclinkemailcs",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L37",
- "weight": 1.0,
- "_src": "email_templates_magiclinkemail",
- "_tgt": "email_templates_magiclinkemailen",
- "source": "email_templates_magiclinkemail",
- "target": "email_templates_magiclinkemailen",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L29",
- "weight": 1.0,
- "_src": "email_service_sendmagiclink",
- "_tgt": "email_templates_magiclinkemail",
- "source": "email_templates_magiclinkemail",
- "target": "email_service_sendmagiclink"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L42",
- "weight": 1.0,
- "_src": "email_templates_welcomeemail",
- "_tgt": "email_templates_welcomeemailcs",
- "source": "email_templates_welcomeemail",
- "target": "email_templates_welcomeemailcs",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L44",
- "weight": 1.0,
- "_src": "email_templates_welcomeemail",
- "_tgt": "email_templates_welcomeemailen",
- "source": "email_templates_welcomeemail",
- "target": "email_templates_welcomeemailen",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L35",
- "weight": 1.0,
- "_src": "email_service_sendwelcomeemail",
- "_tgt": "email_templates_welcomeemail",
- "source": "email_templates_welcomeemail",
- "target": "email_service_sendwelcomeemail"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L49",
- "weight": 1.0,
- "_src": "email_templates_bookingconfirmationemail",
- "_tgt": "email_templates_bookingconfirmationcs",
- "source": "email_templates_bookingconfirmationemail",
- "target": "email_templates_bookingconfirmationcs",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L51",
- "weight": 1.0,
- "_src": "email_templates_bookingconfirmationemail",
- "_tgt": "email_templates_bookingconfirmationen",
- "source": "email_templates_bookingconfirmationemail",
- "target": "email_templates_bookingconfirmationen",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L41",
- "weight": 1.0,
- "_src": "email_service_sendbookingconfirmation",
- "_tgt": "email_templates_bookingconfirmationemail",
- "source": "email_templates_bookingconfirmationemail",
- "target": "email_service_sendbookingconfirmation"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L56",
- "weight": 1.0,
- "_src": "email_templates_passwordresetemail",
- "_tgt": "email_templates_passwordresetcs",
- "source": "email_templates_passwordresetemail",
- "target": "email_templates_passwordresetcs",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/templates.go",
- "source_location": "L58",
- "weight": 1.0,
- "_src": "email_templates_passwordresetemail",
- "_tgt": "email_templates_passwordreseten",
- "source": "email_templates_passwordresetemail",
- "target": "email_templates_passwordreseten",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L47",
- "weight": 1.0,
- "_src": "email_service_sendpasswordreset",
- "_tgt": "email_templates_passwordresetemail",
- "source": "email_templates_passwordresetemail",
- "target": "email_service_sendpasswordreset"
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L11",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_email_service_go",
- "_tgt": "email_config",
- "source": "apps_auth_service_internal_email_service_go",
- "target": "email_config",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L19",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_email_service_go",
- "_tgt": "email_service",
- "source": "apps_auth_service_internal_email_service_go",
- "target": "email_service",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L23",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_email_service_go",
- "_tgt": "email_service_new",
- "source": "apps_auth_service_internal_email_service_go",
- "target": "email_service_new",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L28",
- "weight": 1.0,
- "_src": "email_service",
- "_tgt": "email_service_sendmagiclink",
- "source": "email_service",
- "target": "email_service_sendmagiclink",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L34",
- "weight": 1.0,
- "_src": "email_service",
- "_tgt": "email_service_sendwelcomeemail",
- "source": "email_service",
- "target": "email_service_sendwelcomeemail",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L40",
- "weight": 1.0,
- "_src": "email_service",
- "_tgt": "email_service_sendbookingconfirmation",
- "source": "email_service",
- "target": "email_service_sendbookingconfirmation",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L46",
- "weight": 1.0,
- "_src": "email_service",
- "_tgt": "email_service_sendpasswordreset",
- "source": "email_service",
- "target": "email_service_sendpasswordreset",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L52",
- "weight": 1.0,
- "_src": "email_service",
- "_tgt": "email_service_sendtemplate",
- "source": "email_service",
- "target": "email_service_sendtemplate",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L64",
- "weight": 1.0,
- "_src": "email_service",
- "_tgt": "email_service_send",
- "source": "email_service",
- "target": "email_service_send",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L30",
- "weight": 1.0,
- "_src": "email_service_sendmagiclink",
- "_tgt": "email_service_sendtemplate",
- "source": "email_service_sendmagiclink",
- "target": "email_service_sendtemplate",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L36",
- "weight": 1.0,
- "_src": "email_service_sendwelcomeemail",
- "_tgt": "email_service_sendtemplate",
- "source": "email_service_sendwelcomeemail",
- "target": "email_service_sendtemplate",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L42",
- "weight": 1.0,
- "_src": "email_service_sendbookingconfirmation",
- "_tgt": "email_service_sendtemplate",
- "source": "email_service_sendbookingconfirmation",
- "target": "email_service_sendtemplate",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L48",
- "weight": 1.0,
- "_src": "email_service_sendpasswordreset",
- "_tgt": "email_service_sendtemplate",
- "source": "email_service_sendpasswordreset",
- "target": "email_service_sendtemplate",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/email/service.go",
- "source_location": "L60",
- "weight": 1.0,
- "_src": "email_service_sendtemplate",
- "_tgt": "email_service_send",
- "source": "email_service_sendtemplate",
- "target": "email_service_send",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L11",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_db_db_go",
- "_tgt": "db_db",
- "source": "apps_auth_service_internal_db_db_go",
- "target": "db_db",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L15",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_db_db_go",
- "_tgt": "db_db_new",
- "source": "apps_auth_service_internal_db_db_go",
- "target": "db_db_new",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L55",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_db_db_go",
- "_tgt": "db_stats",
- "source": "apps_auth_service_internal_db_db_go",
- "target": "db_stats",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L33",
- "weight": 1.0,
- "_src": "db_db",
- "_tgt": "db_db_close",
- "source": "db_db",
- "target": "db_db_close",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L37",
- "weight": 1.0,
- "_src": "db_db",
- "_tgt": "db_db_pool",
- "source": "db_db",
- "target": "db_db_pool",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L41",
- "weight": 1.0,
- "_src": "db_db",
- "_tgt": "db_db_queryrow",
- "source": "db_db",
- "target": "db_db_queryrow",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L45",
- "weight": 1.0,
- "_src": "db_db",
- "_tgt": "db_db_query",
- "source": "db_db",
- "target": "db_db_query",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L49",
- "weight": 1.0,
- "_src": "db_db",
- "_tgt": "db_db_exec",
- "source": "db_db",
- "target": "db_db_exec",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L70",
- "weight": 1.0,
- "_src": "db_db",
- "_tgt": "db_db_getstats",
- "source": "db_db",
- "target": "db_db_getstats",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L35",
- "weight": 1.0,
- "_src": "db_db",
- "_tgt": "db_db_getuserbyemail",
- "source": "db_db",
- "target": "db_db_getuserbyemail",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L63",
- "weight": 1.0,
- "_src": "db_db",
- "_tgt": "db_db_getuserbyid",
- "source": "db_db",
- "target": "db_db_getuserbyid",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L91",
- "weight": 1.0,
- "_src": "db_db",
- "_tgt": "db_db_getuserbyproviderid",
- "source": "db_db",
- "target": "db_db_getuserbyproviderid",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L118",
- "weight": 1.0,
- "_src": "db_db",
- "_tgt": "db_db_createuser",
- "source": "db_db",
- "target": "db_db_createuser",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L138",
- "weight": 1.0,
- "_src": "db_db",
- "_tgt": "db_db_updateuser",
- "source": "db_db",
- "target": "db_db_updateuser",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L152",
- "weight": 1.0,
- "_src": "db_db",
- "_tgt": "db_db_updatelastlogin",
- "source": "db_db",
- "target": "db_db_updatelastlogin",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L159",
- "weight": 1.0,
- "_src": "db_db",
- "_tgt": "db_db_createmagiclink",
- "source": "db_db",
- "target": "db_db_createmagiclink",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L167",
- "weight": 1.0,
- "_src": "db_db",
- "_tgt": "db_db_getmagiclink",
- "source": "db_db",
- "target": "db_db_getmagiclink",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L187",
- "weight": 1.0,
- "_src": "db_db",
- "_tgt": "db_db_markmagiclinkused",
- "source": "db_db",
- "target": "db_db_markmagiclinkused",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L192",
- "weight": 1.0,
- "_src": "db_db",
- "_tgt": "db_db_putkv",
- "source": "db_db",
- "target": "db_db_putkv",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L207",
- "weight": 1.0,
- "_src": "db_db",
- "_tgt": "db_db_getkv",
- "source": "db_db",
- "target": "db_db_getkv",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/db.go",
- "source_location": "L74",
- "weight": 1.0,
- "_src": "db_db_getstats",
- "_tgt": "db_db_queryrow",
- "source": "db_db_queryrow",
- "target": "db_db_getstats",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L13",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_db_repository_go",
- "_tgt": "db_user",
- "source": "apps_auth_service_internal_db_repository_go",
- "target": "db_user",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/db/repository.go",
- "source_location": "L26",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_db_repository_go",
- "_tgt": "db_magiclink",
- "source": "apps_auth_service_internal_db_repository_go",
- "target": "db_magiclink",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L8",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_config_config_test_go",
- "_tgt": "config_config_test_teststripereadinesshelpers",
- "source": "apps_auth_service_internal_config_config_test_go",
- "target": "config_config_test_teststripereadinesshelpers",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L30",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_config_config_test_go",
- "_tgt": "config_config_test_teststripecheckoutreadyrequiressecretandprice",
- "source": "apps_auth_service_internal_config_config_test_go",
- "target": "config_config_test_teststripecheckoutreadyrequiressecretandprice",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L47",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_config_config_test_go",
- "_tgt": "config_config_test_testloaddefaultsauthserviceportto8081",
- "source": "apps_auth_service_internal_config_config_test_go",
- "target": "config_config_test_testloaddefaultsauthserviceportto8081",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L53",
- "weight": 1.0,
- "_src": "config_config_test_testloaddefaultsauthserviceportto8081",
- "_tgt": "config_config_getenv",
- "source": "config_config_test_testloaddefaultsauthserviceportto8081",
- "target": "config_config_getenv"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/config/config_test.go",
- "source_location": "L68",
- "weight": 1.0,
- "_src": "config_config_test_testloaddefaultsauthserviceportto8081",
- "_tgt": "config_config_load",
- "source": "config_config_test_testloaddefaultsauthserviceportto8081",
- "target": "config_config_load"
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L10",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_config_config_go",
- "_tgt": "config_config",
- "source": "apps_auth_service_internal_config_config_go",
- "target": "config_config",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L33",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_config_config_go",
- "_tgt": "config_config_load",
- "source": "apps_auth_service_internal_config_config_go",
- "target": "config_config_load",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L80",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_config_config_go",
- "_tgt": "config_config_getenv",
- "source": "apps_auth_service_internal_config_config_go",
- "target": "config_config_getenv",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L87",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_config_config_go",
- "_tgt": "config_config_getenvallowempty",
- "source": "apps_auth_service_internal_config_config_go",
- "target": "config_config_getenvallowempty",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L94",
- "weight": 1.0,
- "_src": "config_config",
- "_tgt": "config_config_stripesecretconfigured",
- "source": "config_config",
- "target": "config_config_stripesecretconfigured",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L98",
- "weight": 1.0,
- "_src": "config_config",
- "_tgt": "config_config_stripewebhookconfigured",
- "source": "config_config",
- "target": "config_config_stripewebhookconfigured",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L102",
- "weight": 1.0,
- "_src": "config_config",
- "_tgt": "config_config_stripehasanypriceconfigured",
- "source": "config_config",
- "target": "config_config_stripehasanypriceconfigured",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L111",
- "weight": 1.0,
- "_src": "config_config",
- "_tgt": "config_config_stripecheckoutready",
- "source": "config_config",
- "target": "config_config_stripecheckoutready",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L10",
- "weight": 1.0,
- "_src": "apps_backend_internal_config_config_go",
- "_tgt": "config_config",
- "source": "config_config",
- "target": "apps_backend_internal_config_config_go",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L69",
- "weight": 1.0,
- "_src": "config_config",
- "_tgt": "config_config_validateruntimerequirements",
- "source": "config_config",
- "target": "config_config_validateruntimerequirements",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L106",
- "weight": 1.0,
- "_src": "config_config",
- "_tgt": "config_config_paddleconfigured",
- "source": "config_config",
- "target": "config_config_paddleconfigured",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L110",
- "weight": 1.0,
- "_src": "config_config",
- "_tgt": "config_config_paddlewebhookconfigured",
- "source": "config_config",
- "target": "config_config_paddlewebhookconfigured",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L114",
- "weight": 1.0,
- "_src": "config_config",
- "_tgt": "config_config_paddlecheckoutconfigured",
- "source": "config_config",
- "target": "config_config_paddlecheckoutconfigured",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L34",
- "weight": 1.0,
- "_src": "config_config_load",
- "_tgt": "config_config_getenv",
- "source": "config_config_load",
- "target": "config_config_getenv",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L53",
- "weight": 1.0,
- "_src": "config_config_load",
- "_tgt": "config_config_getenvallowempty",
- "source": "config_config_load",
- "target": "config_config_getenvallowempty",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L34",
- "weight": 1.0,
- "_src": "apps_backend_internal_config_config_go",
- "_tgt": "config_config_load",
- "source": "config_config_load",
- "target": "apps_backend_internal_config_config_go",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L36",
- "weight": 1.0,
- "_src": "config_config_load",
- "_tgt": "config_config_valueordefault",
- "source": "config_config_load",
- "target": "config_config_valueordefault",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L50",
- "weight": 1.0,
- "_src": "config_config_load",
- "_tgt": "config_config_normalizepaddleenvironment",
- "source": "config_config_load",
- "target": "config_config_normalizepaddleenvironment",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L53",
- "weight": 1.0,
- "_src": "config_config_load",
- "_tgt": "config_config_paddlepricematrixfromenv",
- "source": "config_config_load",
- "target": "config_config_paddlepricematrixfromenv",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L56",
- "weight": 1.0,
- "_src": "config_config_load",
- "_tgt": "config_config_boolfromenv",
- "source": "config_config_load",
- "target": "config_config_boolfromenv",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L62",
- "weight": 1.0,
- "_src": "config_config_load",
- "_tgt": "config_config_validateruntimerequirements",
- "source": "config_config_load",
- "target": "config_config_validateruntimerequirements",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L40",
- "weight": 1.0,
- "_src": "config_config_load",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "config_config_load",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L60",
- "weight": 1.0,
- "_src": "config_config_load",
- "_tgt": "handlers_handlers_new",
- "source": "config_config_load",
- "target": "handlers_handlers_new"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L127",
- "weight": 1.0,
- "_src": "config_config_paddlepricematrixfromenv",
- "_tgt": "config_config_getenv",
- "source": "config_config_getenv",
- "target": "config_config_paddlepricematrixfromenv"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L154",
- "weight": 1.0,
- "_src": "config_config_valueordefault",
- "_tgt": "config_config_getenv",
- "source": "config_config_getenv",
- "target": "config_config_valueordefault"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L161",
- "weight": 1.0,
- "_src": "config_config_boolfromenv",
- "_tgt": "config_config_getenv",
- "source": "config_config_getenv",
- "target": "config_config_boolfromenv"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L112",
- "weight": 1.0,
- "_src": "config_config_stripecheckoutready",
- "_tgt": "config_config_stripesecretconfigured",
- "source": "config_config_stripesecretconfigured",
- "target": "config_config_stripecheckoutready",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L95",
- "weight": 1.0,
- "_src": "config_config_stripesecretconfigured",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "config_config_stripesecretconfigured",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L99",
- "weight": 1.0,
- "_src": "config_config_stripewebhookconfigured",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "config_config_stripewebhookconfigured",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L112",
- "weight": 1.0,
- "_src": "config_config_stripecheckoutready",
- "_tgt": "config_config_stripehasanypriceconfigured",
- "source": "config_config_stripehasanypriceconfigured",
- "target": "config_config_stripecheckoutready",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/config/config.go",
- "source_location": "L104",
- "weight": 1.0,
- "_src": "config_config_stripehasanypriceconfigured",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "config_config_stripehasanypriceconfigured",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L15",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_oauth_google_go",
- "_tgt": "oauth_googleuser",
- "source": "apps_auth_service_internal_oauth_google_go",
- "target": "oauth_googleuser",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L23",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_oauth_google_go",
- "_tgt": "oauth_googleprovider",
- "source": "apps_auth_service_internal_oauth_google_go",
- "target": "oauth_googleprovider",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L27",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_oauth_google_go",
- "_tgt": "oauth_google_newgoogleprovider",
- "source": "apps_auth_service_internal_oauth_google_go",
- "target": "oauth_google_newgoogleprovider",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L52",
- "weight": 1.0,
- "_src": "oauth_googleprovider",
- "_tgt": "oauth_googleprovider_enabled",
- "source": "oauth_googleprovider",
- "target": "oauth_googleprovider_enabled",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L56",
- "weight": 1.0,
- "_src": "oauth_googleprovider",
- "_tgt": "oauth_googleprovider_getauthurl",
- "source": "oauth_googleprovider",
- "target": "oauth_googleprovider_getauthurl",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L60",
- "weight": 1.0,
- "_src": "oauth_googleprovider",
- "_tgt": "oauth_googleprovider_exchangecode",
- "source": "oauth_googleprovider",
- "target": "oauth_googleprovider_exchangecode",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/oauth/google.go",
- "source_location": "L86",
- "weight": 1.0,
- "_src": "oauth_googleprovider",
- "_tgt": "oauth_googleprovider_parseuser",
- "source": "oauth_googleprovider",
- "target": "oauth_googleprovider_parseuser",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L71",
- "weight": 1.0,
- "_src": "handlers_handlers_new",
- "_tgt": "oauth_google_newgoogleprovider",
- "source": "oauth_google_newgoogleprovider",
- "target": "handlers_handlers_new"
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L24",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_handlers_handlers_go",
- "_tgt": "handlers_handler",
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_handler",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L33",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_handlers_handlers_go",
- "_tgt": "handlers_loginrequest",
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_loginrequest",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L38",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_handlers_handlers_go",
- "_tgt": "handlers_verifyrequest",
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_verifyrequest",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L42",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_handlers_handlers_go",
- "_tgt": "handlers_refreshrequest",
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_refreshrequest",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L46",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_handlers_handlers_go",
- "_tgt": "handlers_passwordregisterrequest",
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_passwordregisterrequest",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L52",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_handlers_handlers_go",
- "_tgt": "handlers_passwordloginrequest",
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_passwordloginrequest",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L57",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_handlers_handlers_go",
- "_tgt": "handlers_checkoutrequest",
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_checkoutrequest",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L62",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_handlers_handlers_go",
- "_tgt": "handlers_handlers_new",
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_handlers_new",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L132",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_handlers_handlers_go",
- "_tgt": "handlers_handlers_detectlocale",
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_handlers_detectlocale",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L488",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_handlers_handlers_go",
- "_tgt": "handlers_handlers_generatestate",
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_handlers_generatestate",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L496",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_handlers_handlers_go",
- "_tgt": "handlers_handlers_oauthcookiesecure",
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_handlers_oauthcookiesecure",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L506",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_handlers_handlers_go",
- "_tgt": "handlers_handlers_timeoutmiddleware",
- "source": "apps_auth_service_internal_handlers_handlers_go",
- "target": "handlers_handlers_timeoutmiddleware",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L77",
- "weight": 1.0,
- "_src": "handlers_handler",
- "_tgt": "handlers_handler_registerroutes",
- "source": "handlers_handler",
- "target": "handlers_handler_registerroutes",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L109",
- "weight": 1.0,
- "_src": "handlers_handler",
- "_tgt": "handlers_handler_sendmagiclink",
- "source": "handlers_handler",
- "target": "handlers_handler_sendmagiclink",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L141",
- "weight": 1.0,
- "_src": "handlers_handler",
- "_tgt": "handlers_handler_verifymagiclink",
- "source": "handlers_handler",
- "target": "handlers_handler_verifymagiclink",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L157",
- "weight": 1.0,
- "_src": "handlers_handler",
- "_tgt": "handlers_handler_registerwithpassword",
- "source": "handlers_handler",
- "target": "handlers_handler_registerwithpassword",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L177",
- "weight": 1.0,
- "_src": "handlers_handler",
- "_tgt": "handlers_handler_loginwithpassword",
- "source": "handlers_handler",
- "target": "handlers_handler_loginwithpassword",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L193",
- "weight": 1.0,
- "_src": "handlers_handler",
- "_tgt": "handlers_handler_refreshtoken",
- "source": "handlers_handler",
- "target": "handlers_handler_refreshtoken",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L221",
- "weight": 1.0,
- "_src": "handlers_handler",
- "_tgt": "handlers_handler_getme",
- "source": "handlers_handler",
- "target": "handlers_handler_getme",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L237",
- "weight": 1.0,
- "_src": "handlers_handler",
- "_tgt": "handlers_handler_logout",
- "source": "handlers_handler",
- "target": "handlers_handler_logout",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L241",
- "weight": 1.0,
- "_src": "handlers_handler",
- "_tgt": "handlers_handler_listproviders",
- "source": "handlers_handler",
- "target": "handlers_handler_listproviders",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L260",
- "weight": 1.0,
- "_src": "handlers_handler",
- "_tgt": "handlers_handler_googleauth",
- "source": "handlers_handler",
- "target": "handlers_handler_googleauth",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L273",
- "weight": 1.0,
- "_src": "handlers_handler",
- "_tgt": "handlers_handler_googlecallback",
- "source": "handlers_handler",
- "target": "handlers_handler_googlecallback",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L314",
- "weight": 1.0,
- "_src": "handlers_handler",
- "_tgt": "handlers_handler_getsubscription",
- "source": "handlers_handler",
- "target": "handlers_handler_getsubscription",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L329",
- "weight": 1.0,
- "_src": "handlers_handler",
- "_tgt": "handlers_handler_createcheckoutsession",
- "source": "handlers_handler",
- "target": "handlers_handler_createcheckoutsession",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L361",
- "weight": 1.0,
- "_src": "handlers_handler",
- "_tgt": "handlers_handler_refreshsubscription",
- "source": "handlers_handler",
- "target": "handlers_handler_refreshsubscription",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L381",
- "weight": 1.0,
- "_src": "handlers_handler",
- "_tgt": "handlers_handler_listplans",
- "source": "handlers_handler",
- "target": "handlers_handler_listplans",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L414",
- "weight": 1.0,
- "_src": "handlers_handler",
- "_tgt": "handlers_handler_stripewebhook",
- "source": "handlers_handler",
- "target": "handlers_handler_stripewebhook",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L435",
- "weight": 1.0,
- "_src": "handlers_handler",
- "_tgt": "handlers_handler_requireauth",
- "source": "handlers_handler",
- "target": "handlers_handler_requireauth",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L462",
- "weight": 1.0,
- "_src": "handlers_handler",
- "_tgt": "handlers_handler_verifybearertoken",
- "source": "handlers_handler",
- "target": "handlers_handler_verifybearertoken",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L472",
- "weight": 1.0,
- "_src": "handlers_handler",
- "_tgt": "handlers_handler_claimsfromcontext",
- "source": "handlers_handler",
- "target": "handlers_handler_claimsfromcontext",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L469",
- "weight": 1.0,
- "_src": "handlers_handler_verifybearertoken",
- "_tgt": "handlers_handlers_new",
- "source": "handlers_handlers_new",
- "target": "handlers_handler_verifybearertoken",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L63",
- "weight": 1.0,
- "_src": "handlers_handlers_new",
- "_tgt": "auth_neon_newneonverifier",
- "source": "handlers_handlers_new",
- "target": "auth_neon_newneonverifier"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L68",
- "weight": 1.0,
- "_src": "handlers_handlers_new",
- "_tgt": "tenancy_service_newservice",
- "source": "handlers_handlers_new",
- "target": "tenancy_service_newservice"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L154",
- "weight": 1.0,
- "_src": "billing_service_createcheckoutsession",
- "_tgt": "handlers_handlers_new",
- "source": "handlers_handlers_new",
- "target": "billing_service_createcheckoutsession"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L223",
- "weight": 1.0,
- "_src": "billing_service_ensurecustomer",
- "_tgt": "handlers_handlers_new",
- "source": "handlers_handlers_new",
- "target": "billing_service_ensurecustomer"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L54",
- "weight": 1.0,
- "_src": "auth_neonverifier_verify",
- "_tgt": "handlers_handlers_new",
- "source": "handlers_handlers_new",
- "target": "auth_neonverifier_verify"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L55",
- "weight": 1.0,
- "_src": "db_pool_connect",
- "_tgt": "handlers_handlers_new",
- "source": "handlers_handlers_new",
- "target": "db_pool_connect"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L216",
- "weight": 1.0,
- "_src": "notifications_noopemailprovider_send",
- "_tgt": "handlers_handlers_new",
- "source": "handlers_handlers_new",
- "target": "notifications_noopemailprovider_send"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L230",
- "weight": 1.0,
- "_src": "notifications_smtpemailprovider_send",
- "_tgt": "handlers_handlers_new",
- "source": "handlers_handlers_new",
- "target": "notifications_smtpemailprovider_send"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L69",
- "weight": 1.0,
- "_src": "billing_service_newservice",
- "_tgt": "handlers_handlers_new",
- "source": "handlers_handlers_new",
- "target": "billing_service_newservice"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L231",
- "weight": 1.0,
- "_src": "billing_service_handlewebhook",
- "_tgt": "handlers_handlers_new",
- "source": "handlers_handlers_new",
- "target": "billing_service_handlewebhook"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L70",
- "weight": 1.0,
- "_src": "auth_verifier_verify",
- "_tgt": "handlers_handlers_new",
- "source": "handlers_handlers_new",
- "target": "auth_verifier_verify"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L49",
- "weight": 1.0,
- "_src": "api_server_newserver",
- "_tgt": "handlers_handlers_new",
- "source": "handlers_handlers_new",
- "target": "api_server_newserver"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L86",
- "weight": 1.0,
- "_src": "handlers_handler_registerroutes",
- "_tgt": "handlers_handler_requireauth",
- "source": "handlers_handler_registerroutes",
- "target": "handlers_handler_requireauth",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L105",
- "weight": 1.0,
- "_src": "handlers_handler_registerroutes",
- "_tgt": "handlers_admin_newadmindashboard",
- "source": "handlers_handler_registerroutes",
- "target": "handlers_admin_newadmindashboard"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L119",
- "weight": 1.0,
- "_src": "handlers_handler_sendmagiclink",
- "_tgt": "handlers_handlers_detectlocale",
- "source": "handlers_handler_sendmagiclink",
- "target": "handlers_handlers_detectlocale",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L200",
- "weight": 1.0,
- "_src": "handlers_handler_refreshtoken",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "handlers_handler_refreshtoken",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L266",
- "weight": 1.0,
- "_src": "handlers_handler_googleauth",
- "_tgt": "handlers_handlers_generatestate",
- "source": "handlers_handler_googleauth",
- "target": "handlers_handlers_generatestate",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L269",
- "weight": 1.0,
- "_src": "handlers_handler_googleauth",
- "_tgt": "handlers_handlers_oauthcookiesecure",
- "source": "handlers_handler_googleauth",
- "target": "handlers_handlers_oauthcookiesecure",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L282",
- "weight": 1.0,
- "_src": "handlers_handler_googlecallback",
- "_tgt": "handlers_handlers_oauthcookiesecure",
- "source": "handlers_handler_googlecallback",
- "target": "handlers_handlers_oauthcookiesecure",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L315",
- "weight": 1.0,
- "_src": "handlers_handler_getsubscription",
- "_tgt": "handlers_handler_claimsfromcontext",
- "source": "handlers_handler_getsubscription",
- "target": "handlers_handler_claimsfromcontext",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L330",
- "weight": 1.0,
- "_src": "handlers_handler_createcheckoutsession",
- "_tgt": "handlers_handler_claimsfromcontext",
- "source": "handlers_handler_createcheckoutsession",
- "target": "handlers_handler_claimsfromcontext",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L362",
- "weight": 1.0,
- "_src": "handlers_handler_refreshsubscription",
- "_tgt": "handlers_handler_claimsfromcontext",
- "source": "handlers_handler_refreshsubscription",
- "target": "handlers_handler_claimsfromcontext",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L450",
- "weight": 1.0,
- "_src": "handlers_handler_requireauth",
- "_tgt": "handlers_handler_verifybearertoken",
- "source": "handlers_handler_requireauth",
- "target": "handlers_handler_verifybearertoken",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/handlers/handlers.go",
- "source_location": "L503",
- "weight": 1.0,
- "_src": "handlers_handlers_oauthcookiesecure",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "handlers_handlers_oauthcookiesecure",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L13",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_handlers_admin_go",
- "_tgt": "handlers_admindashboard",
- "source": "apps_auth_service_internal_handlers_admin_go",
- "target": "handlers_admindashboard",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L18",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_handlers_admin_go",
- "_tgt": "handlers_admin_newadmindashboard",
- "source": "apps_auth_service_internal_handlers_admin_go",
- "target": "handlers_admin_newadmindashboard",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L23",
- "weight": 1.0,
- "_src": "handlers_admindashboard",
- "_tgt": "handlers_admindashboard_registerroutes",
- "source": "handlers_admindashboard",
- "target": "handlers_admindashboard_registerroutes",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L34",
- "weight": 1.0,
- "_src": "handlers_admindashboard",
- "_tgt": "handlers_admindashboard_getconfig",
- "source": "handlers_admindashboard",
- "target": "handlers_admindashboard_getconfig",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L54",
- "weight": 1.0,
- "_src": "handlers_admindashboard",
- "_tgt": "handlers_admindashboard_getprices",
- "source": "handlers_admindashboard",
- "target": "handlers_admindashboard_getprices",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L108",
- "weight": 1.0,
- "_src": "handlers_admindashboard",
- "_tgt": "handlers_admindashboard_getstats",
- "source": "handlers_admindashboard",
- "target": "handlers_admindashboard_getstats",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L124",
- "weight": 1.0,
- "_src": "handlers_admindashboard",
- "_tgt": "handlers_admindashboard_renderdashboard",
- "source": "handlers_admindashboard",
- "target": "handlers_admindashboard_renderdashboard",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/handlers/admin.go",
- "source_location": "L69",
- "weight": 1.0,
- "_src": "handlers_admindashboard_getprices",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "handlers_admindashboard_getprices",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L43",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_billing_service_go",
- "_tgt": "billing_service",
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_service",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L48",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_billing_service_go",
- "_tgt": "billing_checkoutsession",
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_checkoutsession",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L52",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_billing_service_go",
- "_tgt": "billing_subscriptionsnapshot",
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_subscriptionsnapshot",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L68",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_billing_service_go",
- "_tgt": "billing_paymentmethod",
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_paymentmethod",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L73",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_billing_service_go",
- "_tgt": "billing_useridentity",
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_useridentity",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L79",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_billing_service_go",
- "_tgt": "billing_usercustomermapping",
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_usercustomermapping",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L84",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_billing_service_go",
- "_tgt": "billing_service_newservice",
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_service_newservice",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L396",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_billing_service_go",
- "_tgt": "billing_service_normalizeplancode",
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_service_normalizeplancode",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L407",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_billing_service_go",
- "_tgt": "billing_service_normalizecurrency",
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_service_normalizecurrency",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L416",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_billing_service_go",
- "_tgt": "billing_service_usercustomerkey",
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_service_usercustomerkey",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L420",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_billing_service_go",
- "_tgt": "billing_service_customersnapshotkey",
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_service_customersnapshotkey",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L424",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_billing_service_go",
- "_tgt": "billing_service_unixptr",
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_service_unixptr",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L432",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_billing_service_go",
- "_tgt": "billing_service_subscriptionrank",
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_service_subscriptionrank",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L453",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_billing_service_go",
- "_tgt": "billing_service_extractcustomerid",
- "source": "apps_auth_service_internal_billing_service_go",
- "target": "billing_service_extractcustomerid",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L85",
- "weight": 1.0,
- "_src": "billing_service",
- "_tgt": "billing_service_getsubscription",
- "source": "billing_service",
- "target": "billing_service_getsubscription",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L111",
- "weight": 1.0,
- "_src": "billing_service",
- "_tgt": "billing_service_createcheckoutsession",
- "source": "billing_service",
- "target": "billing_service_createcheckoutsession",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L146",
- "weight": 1.0,
- "_src": "billing_service",
- "_tgt": "billing_service_refresh",
- "source": "billing_service",
- "target": "billing_service_refresh",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L218",
- "weight": 1.0,
- "_src": "billing_service",
- "_tgt": "billing_service_handlewebhook",
- "source": "billing_service",
- "target": "billing_service_handlewebhook",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L203",
- "weight": 1.0,
- "_src": "billing_service",
- "_tgt": "billing_service_ensurecustomer",
- "source": "billing_service",
- "target": "billing_service_ensurecustomer",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L234",
- "weight": 1.0,
- "_src": "billing_service",
- "_tgt": "billing_service_syncstripedatatokv",
- "source": "billing_service",
- "target": "billing_service_syncstripedatatokv",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L290",
- "weight": 1.0,
- "_src": "billing_service",
- "_tgt": "billing_service_storecustomermapping",
- "source": "billing_service",
- "target": "billing_service_storecustomermapping",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L298",
- "weight": 1.0,
- "_src": "billing_service",
- "_tgt": "billing_service_getcustomermapping",
- "source": "billing_service",
- "target": "billing_service_getcustomermapping",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L310",
- "weight": 1.0,
- "_src": "billing_service",
- "_tgt": "billing_service_getcustomersnapshot",
- "source": "billing_service",
- "target": "billing_service_getcustomersnapshot",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L319",
- "weight": 1.0,
- "_src": "billing_service",
- "_tgt": "billing_service_nonesnapshot",
- "source": "billing_service",
- "target": "billing_service_nonesnapshot",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L412",
- "weight": 1.0,
- "_src": "billing_service",
- "_tgt": "billing_service_priceforplan",
- "source": "billing_service",
- "target": "billing_service_priceforplan",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L360",
- "weight": 1.0,
- "_src": "billing_service",
- "_tgt": "billing_service_defaultplancode",
- "source": "billing_service",
- "target": "billing_service_defaultplancode",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L401",
- "weight": 1.0,
- "_src": "billing_service",
- "_tgt": "billing_service_plancodeforprice",
- "source": "billing_service",
- "target": "billing_service_plancodeforprice",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L381",
- "weight": 1.0,
- "_src": "billing_service",
- "_tgt": "billing_service_hasconfiguredprices",
- "source": "billing_service",
- "target": "billing_service_hasconfiguredprices",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L385",
- "weight": 1.0,
- "_src": "billing_service",
- "_tgt": "billing_service_checkoutavailableforplan",
- "source": "billing_service",
- "target": "billing_service_checkoutavailableforplan",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L44",
- "weight": 1.0,
- "_src": "apps_backend_internal_billing_service_go",
- "_tgt": "billing_service",
- "source": "billing_service",
- "target": "apps_backend_internal_billing_service_go",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L177",
- "weight": 1.0,
- "_src": "billing_service",
- "_tgt": "billing_service_createportalsession",
- "source": "billing_service",
- "target": "billing_service_createportalsession",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L279",
- "weight": 1.0,
- "_src": "billing_service",
- "_tgt": "billing_service_resolvewebhooktenant",
- "source": "billing_service",
- "target": "billing_service_resolvewebhooktenant",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L292",
- "weight": 1.0,
- "_src": "billing_service",
- "_tgt": "billing_service_syncpaddledata",
- "source": "billing_service",
- "target": "billing_service_syncpaddledata",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L62",
- "weight": 1.0,
- "_src": "apps_backend_internal_billing_service_go",
- "_tgt": "billing_service_newservice",
- "source": "billing_service_newservice",
- "target": "apps_backend_internal_billing_service_go",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L65",
- "weight": 1.0,
- "_src": "billing_service_newservice",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "billing_service_newservice",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L89",
- "weight": 1.0,
- "_src": "billing_service_getsubscription",
- "_tgt": "billing_service_getcustomermapping",
- "source": "billing_service_getsubscription",
- "target": "billing_service_getcustomermapping",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L94",
- "weight": 1.0,
- "_src": "billing_service_getsubscription",
- "_tgt": "billing_service_nonesnapshot",
- "source": "billing_service_getsubscription",
- "target": "billing_service_nonesnapshot",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L97",
- "weight": 1.0,
- "_src": "billing_service_getsubscription",
- "_tgt": "billing_service_getcustomersnapshot",
- "source": "billing_service_getsubscription",
- "target": "billing_service_getcustomersnapshot",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L107",
- "weight": 1.0,
- "_src": "billing_service_getsubscription",
- "_tgt": "billing_service_checkoutavailableforplan",
- "source": "billing_service_getsubscription",
- "target": "billing_service_checkoutavailableforplan",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L97",
- "weight": 1.0,
- "_src": "billing_service_getsubscription",
- "_tgt": "billing_service_tosnapshot",
- "source": "billing_service_getsubscription",
- "target": "billing_service_tosnapshot",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L100",
- "weight": 1.0,
- "_src": "billing_service_getsubscription",
- "_tgt": "billing_service_firstnonempty",
- "source": "billing_service_getsubscription",
- "target": "billing_service_firstnonempty",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L101",
- "weight": 1.0,
- "_src": "billing_service_getsubscription",
- "_tgt": "billing_service_normalizeplancode",
- "source": "billing_service_getsubscription",
- "target": "billing_service_normalizeplancode",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L120",
- "weight": 1.0,
- "_src": "billing_service_createcheckoutsession",
- "_tgt": "billing_service_priceforplan",
- "source": "billing_service_createcheckoutsession",
- "target": "billing_service_priceforplan",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L121",
- "weight": 1.0,
- "_src": "billing_service_createcheckoutsession",
- "_tgt": "billing_service_ensurecustomer",
- "source": "billing_service_createcheckoutsession",
- "target": "billing_service_ensurecustomer",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L124",
- "weight": 1.0,
- "_src": "billing_service_createcheckoutsession",
- "_tgt": "billing_service_checkoutavailable",
- "source": "billing_service_createcheckoutsession",
- "target": "billing_service_checkoutavailable",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L130",
- "weight": 1.0,
- "_src": "billing_service_createcheckoutsession",
- "_tgt": "billing_service_derefstring",
- "source": "billing_service_createcheckoutsession",
- "target": "billing_service_derefstring",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L131",
- "weight": 1.0,
- "_src": "billing_service_createcheckoutsession",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "billing_service_createcheckoutsession",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L162",
- "weight": 1.0,
- "_src": "billing_service_refresh",
- "_tgt": "billing_service_getcustomermapping",
- "source": "billing_service_refresh",
- "target": "billing_service_getcustomermapping",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L167",
- "weight": 1.0,
- "_src": "billing_service_refresh",
- "_tgt": "billing_service_nonesnapshot",
- "source": "billing_service_refresh",
- "target": "billing_service_nonesnapshot",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L172",
- "weight": 1.0,
- "_src": "billing_service_refresh",
- "_tgt": "billing_service_syncstripedatatokv",
- "source": "billing_service_refresh",
- "target": "billing_service_syncstripedatatokv",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L155",
- "weight": 1.0,
- "_src": "billing_service_refresh",
- "_tgt": "billing_service_derefstring",
- "source": "billing_service_refresh",
- "target": "billing_service_derefstring",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L157",
- "weight": 1.0,
- "_src": "billing_service_refresh",
- "_tgt": "billing_service_tosnapshot",
- "source": "billing_service_refresh",
- "target": "billing_service_tosnapshot",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L161",
- "weight": 1.0,
- "_src": "billing_service_refresh",
- "_tgt": "billing_service_normalizeplancode",
- "source": "billing_service_refresh",
- "target": "billing_service_normalizeplancode",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L169",
- "weight": 1.0,
- "_src": "billing_service_refresh",
- "_tgt": "billing_service_syncpaddledata",
- "source": "billing_service_refresh",
- "target": "billing_service_syncpaddledata",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L194",
- "weight": 1.0,
- "_src": "billing_service_handlewebhook",
- "_tgt": "billing_service_extractcustomerid",
- "source": "billing_service_handlewebhook",
- "target": "billing_service_extractcustomerid",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L199",
- "weight": 1.0,
- "_src": "billing_service_handlewebhook",
- "_tgt": "billing_service_syncstripedatatokv",
- "source": "billing_service_handlewebhook",
- "target": "billing_service_syncstripedatatokv",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L247",
- "weight": 1.0,
- "_src": "billing_service_handlewebhook",
- "_tgt": "billing_service_resolvewebhooktenant",
- "source": "billing_service_handlewebhook",
- "target": "billing_service_resolvewebhooktenant",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L263",
- "weight": 1.0,
- "_src": "billing_service_handlewebhook",
- "_tgt": "billing_service_derefstring",
- "source": "billing_service_handlewebhook",
- "target": "billing_service_derefstring",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L270",
- "weight": 1.0,
- "_src": "billing_service_handlewebhook",
- "_tgt": "billing_service_firstnonempty",
- "source": "billing_service_handlewebhook",
- "target": "billing_service_firstnonempty",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L275",
- "weight": 1.0,
- "_src": "billing_service_handlewebhook",
- "_tgt": "billing_service_syncpaddledata",
- "source": "billing_service_handlewebhook",
- "target": "billing_service_syncpaddledata",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L222",
- "weight": 1.0,
- "_src": "billing_service_handlewebhook",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "billing_service_handlewebhook",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L204",
- "weight": 1.0,
- "_src": "billing_service_ensurecustomer",
- "_tgt": "billing_service_getcustomermapping",
- "source": "billing_service_ensurecustomer",
- "target": "billing_service_getcustomermapping",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L228",
- "weight": 1.0,
- "_src": "billing_service_ensurecustomer",
- "_tgt": "billing_service_storecustomermapping",
- "source": "billing_service_ensurecustomer",
- "target": "billing_service_storecustomermapping",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L219",
- "weight": 1.0,
- "_src": "billing_service_ensurecustomer",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "billing_service_ensurecustomer",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L245",
- "weight": 1.0,
- "_src": "billing_service_syncstripedatatokv",
- "_tgt": "billing_service_subscriptionrank",
- "source": "billing_service_syncstripedatatokv",
- "target": "billing_service_subscriptionrank",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L270",
- "weight": 1.0,
- "_src": "billing_service_syncstripedatatokv",
- "_tgt": "billing_service_plancodeforprice",
- "source": "billing_service_syncstripedatatokv",
- "target": "billing_service_plancodeforprice",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L271",
- "weight": 1.0,
- "_src": "billing_service_syncstripedatatokv",
- "_tgt": "billing_service_normalizecurrency",
- "source": "billing_service_syncstripedatatokv",
- "target": "billing_service_normalizecurrency",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L273",
- "weight": 1.0,
- "_src": "billing_service_syncstripedatatokv",
- "_tgt": "billing_service_unixptr",
- "source": "billing_service_syncstripedatatokv",
- "target": "billing_service_unixptr",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L284",
- "weight": 1.0,
- "_src": "billing_service_syncstripedatatokv",
- "_tgt": "billing_service_customersnapshotkey",
- "source": "billing_service_syncstripedatatokv",
- "target": "billing_service_customersnapshotkey",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L295",
- "weight": 1.0,
- "_src": "billing_service_storecustomermapping",
- "_tgt": "billing_service_usercustomerkey",
- "source": "billing_service_storecustomermapping",
- "target": "billing_service_usercustomerkey",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L300",
- "weight": 1.0,
- "_src": "billing_service_getcustomermapping",
- "_tgt": "billing_service_usercustomerkey",
- "source": "billing_service_getcustomermapping",
- "target": "billing_service_usercustomerkey",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L312",
- "weight": 1.0,
- "_src": "billing_service_getcustomersnapshot",
- "_tgt": "billing_service_customersnapshotkey",
- "source": "billing_service_getcustomersnapshot",
- "target": "billing_service_customersnapshotkey",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L413",
- "weight": 1.0,
- "_src": "billing_service_priceforplan",
- "_tgt": "billing_service_normalizeplancode",
- "source": "billing_service_priceforplan",
- "target": "billing_service_normalizeplancode",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L330",
- "weight": 1.0,
- "_src": "billing_service_priceforplan",
- "_tgt": "billing_service_defaultplancode",
- "source": "billing_service_priceforplan",
- "target": "billing_service_defaultplancode",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L417",
- "weight": 1.0,
- "_src": "billing_service_priceforplan",
- "_tgt": "billing_service_normalizecurrency",
- "source": "billing_service_priceforplan",
- "target": "billing_service_normalizecurrency",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L392",
- "weight": 1.0,
- "_src": "billing_service_checkoutavailableforplan",
- "_tgt": "billing_service_priceforplan",
- "source": "billing_service_priceforplan",
- "target": "billing_service_checkoutavailableforplan",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L328",
- "weight": 1.0,
- "_src": "billing_service_priceforplan",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "billing_service_priceforplan",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L363",
- "weight": 1.0,
- "_src": "billing_service_defaultplancode",
- "_tgt": "billing_service_normalizeplancode",
- "source": "billing_service_defaultplancode",
- "target": "billing_service_normalizeplancode",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L382",
- "weight": 1.0,
- "_src": "billing_service_hasconfiguredprices",
- "_tgt": "billing_service_defaultplancode",
- "source": "billing_service_defaultplancode",
- "target": "billing_service_hasconfiguredprices",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L362",
- "weight": 1.0,
- "_src": "billing_service_defaultplancode",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "billing_service_defaultplancode",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L405",
- "weight": 1.0,
- "_src": "billing_service_plancodeforprice",
- "_tgt": "billing_service_normalizeplancode",
- "source": "billing_service_plancodeforprice",
- "target": "billing_service_normalizeplancode",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L339",
- "weight": 1.0,
- "_src": "billing_service_syncpaddledata",
- "_tgt": "billing_service_plancodeforprice",
- "source": "billing_service_plancodeforprice",
- "target": "billing_service_syncpaddledata",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L374",
- "weight": 1.0,
- "_src": "billing_service_plancodeforprice",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "billing_service_plancodeforprice",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L390",
- "weight": 1.0,
- "_src": "billing_service_checkoutavailableforplan",
- "_tgt": "billing_service_hasconfiguredprices",
- "source": "billing_service_hasconfiguredprices",
- "target": "billing_service_checkoutavailableforplan",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L389",
- "weight": 1.0,
- "_src": "billing_service_checkoutavailableforplan",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "billing_service_checkoutavailableforplan",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L466",
- "weight": 1.0,
- "_src": "apps_backend_internal_billing_service_go",
- "_tgt": "billing_service_normalizeplancode",
- "source": "billing_service_normalizeplancode",
- "target": "apps_backend_internal_billing_service_go",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L324",
- "weight": 1.0,
- "_src": "billing_service_syncpaddledata",
- "_tgt": "billing_service_normalizeplancode",
- "source": "billing_service_normalizeplancode",
- "target": "billing_service_syncpaddledata",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L355",
- "weight": 1.0,
- "_src": "billing_service_tosnapshot",
- "_tgt": "billing_service_normalizeplancode",
- "source": "billing_service_normalizeplancode",
- "target": "billing_service_tosnapshot",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L391",
- "weight": 1.0,
- "_src": "billing_service_entitlementsforplan",
- "_tgt": "billing_service_normalizeplancode",
- "source": "billing_service_normalizeplancode",
- "target": "billing_service_entitlementsforplan",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L447",
- "weight": 1.0,
- "_src": "billing_service_displaypricesforplan",
- "_tgt": "billing_service_normalizeplancode",
- "source": "billing_service_normalizeplancode",
- "target": "billing_service_displaypricesforplan",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L501",
- "weight": 1.0,
- "_src": "billing_service_checkoutavailable",
- "_tgt": "billing_service_normalizeplancode",
- "source": "billing_service_normalizeplancode",
- "target": "billing_service_checkoutavailable",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L467",
- "weight": 1.0,
- "_src": "billing_service_normalizeplancode",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "billing_service_normalizeplancode",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L477",
- "weight": 1.0,
- "_src": "apps_backend_internal_billing_service_go",
- "_tgt": "billing_service_normalizecurrency",
- "source": "billing_service_normalizecurrency",
- "target": "apps_backend_internal_billing_service_go",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L333",
- "weight": 1.0,
- "_src": "billing_service_syncpaddledata",
- "_tgt": "billing_service_normalizecurrency",
- "source": "billing_service_normalizecurrency",
- "target": "billing_service_syncpaddledata",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L359",
- "weight": 1.0,
- "_src": "billing_service_tosnapshot",
- "_tgt": "billing_service_normalizecurrency",
- "source": "billing_service_normalizecurrency",
- "target": "billing_service_tosnapshot",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service.go",
- "source_location": "L408",
- "weight": 1.0,
- "_src": "billing_service_normalizecurrency",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "billing_service_normalizecurrency",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L41",
- "weight": 1.0,
- "_src": "billing_service_test_testkvkeyshape",
- "_tgt": "billing_service_usercustomerkey",
- "source": "billing_service_usercustomerkey",
- "target": "billing_service_test_testkvkeyshape"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L44",
- "weight": 1.0,
- "_src": "billing_service_test_testkvkeyshape",
- "_tgt": "billing_service_customersnapshotkey",
- "source": "billing_service_customersnapshotkey",
- "target": "billing_service_test_testkvkeyshape"
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L429",
- "weight": 1.0,
- "_src": "apps_backend_internal_billing_service_go",
- "_tgt": "billing_service_subscriptionrank",
- "source": "billing_service_subscriptionrank",
- "target": "apps_backend_internal_billing_service_go",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L309",
- "weight": 1.0,
- "_src": "billing_service_syncpaddledata",
- "_tgt": "billing_service_subscriptionrank",
- "source": "billing_service_subscriptionrank",
- "target": "billing_service_syncpaddledata",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L10",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_billing_service_test_go",
- "_tgt": "billing_service_test_testpriceforplanusesconfiguredplancodesonly",
- "source": "apps_auth_service_internal_billing_service_test_go",
- "target": "billing_service_test_testpriceforplanusesconfiguredplancodesonly",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L40",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_billing_service_test_go",
- "_tgt": "billing_service_test_testkvkeyshape",
- "source": "apps_auth_service_internal_billing_service_test_go",
- "target": "billing_service_test_testkvkeyshape",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L49",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_billing_service_test_go",
- "_tgt": "billing_service_test_testcheckoutavailableforplanrequiressecret",
- "source": "apps_auth_service_internal_billing_service_test_go",
- "target": "billing_service_test_testcheckoutavailableforplanrequiressecret",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L61",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_billing_service_test_go",
- "_tgt": "billing_service_test_testcheckoutavailableforplanrequiresconfiguredplan",
- "source": "apps_auth_service_internal_billing_service_test_go",
- "target": "billing_service_test_testcheckoutavailableforplanrequiresconfiguredplan",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L11",
- "weight": 1.0,
- "_src": "billing_service_test_testpriceforplanusesconfiguredplancodesonly",
- "_tgt": "tenancy_service_newservice",
- "source": "billing_service_test_testpriceforplanusesconfiguredplancodesonly",
- "target": "tenancy_service_newservice"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L50",
- "weight": 1.0,
- "_src": "billing_service_test_testcheckoutavailableforplanrequiressecret",
- "_tgt": "tenancy_service_newservice",
- "source": "billing_service_test_testcheckoutavailableforplanrequiressecret",
- "target": "tenancy_service_newservice"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/billing/service_test.go",
- "source_location": "L62",
- "weight": 1.0,
- "_src": "billing_service_test_testcheckoutavailableforplanrequiresconfiguredplan",
- "_tgt": "tenancy_service_newservice",
- "source": "billing_service_test_testcheckoutavailableforplanrequiresconfiguredplan",
- "target": "tenancy_service_newservice"
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L23",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_auth_service_go",
- "_tgt": "auth_service",
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "auth_service",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L30",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_auth_service_go",
- "_tgt": "auth_tokenpair",
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "auth_tokenpair",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L37",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_auth_service_go",
- "_tgt": "auth_claims",
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "auth_claims",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L46",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_auth_service_go",
- "_tgt": "auth_service_newservice",
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "auth_service_newservice",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L329",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_auth_service_go",
- "_tgt": "auth_service_generaterandomtoken",
- "source": "apps_auth_service_internal_auth_service_go",
- "target": "auth_service_generaterandomtoken",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L55",
- "weight": 1.0,
- "_src": "auth_service",
- "_tgt": "auth_service_generatemagiclink",
- "source": "auth_service",
- "target": "auth_service_generatemagiclink",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L93",
- "weight": 1.0,
- "_src": "auth_service",
- "_tgt": "auth_service_verifymagiclink",
- "source": "auth_service",
- "target": "auth_service_verifymagiclink",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L127",
- "weight": 1.0,
- "_src": "auth_service",
- "_tgt": "auth_service_oauthloginorcreate",
- "source": "auth_service",
- "target": "auth_service_oauthloginorcreate",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L170",
- "weight": 1.0,
- "_src": "auth_service",
- "_tgt": "auth_service_registerwithpassword",
- "source": "auth_service",
- "target": "auth_service_registerwithpassword",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L201",
- "weight": 1.0,
- "_src": "auth_service",
- "_tgt": "auth_service_loginwithpassword",
- "source": "auth_service",
- "target": "auth_service_loginwithpassword",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L221",
- "weight": 1.0,
- "_src": "auth_service",
- "_tgt": "auth_service_generatetokens",
- "source": "auth_service",
- "target": "auth_service_generatetokens",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L226",
- "weight": 1.0,
- "_src": "auth_service",
- "_tgt": "auth_service_generatetokensat",
- "source": "auth_service",
- "target": "auth_service_generatetokensat",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L250",
- "weight": 1.0,
- "_src": "auth_service",
- "_tgt": "auth_service_verifytoken",
- "source": "auth_service",
- "target": "auth_service_verifytoken",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L254",
- "weight": 1.0,
- "_src": "auth_service",
- "_tgt": "auth_service_verifyrefreshtoken",
- "source": "auth_service",
- "target": "auth_service_verifyrefreshtoken",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L258",
- "weight": 1.0,
- "_src": "auth_service",
- "_tgt": "auth_service_refreshtokens",
- "source": "auth_service",
- "target": "auth_service_refreshtokens",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L286",
- "weight": 1.0,
- "_src": "auth_service",
- "_tgt": "auth_service_verifytokenoftype",
- "source": "auth_service",
- "target": "auth_service_verifytokenoftype",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L308",
- "weight": 1.0,
- "_src": "auth_service",
- "_tgt": "auth_service_signtoken",
- "source": "auth_service",
- "target": "auth_service_signtoken",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L72",
- "weight": 1.0,
- "_src": "auth_service_generatemagiclink",
- "_tgt": "auth_service_generaterandomtoken",
- "source": "auth_service_generatemagiclink",
- "target": "auth_service_generaterandomtoken",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L124",
- "weight": 1.0,
- "_src": "auth_service_verifymagiclink",
- "_tgt": "auth_service_generatetokens",
- "source": "auth_service_verifymagiclink",
- "target": "auth_service_generatetokens",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L167",
- "weight": 1.0,
- "_src": "auth_service_oauthloginorcreate",
- "_tgt": "auth_service_generatetokens",
- "source": "auth_service_oauthloginorcreate",
- "target": "auth_service_generatetokens",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L198",
- "weight": 1.0,
- "_src": "auth_service_registerwithpassword",
- "_tgt": "auth_service_generatetokens",
- "source": "auth_service_registerwithpassword",
- "target": "auth_service_generatetokens",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L218",
- "weight": 1.0,
- "_src": "auth_service_loginwithpassword",
- "_tgt": "auth_service_generatetokens",
- "source": "auth_service_loginwithpassword",
- "target": "auth_service_generatetokens",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L223",
- "weight": 1.0,
- "_src": "auth_service_generatetokens",
- "_tgt": "auth_service_generatetokensat",
- "source": "auth_service_generatetokens",
- "target": "auth_service_generatetokensat",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L283",
- "weight": 1.0,
- "_src": "auth_service_refreshtokens",
- "_tgt": "auth_service_generatetokens",
- "source": "auth_service_generatetokens",
- "target": "auth_service_refreshtokens",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L232",
- "weight": 1.0,
- "_src": "auth_service_generatetokensat",
- "_tgt": "auth_service_signtoken",
- "source": "auth_service_generatetokensat",
- "target": "auth_service_signtoken",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L251",
- "weight": 1.0,
- "_src": "auth_service_verifytoken",
- "_tgt": "auth_service_verifytokenoftype",
- "source": "auth_service_verifytoken",
- "target": "auth_service_verifytokenoftype",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L255",
- "weight": 1.0,
- "_src": "auth_service_verifyrefreshtoken",
- "_tgt": "auth_service_verifytokenoftype",
- "source": "auth_service_verifyrefreshtoken",
- "target": "auth_service_verifytokenoftype",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L259",
- "weight": 1.0,
- "_src": "auth_service_refreshtokens",
- "_tgt": "auth_service_verifyrefreshtoken",
- "source": "auth_service_verifyrefreshtoken",
- "target": "auth_service_refreshtokens",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service.go",
- "source_location": "L319",
- "weight": 1.0,
- "_src": "auth_service_signtoken",
- "_tgt": "auth_service_generaterandomtoken",
- "source": "auth_service_signtoken",
- "target": "auth_service_generaterandomtoken",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L15",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_auth_neon_go",
- "_tgt": "auth_neonverifier",
- "source": "apps_auth_service_internal_auth_neon_go",
- "target": "auth_neonverifier",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L22",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_auth_neon_go",
- "_tgt": "auth_neon_newneonverifier",
- "source": "apps_auth_service_internal_auth_neon_go",
- "target": "auth_neon_newneonverifier",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L42",
- "weight": 1.0,
- "_src": "auth_neonverifier",
- "_tgt": "auth_neonverifier_enabled",
- "source": "auth_neonverifier",
- "target": "auth_neonverifier_enabled",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L46",
- "weight": 1.0,
- "_src": "auth_neonverifier",
- "_tgt": "auth_neonverifier_close",
- "source": "auth_neonverifier",
- "target": "auth_neonverifier_close",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L52",
- "weight": 1.0,
- "_src": "auth_neonverifier",
- "_tgt": "auth_neonverifier_verify",
- "source": "auth_neonverifier",
- "target": "auth_neonverifier_verify",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L23",
- "weight": 1.0,
- "_src": "auth_neon_newneonverifier",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "auth_neon_newneonverifier",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L53",
- "weight": 1.0,
- "_src": "auth_neonverifier_verify",
- "_tgt": "auth_neonverifier_enabled",
- "source": "auth_neonverifier_enabled",
- "target": "auth_neonverifier_verify",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/auth/neon.go",
- "source_location": "L75",
- "weight": 1.0,
- "_src": "auth_neonverifier_verify",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "auth_neonverifier_verify",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L13",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_auth_service_test_go",
- "_tgt": "auth_service_test_testgeneratetokensproducesverifiableaccessandrefreshtokens",
- "source": "apps_auth_service_internal_auth_service_test_go",
- "target": "auth_service_test_testgeneratetokensproducesverifiableaccessandrefreshtokens",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L51",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_auth_service_test_go",
- "_tgt": "auth_service_test_testrefreshtokensreturnsrotatedpair",
- "source": "apps_auth_service_internal_auth_service_test_go",
- "target": "auth_service_test_testrefreshtokensreturnsrotatedpair",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L82",
- "weight": 1.0,
- "_src": "apps_auth_service_internal_auth_service_test_go",
- "_tgt": "auth_service_test_testrefreshtokensrejectsinvalidtoken",
- "source": "apps_auth_service_internal_auth_service_test_go",
- "target": "auth_service_test_testrefreshtokensrejectsinvalidtoken",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L14",
- "weight": 1.0,
- "_src": "auth_service_test_testgeneratetokensproducesverifiableaccessandrefreshtokens",
- "_tgt": "tenancy_service_newservice",
- "source": "auth_service_test_testgeneratetokensproducesverifiableaccessandrefreshtokens",
- "target": "tenancy_service_newservice"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L52",
- "weight": 1.0,
- "_src": "auth_service_test_testrefreshtokensreturnsrotatedpair",
- "_tgt": "tenancy_service_newservice",
- "source": "auth_service_test_testrefreshtokensreturnsrotatedpair",
- "target": "tenancy_service_newservice"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/auth-service/internal/auth/service_test.go",
- "source_location": "L83",
- "weight": 1.0,
- "_src": "auth_service_test_testrefreshtokensrejectsinvalidtoken",
- "_tgt": "tenancy_service_newservice",
- "source": "auth_service_test_testrefreshtokensrejectsinvalidtoken",
- "target": "tenancy_service_newservice"
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L22",
- "weight": 1.0,
- "_src": "apps_backend_internal_catalog_service_go",
- "_tgt": "catalog_service",
- "source": "apps_backend_internal_catalog_service_go",
- "target": "catalog_service",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L26",
- "weight": 1.0,
- "_src": "apps_backend_internal_catalog_service_go",
- "_tgt": "catalog_service_newservice",
- "source": "apps_backend_internal_catalog_service_go",
- "target": "catalog_service_newservice",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L34",
- "weight": 1.0,
- "_src": "catalog_service",
- "_tgt": "catalog_service_listlocations",
- "source": "catalog_service",
- "target": "catalog_service_listlocations",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L60",
- "weight": 1.0,
- "_src": "catalog_service",
- "_tgt": "catalog_service_createlocation",
- "source": "catalog_service",
- "target": "catalog_service_createlocation",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L88",
- "weight": 1.0,
- "_src": "catalog_service",
- "_tgt": "catalog_service_updatelocation",
- "source": "catalog_service",
- "target": "catalog_service_updatelocation",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L124",
- "weight": 1.0,
- "_src": "catalog_service",
- "_tgt": "catalog_service_deletelocation",
- "source": "catalog_service",
- "target": "catalog_service_deletelocation",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L145",
- "weight": 1.0,
- "_src": "catalog_service",
- "_tgt": "catalog_service_listblockeddays",
- "source": "catalog_service",
- "target": "catalog_service_listblockeddays",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L171",
- "weight": 1.0,
- "_src": "catalog_service",
- "_tgt": "catalog_service_createblockedday",
- "source": "catalog_service",
- "target": "catalog_service_createblockedday",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L207",
- "weight": 1.0,
- "_src": "catalog_service",
- "_tgt": "catalog_service_updateblockedday",
- "source": "catalog_service",
- "target": "catalog_service_updateblockedday",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L254",
- "weight": 1.0,
- "_src": "catalog_service",
- "_tgt": "catalog_service_deleteblockedday",
- "source": "catalog_service",
- "target": "catalog_service_deleteblockedday",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L284",
- "weight": 1.0,
- "_src": "catalog_service",
- "_tgt": "catalog_service_listcustomers",
- "source": "catalog_service",
- "target": "catalog_service_listcustomers",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L319",
- "weight": 1.0,
- "_src": "catalog_service",
- "_tgt": "catalog_service_createcustomer",
- "source": "catalog_service",
- "target": "catalog_service_createcustomer",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L356",
- "weight": 1.0,
- "_src": "catalog_service",
- "_tgt": "catalog_service_updatecustomer",
- "source": "catalog_service",
- "target": "catalog_service_updatecustomer",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L410",
- "weight": 1.0,
- "_src": "catalog_service",
- "_tgt": "catalog_service_deletecustomer",
- "source": "catalog_service",
- "target": "catalog_service_deletecustomer",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L431",
- "weight": 1.0,
- "_src": "catalog_service",
- "_tgt": "catalog_service_listworkinghours",
- "source": "catalog_service",
- "target": "catalog_service_listworkinghours",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/catalog/service.go",
- "source_location": "L454",
- "weight": 1.0,
- "_src": "catalog_service",
- "_tgt": "catalog_service_updateworkinghours",
- "source": "catalog_service",
- "target": "catalog_service_updateworkinghours",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L12",
- "weight": 1.0,
- "_src": "apps_backend_internal_httpx_middleware_go",
- "_tgt": "httpx_middleware_securityheaders",
- "source": "apps_backend_internal_httpx_middleware_go",
- "target": "httpx_middleware_securityheaders",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L22",
- "weight": 1.0,
- "_src": "apps_backend_internal_httpx_middleware_go",
- "_tgt": "httpx_visitor",
- "source": "apps_backend_internal_httpx_middleware_go",
- "target": "httpx_visitor",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L27",
- "weight": 1.0,
- "_src": "apps_backend_internal_httpx_middleware_go",
- "_tgt": "httpx_ratelimiter",
- "source": "apps_backend_internal_httpx_middleware_go",
- "target": "httpx_ratelimiter",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L34",
- "weight": 1.0,
- "_src": "apps_backend_internal_httpx_middleware_go",
- "_tgt": "httpx_middleware_newratelimiter",
- "source": "apps_backend_internal_httpx_middleware_go",
- "target": "httpx_middleware_newratelimiter",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L60",
- "weight": 1.0,
- "_src": "api_server_newserver",
- "_tgt": "httpx_middleware_securityheaders",
- "source": "httpx_middleware_securityheaders",
- "target": "api_server_newserver"
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L42",
- "weight": 1.0,
- "_src": "httpx_ratelimiter",
- "_tgt": "httpx_ratelimiter_middleware",
- "source": "httpx_ratelimiter",
- "target": "httpx_ratelimiter_middleware",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L59",
- "weight": 1.0,
- "_src": "httpx_ratelimiter",
- "_tgt": "httpx_ratelimiter_getvisitor",
- "source": "httpx_ratelimiter",
- "target": "httpx_ratelimiter_getvisitor",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L77",
- "weight": 1.0,
- "_src": "httpx_ratelimiter",
- "_tgt": "httpx_ratelimiter_cleanuploop",
- "source": "httpx_ratelimiter",
- "target": "httpx_ratelimiter_cleanuploop",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L46",
- "weight": 1.0,
- "_src": "api_server_newserver",
- "_tgt": "httpx_middleware_newratelimiter",
- "source": "httpx_middleware_newratelimiter",
- "target": "api_server_newserver"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L43",
- "weight": 1.0,
- "_src": "httpx_ratelimiter_middleware",
- "_tgt": "httpx_ratelimiter_cleanuploop",
- "source": "httpx_ratelimiter_middleware",
- "target": "httpx_ratelimiter_cleanuploop",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/httpx/middleware.go",
- "source_location": "L50",
- "weight": 1.0,
- "_src": "httpx_ratelimiter_middleware",
- "_tgt": "httpx_ratelimiter_getvisitor",
- "source": "httpx_ratelimiter_middleware",
- "target": "httpx_ratelimiter_getvisitor",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L16",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_repository",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_repository",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L74",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_tenantrecord",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_tenantrecord",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L88",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_tenantmembershiprecord",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_tenantmembershiprecord",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L94",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_createtenantforuserparams",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_createtenantforuserparams",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L115",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_brandprofilerecord",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_brandprofilerecord",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L124",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_availabilityblockrecord",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_availabilityblockrecord",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L131",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_teaminviterecord",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_teaminviterecord",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L136",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_servicerecord",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_servicerecord",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L146",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_availabilityrulerecord",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_availabilityrulerecord",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L155",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_classsessionrecord",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_classsessionrecord",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L166",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_bookingrecord",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_bookingrecord",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L181",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_createbookingparams",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_createbookingparams",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L197",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_createdbooking",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_createdbooking",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L203",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_waitlistentryparams",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_waitlistentryparams",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L211",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_dashboardmetrics",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_dashboardmetrics",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L217",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_reminderjobparams",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_reminderjobparams",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L224",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_reminderjobrecord",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_reminderjobrecord",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L240",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_notificationdeliverylogparams",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_notificationdeliverylogparams",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L251",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_billingsnapshotrecord",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_billingsnapshotrecord",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L269",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_locationrecord",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_locationrecord",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L277",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_createlocationparams",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_createlocationparams",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L283",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_updatelocationparams",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_updatelocationparams",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L289",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_blockeddayrecord",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_blockeddayrecord",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L300",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_createblockeddayparams",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_createblockeddayparams",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L309",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_updateblockeddayparams",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_updateblockeddayparams",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L317",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_customerrecord",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_customerrecord",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L328",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_createcustomerparams",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_createcustomerparams",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L337",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_updatecustomerparams",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_updatecustomerparams",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L346",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_workinghoursrecord",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_workinghoursrecord",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L354",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_updateworkinghoursparams",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_updateworkinghoursparams",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L360",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_pgrepository",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_pgrepository",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L364",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_repository_newrepository",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_repository_newrepository",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1283",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_memoryrepository",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_memoryrepository",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1302",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_repository_newmemoryrepository",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_repository_newmemoryrepository",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2043",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_repository_reference",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_repository_reference",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2047",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_repository_stringptr",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_repository_stringptr",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2051",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_repository_maxint",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_repository_maxint",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2058",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_repository_firstnonempty",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_repository_firstnonempty",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2067",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_repository_go",
- "_tgt": "db_repository_defaultavailabilityblocks",
- "source": "apps_backend_internal_db_repository_go",
- "target": "db_repository_defaultavailabilityblocks",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L374",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_gettenantbyslug",
- "source": "db_pgrepository",
- "target": "db_pgrepository_gettenantbyslug",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L399",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_gettenantbyid",
- "source": "db_pgrepository",
- "target": "db_pgrepository_gettenantbyid",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L424",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_gettenantbybillingcustomerid",
- "source": "db_pgrepository",
- "target": "db_pgrepository_gettenantbybillingcustomerid",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L449",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_ensureuseridentity",
- "source": "db_pgrepository",
- "target": "db_pgrepository_ensureuseridentity",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L461",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_createtenantforuser",
- "source": "db_pgrepository",
- "target": "db_pgrepository_createtenantforuser",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L603",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_getbrandprofile",
- "source": "db_pgrepository",
- "target": "db_pgrepository_getbrandprofile",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L620",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_gettenantmembershipbyuserid",
- "source": "db_pgrepository",
- "target": "db_pgrepository_gettenantmembershipbyuserid",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L652",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_listservicesbytenant",
- "source": "db_pgrepository",
- "target": "db_pgrepository_listservicesbytenant",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L683",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_listavailabilityrulesbytenant",
- "source": "db_pgrepository",
- "target": "db_pgrepository_listavailabilityrulesbytenant",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L713",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_listclasssessionsbytenant",
- "source": "db_pgrepository",
- "target": "db_pgrepository_listclasssessionsbytenant",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L747",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_listbookingsbytenantbetween",
- "source": "db_pgrepository",
- "target": "db_pgrepository_listbookingsbytenantbetween",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L784",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_createbooking",
- "source": "db_pgrepository",
- "target": "db_pgrepository_createbooking",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L812",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_appendwaitlistentry",
- "source": "db_pgrepository",
- "target": "db_pgrepository_appendwaitlistentry",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L820",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_createreminderjob",
- "source": "db_pgrepository",
- "target": "db_pgrepository_createreminderjob",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L828",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_listduereminderjobs",
- "source": "db_pgrepository",
- "target": "db_pgrepository_listduereminderjobs",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L870",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_markreminderjobdispatched",
- "source": "db_pgrepository",
- "target": "db_pgrepository_markreminderjobdispatched",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L879",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_createnotificationdeliverylog",
- "source": "db_pgrepository",
- "target": "db_pgrepository_createnotificationdeliverylog",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L891",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_getdashboardmetrics",
- "source": "db_pgrepository",
- "target": "db_pgrepository_getdashboardmetrics",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L914",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_getsubscriptionsnapshot",
- "source": "db_pgrepository",
- "target": "db_pgrepository_getsubscriptionsnapshot",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L941",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_upsertsubscriptionsnapshot",
- "source": "db_pgrepository",
- "target": "db_pgrepository_upsertsubscriptionsnapshot",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L969",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_updatetenantbillingcustomerid",
- "source": "db_pgrepository",
- "target": "db_pgrepository_updatetenantbillingcustomerid",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L978",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_updatetenantbillingstate",
- "source": "db_pgrepository",
- "target": "db_pgrepository_updatetenantbillingstate",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L987",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_recordbillingevent",
- "source": "db_pgrepository",
- "target": "db_pgrepository_recordbillingevent",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1003",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_listlocationsbytenant",
- "source": "db_pgrepository",
- "target": "db_pgrepository_listlocationsbytenant",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1026",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_getlocationbyid",
- "source": "db_pgrepository",
- "target": "db_pgrepository_getlocationbyid",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1036",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_createlocation",
- "source": "db_pgrepository",
- "target": "db_pgrepository_createlocation",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1046",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_updatelocation",
- "source": "db_pgrepository",
- "target": "db_pgrepository_updatelocation",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1059",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_deletelocation",
- "source": "db_pgrepository",
- "target": "db_pgrepository_deletelocation",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1068",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_listblockeddaysbytenant",
- "source": "db_pgrepository",
- "target": "db_pgrepository_listblockeddaysbytenant",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1091",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_createblockedday",
- "source": "db_pgrepository",
- "target": "db_pgrepository_createblockedday",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1101",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_updateblockedday",
- "source": "db_pgrepository",
- "target": "db_pgrepository_updateblockedday",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1115",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_deleteblockedday",
- "source": "db_pgrepository",
- "target": "db_pgrepository_deleteblockedday",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1124",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_listcustomersbytenant",
- "source": "db_pgrepository",
- "target": "db_pgrepository_listcustomersbytenant",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1148",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_getcustomerbyid",
- "source": "db_pgrepository",
- "target": "db_pgrepository_getcustomerbyid",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1158",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_getcustomerbyemail",
- "source": "db_pgrepository",
- "target": "db_pgrepository_getcustomerbyemail",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1168",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_createcustomer",
- "source": "db_pgrepository",
- "target": "db_pgrepository_createcustomer",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1178",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_updatecustomer",
- "source": "db_pgrepository",
- "target": "db_pgrepository_updatecustomer",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1193",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_deletecustomer",
- "source": "db_pgrepository",
- "target": "db_pgrepository_deletecustomer",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1198",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_getcustomerbookingscount",
- "source": "db_pgrepository",
- "target": "db_pgrepository_getcustomerbookingscount",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1207",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_getcustomerlastbooking",
- "source": "db_pgrepository",
- "target": "db_pgrepository_getcustomerlastbooking",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1220",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_getbookingbyreference",
- "source": "db_pgrepository",
- "target": "db_pgrepository_getbookingbyreference",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1232",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_updatebookingstatus",
- "source": "db_pgrepository",
- "target": "db_pgrepository_updatebookingstatus",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1239",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_reschedulebooking",
- "source": "db_pgrepository",
- "target": "db_pgrepository_reschedulebooking",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1250",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_listworkinghoursbytenant",
- "source": "db_pgrepository",
- "target": "db_pgrepository_listworkinghoursbytenant",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1273",
- "weight": 1.0,
- "_src": "db_pgrepository",
- "_tgt": "db_pgrepository_updateworkinghours",
- "source": "db_pgrepository",
- "target": "db_pgrepository_updateworkinghours",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L366",
- "weight": 1.0,
- "_src": "db_repository_newrepository",
- "_tgt": "db_repository_newmemoryrepository",
- "source": "db_repository_newrepository",
- "target": "db_repository_newmemoryrepository",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L39",
- "weight": 1.0,
- "_src": "api_server_newserver",
- "_tgt": "db_repository_newrepository",
- "source": "db_repository_newrepository",
- "target": "api_server_newserver"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L540",
- "weight": 1.0,
- "_src": "db_pgrepository_createtenantforuser",
- "_tgt": "db_repository_maxint",
- "source": "db_pgrepository_createtenantforuser",
- "target": "db_repository_maxint",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L561",
- "weight": 1.0,
- "_src": "db_pgrepository_createtenantforuser",
- "_tgt": "db_repository_defaultavailabilityblocks",
- "source": "db_pgrepository_createtenantforuser",
- "target": "db_repository_defaultavailabilityblocks",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L513",
- "weight": 1.0,
- "_src": "db_pgrepository_createtenantforuser",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "db_pgrepository_createtenantforuser",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L963",
- "weight": 1.0,
- "_src": "db_pgrepository_upsertsubscriptionsnapshot",
- "_tgt": "db_repository_firstnonempty",
- "source": "db_pgrepository_upsertsubscriptionsnapshot",
- "target": "db_repository_firstnonempty",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L992",
- "weight": 1.0,
- "_src": "db_pgrepository_recordbillingevent",
- "_tgt": "db_repository_firstnonempty",
- "source": "db_pgrepository_recordbillingevent",
- "target": "db_repository_firstnonempty",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1411",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_gettenantbyslug",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_gettenantbyslug",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1418",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_gettenantbyid",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_gettenantbyid",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1425",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_gettenantbybillingcustomerid",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_gettenantbybillingcustomerid",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1432",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_ensureuseridentity",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_ensureuseridentity",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1442",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_createtenantforuser",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_createtenantforuser",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1503",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_gettenantmembershipbyuserid",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_gettenantmembershipbyuserid",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1513",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_getbrandprofile",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_getbrandprofile",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1523",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_listservicesbytenant",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_listservicesbytenant",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1530",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_listavailabilityrulesbytenant",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_listavailabilityrulesbytenant",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1537",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_listclasssessionsbytenant",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_listclasssessionsbytenant",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1555",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_listbookingsbytenantbetween",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_listbookingsbytenantbetween",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1569",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_createbooking",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_createbooking",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1592",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_appendwaitlistentry",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_appendwaitlistentry",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1597",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_createreminderjob",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_createreminderjob",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1629",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_listduereminderjobs",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_listduereminderjobs",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1643",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_markreminderjobdispatched",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_markreminderjobdispatched",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1653",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_createnotificationdeliverylog",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_createnotificationdeliverylog",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1658",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_getdashboardmetrics",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_getdashboardmetrics",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1683",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_getsubscriptionsnapshot",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_getsubscriptionsnapshot",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1690",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_upsertsubscriptionsnapshot",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_upsertsubscriptionsnapshot",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1695",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_updatetenantbillingcustomerid",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_updatetenantbillingcustomerid",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1708",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_updatetenantbillingstate",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_updatetenantbillingstate",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1725",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_recordbillingevent",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_recordbillingevent",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1744",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_listlocationsbytenant",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_listlocationsbytenant",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1751",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_getlocationbyid",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_getlocationbyid",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1760",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_createlocation",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_createlocation",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1772",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_updatelocation",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_updatelocation",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1787",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_deletelocation",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_deletelocation",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1801",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_listblockeddaysbytenant",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_listblockeddaysbytenant",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1814",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_createblockedday",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_createblockedday",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1829",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_updateblockedday",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_updateblockedday",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1850",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_deleteblockedday",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_deleteblockedday",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1864",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_listcustomersbytenant",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_listcustomersbytenant",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1879",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_getcustomerbyid",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_getcustomerbyid",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1888",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_getcustomerbyemail",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_getcustomerbyemail",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1897",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_createcustomer",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_createcustomer",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1912",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_updatecustomer",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_updatecustomer",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1936",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_deletecustomer",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_deletecustomer",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1946",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_getcustomerbookingscount",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_getcustomerbookingscount",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1958",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_getcustomerlastbooking",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_getcustomerlastbooking",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1984",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_getbookingbyreference",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_getbookingbyreference",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1993",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_updatebookingstatus",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_updatebookingstatus",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2003",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_reschedulebooking",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_reschedulebooking",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2018",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_listworkinghoursbytenant",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_listworkinghoursbytenant",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2025",
- "weight": 1.0,
- "_src": "db_memoryrepository",
- "_tgt": "db_memoryrepository_updateworkinghours",
- "source": "db_memoryrepository",
- "target": "db_memoryrepository_updateworkinghours",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1322",
- "weight": 1.0,
- "_src": "db_repository_newmemoryrepository",
- "_tgt": "db_repository_stringptr",
- "source": "db_repository_newmemoryrepository",
- "target": "db_repository_stringptr",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L14",
- "weight": 1.0,
- "_src": "notifications_service_test_testdispatchdueprocessespendingemailreminders",
- "_tgt": "db_repository_newmemoryrepository",
- "source": "db_repository_newmemoryrepository",
- "target": "notifications_service_test_testdispatchdueprocessespendingemailreminders"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L67",
- "weight": 1.0,
- "_src": "notifications_service_test_testdispatchduefailsunknownchannel",
- "_tgt": "db_repository_newmemoryrepository",
- "source": "db_repository_newmemoryrepository",
- "target": "notifications_service_test_testdispatchduefailsunknownchannel"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L14",
- "weight": 1.0,
- "_src": "bookings_service_test_testcreateappointmentrejectsconflict",
- "_tgt": "db_repository_newmemoryrepository",
- "source": "db_repository_newmemoryrepository",
- "target": "bookings_service_test_testcreateappointmentrejectsconflict"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L71",
- "weight": 1.0,
- "_src": "bookings_service_test_testcreateclassfallsbacktowaitlistwhencapacityreached",
- "_tgt": "db_repository_newmemoryrepository",
- "source": "db_repository_newmemoryrepository",
- "target": "bookings_service_test_testcreateclassfallsbacktowaitlistwhencapacityreached"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L128",
- "weight": 1.0,
- "_src": "bookings_service_test_testcreateappointmentrequirestenantservice",
- "_tgt": "db_repository_newmemoryrepository",
- "source": "db_repository_newmemoryrepository",
- "target": "bookings_service_test_testcreateappointmentrequirestenantservice"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L145",
- "weight": 1.0,
- "_src": "bookings_service_test_testcreateclassrequiresexistingsession",
- "_tgt": "db_repository_newmemoryrepository",
- "source": "db_repository_newmemoryrepository",
- "target": "bookings_service_test_testcreateclassrequiresexistingsession"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L164",
- "weight": 1.0,
- "_src": "bookings_service_test_testavailabilitygeneratesupcomingslots",
- "_tgt": "db_repository_newmemoryrepository",
- "source": "db_repository_newmemoryrepository",
- "target": "bookings_service_test_testavailabilitygeneratesupcomingslots"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L187",
- "weight": 1.0,
- "_src": "bookings_service_test_testcreateschedulesreminderjobforupcomingappointment",
- "_tgt": "db_repository_newmemoryrepository",
- "source": "db_repository_newmemoryrepository",
- "target": "bookings_service_test_testcreateschedulesreminderjobforupcomingappointment"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L26",
- "weight": 1.0,
- "_src": "billing_service_test_testgetsubscriptionfallsbacktosnapshotandentitlements",
- "_tgt": "db_repository_newmemoryrepository",
- "source": "db_repository_newmemoryrepository",
- "target": "billing_service_test_testgetsubscriptionfallsbacktosnapshotandentitlements"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L50",
- "weight": 1.0,
- "_src": "billing_service_test_testcreatecheckoutrequirespaddleconfig",
- "_tgt": "db_repository_newmemoryrepository",
- "source": "db_repository_newmemoryrepository",
- "target": "billing_service_test_testcreatecheckoutrequirespaddleconfig"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L62",
- "weight": 1.0,
- "_src": "billing_service_test_testcreatecheckoutreturnslaunchpayload",
- "_tgt": "db_repository_newmemoryrepository",
- "source": "db_repository_newmemoryrepository",
- "target": "billing_service_test_testcreatecheckoutreturnslaunchpayload"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L85",
- "weight": 1.0,
- "_src": "billing_service_test_testrefreshrequirespaddlekeywhencustomerexists",
- "_tgt": "db_repository_newmemoryrepository",
- "source": "db_repository_newmemoryrepository",
- "target": "billing_service_test_testrefreshrequirespaddlekeywhencustomerexists"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L99",
- "weight": 1.0,
- "_src": "billing_service_test_testgetsubscriptiondisablescheckoutwhenwebhookmissing",
- "_tgt": "db_repository_newmemoryrepository",
- "source": "db_repository_newmemoryrepository",
- "target": "billing_service_test_testgetsubscriptiondisablescheckoutwhenwebhookmissing"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L114",
- "weight": 1.0,
- "_src": "billing_service_test_testgetsubscriptionenablescheckoutwhenpaddleconfigured",
- "_tgt": "db_repository_newmemoryrepository",
- "source": "db_repository_newmemoryrepository",
- "target": "billing_service_test_testgetsubscriptionenablescheckoutwhenpaddleconfigured"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L132",
- "weight": 1.0,
- "_src": "billing_service_test_testcreateportalsessionrequirescustomer",
- "_tgt": "db_repository_newmemoryrepository",
- "source": "db_repository_newmemoryrepository",
- "target": "billing_service_test_testcreateportalsessionrequirescustomer"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L12",
- "weight": 1.0,
- "_src": "tenancy_service_test_testbootstrapresolvesmembershipafteridentitysync",
- "_tgt": "db_repository_newmemoryrepository",
- "source": "db_repository_newmemoryrepository",
- "target": "tenancy_service_test_testbootstrapresolvesmembershipafteridentitysync"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L41",
- "weight": 1.0,
- "_src": "tenancy_service_test_testbootstrapreturnsshellwhenmembershipmissing",
- "_tgt": "db_repository_newmemoryrepository",
- "source": "db_repository_newmemoryrepository",
- "target": "tenancy_service_test_testbootstrapreturnsshellwhenmembershipmissing"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L63",
- "weight": 1.0,
- "_src": "tenancy_service_test_testonboardcreatestenantforauthenticateduser",
- "_tgt": "db_repository_newmemoryrepository",
- "source": "db_repository_newmemoryrepository",
- "target": "tenancy_service_test_testonboardcreatestenantforauthenticateduser"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L90",
- "weight": 1.0,
- "_src": "tenancy_service_test_testonboardrejectsinvalidslug",
- "_tgt": "db_repository_newmemoryrepository",
- "source": "db_repository_newmemoryrepository",
- "target": "tenancy_service_test_testonboardrejectsinvalidslug"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1433",
- "weight": 1.0,
- "_src": "db_memoryrepository_ensureuseridentity",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "db_memoryrepository_ensureuseridentity",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1461",
- "weight": 1.0,
- "_src": "db_memoryrepository_createtenantforuser",
- "_tgt": "db_repository_firstnonempty",
- "source": "db_memoryrepository_createtenantforuser",
- "target": "db_repository_firstnonempty",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1476",
- "weight": 1.0,
- "_src": "db_memoryrepository_createtenantforuser",
- "_tgt": "db_repository_maxint",
- "source": "db_memoryrepository_createtenantforuser",
- "target": "db_repository_maxint",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1483",
- "weight": 1.0,
- "_src": "db_memoryrepository_createtenantforuser",
- "_tgt": "db_repository_defaultavailabilityblocks",
- "source": "db_memoryrepository_createtenantforuser",
- "target": "db_repository_defaultavailabilityblocks",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L1726",
- "weight": 1.0,
- "_src": "db_memoryrepository_recordbillingevent",
- "_tgt": "db_repository_firstnonempty",
- "source": "db_memoryrepository_recordbillingevent",
- "target": "db_repository_firstnonempty",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/db/repository.go",
- "source_location": "L2060",
- "weight": 1.0,
- "_src": "db_repository_firstnonempty",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "db_repository_firstnonempty",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L12",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_pool_go",
- "_tgt": "db_pools",
- "source": "apps_backend_internal_db_pool_go",
- "target": "db_pools",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L17",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_pool_go",
- "_tgt": "db_pool_newpools",
- "source": "apps_backend_internal_db_pool_go",
- "target": "db_pool_newpools",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L52",
- "weight": 1.0,
- "_src": "apps_backend_internal_db_pool_go",
- "_tgt": "db_pool_connect",
- "source": "apps_backend_internal_db_pool_go",
- "target": "db_pool_connect",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L39",
- "weight": 1.0,
- "_src": "db_pools",
- "_tgt": "db_pools_close",
- "source": "db_pools",
- "target": "db_pools_close",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L48",
- "weight": 1.0,
- "_src": "db_pools",
- "_tgt": "db_pools_databaseconfigured",
- "source": "db_pools",
- "target": "db_pools_databaseconfigured",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/db/pool.go",
- "source_location": "L21",
- "weight": 1.0,
- "_src": "db_pool_newpools",
- "_tgt": "db_pool_connect",
- "source": "db_pool_newpools",
- "target": "db_pool_connect",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L5",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_principal",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_principal",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L12",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_dashboardkpi",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_dashboardkpi",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L18",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_upcomingbooking",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_upcomingbooking",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L28",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_widgetsnippet",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_widgetsnippet",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L33",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_trackingstatus",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_trackingstatus",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L40",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_dashboardsummary",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_dashboardsummary",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L54",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_brandprofile",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_brandprofile",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L61",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_tenantbootstrap",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_tenantbootstrap",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L74",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_teaminviterequest",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_teaminviterequest",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L79",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_availabilityblockrequest",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_availabilityblockrequest",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L86",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_bookingdefaultsrequest",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_bookingdefaultsrequest",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L94",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_onboardtenantrequest",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_onboardtenantrequest",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L107",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_timeslot",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_timeslot",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L119",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_publicavailability",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_publicavailability",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L126",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_createbookingrequest",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_createbookingrequest",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L140",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_createbookingresponse",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_createbookingresponse",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L146",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_planentitlements",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_planentitlements",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L155",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_plandisplayprice",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_plandisplayprice",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L161",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_subscriptionsnapshot",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_subscriptionsnapshot",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L184",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_checkoutsessionrequest",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_checkoutsessionrequest",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L189",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_checkoutlaunchresponse",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_checkoutlaunchresponse",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L198",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_portalsessionresponse",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_portalsessionresponse",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L202",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_dispatchreminderjobsrequest",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_dispatchreminderjobsrequest",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L206",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_dispatchreminderjobsresponse",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_dispatchreminderjobsresponse",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L216",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_location",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_location",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L226",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_createlocationrequest",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_createlocationrequest",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L232",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_updatelocationrequest",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_updatelocationrequest",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L242",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_blockedday",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_blockedday",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L252",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_createblockeddayrequest",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_createblockeddayrequest",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L259",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_updateblockeddayrequest",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_updateblockeddayrequest",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L268",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_customer",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_customer",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L281",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_createcustomerrequest",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_createcustomerrequest",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L289",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_updatecustomerrequest",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_updatecustomerrequest",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L301",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_customerbookingview",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_customerbookingview",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L314",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_reschedulebookingrequest",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_reschedulebookingrequest",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L320",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_cancelbookingrequest",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_cancelbookingrequest",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L328",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_workinghours",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_workinghours",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L335",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_updateworkinghoursrequest",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_updateworkinghoursrequest",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L345",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_emailtemplate",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_emailtemplate",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L355",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_sendemailrequest",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_sendemailrequest",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/domain/models.go",
- "source_location": "L362",
- "weight": 1.0,
- "_src": "apps_backend_internal_domain_models_go",
- "_tgt": "domain_emailnotification",
- "source": "apps_backend_internal_domain_models_go",
- "target": "domain_emailnotification",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L111",
- "weight": 1.0,
- "_src": "api_server_newserver",
- "_tgt": "domain_createbookingrequest",
- "source": "domain_createbookingrequest",
- "target": "api_server_newserver"
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config_test.go",
- "source_location": "L5",
- "weight": 1.0,
- "_src": "apps_backend_internal_config_config_test_go",
- "_tgt": "config_config_test_testpaddlecheckoutconfigured",
- "source": "apps_backend_internal_config_config_test_go",
- "target": "config_config_test_testpaddlecheckoutconfigured",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config_test.go",
- "source_location": "L21",
- "weight": 1.0,
- "_src": "apps_backend_internal_config_config_test_go",
- "_tgt": "config_config_test_testpaddlecheckoutconfiguredrequireswebhook",
- "source": "apps_backend_internal_config_config_test_go",
- "target": "config_config_test_testpaddlecheckoutconfiguredrequireswebhook",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L119",
- "weight": 1.0,
- "_src": "apps_backend_internal_config_config_go",
- "_tgt": "config_config_paddlepricematrixfromenv",
- "source": "apps_backend_internal_config_config_go",
- "target": "config_config_paddlepricematrixfromenv",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L133",
- "weight": 1.0,
- "_src": "apps_backend_internal_config_config_go",
- "_tgt": "config_config_normalizepaddleenvironment",
- "source": "apps_backend_internal_config_config_go",
- "target": "config_config_normalizepaddleenvironment",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L142",
- "weight": 1.0,
- "_src": "apps_backend_internal_config_config_go",
- "_tgt": "config_config_normalizeplancode",
- "source": "apps_backend_internal_config_config_go",
- "target": "config_config_normalizeplancode",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L153",
- "weight": 1.0,
- "_src": "apps_backend_internal_config_config_go",
- "_tgt": "config_config_valueordefault",
- "source": "apps_backend_internal_config_config_go",
- "target": "config_config_valueordefault",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L160",
- "weight": 1.0,
- "_src": "apps_backend_internal_config_config_go",
- "_tgt": "config_config_boolfromenv",
- "source": "apps_backend_internal_config_config_go",
- "target": "config_config_boolfromenv",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L169",
- "weight": 1.0,
- "_src": "apps_backend_internal_config_config_go",
- "_tgt": "config_config_uniquestrings",
- "source": "apps_backend_internal_config_config_go",
- "target": "config_config_uniquestrings",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L101",
- "weight": 1.0,
- "_src": "config_config_validateruntimerequirements",
- "_tgt": "config_config_uniquestrings",
- "source": "config_config_validateruntimerequirements",
- "target": "config_config_uniquestrings",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L116",
- "weight": 1.0,
- "_src": "config_config_paddlecheckoutconfigured",
- "_tgt": "config_config_paddleconfigured",
- "source": "config_config_paddleconfigured",
- "target": "config_config_paddlecheckoutconfigured",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L107",
- "weight": 1.0,
- "_src": "config_config_paddleconfigured",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "config_config_paddleconfigured",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L116",
- "weight": 1.0,
- "_src": "config_config_paddlecheckoutconfigured",
- "_tgt": "config_config_paddlewebhookconfigured",
- "source": "config_config_paddlewebhookconfigured",
- "target": "config_config_paddlecheckoutconfigured",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L111",
- "weight": 1.0,
- "_src": "config_config_paddlewebhookconfigured",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "config_config_paddlewebhookconfigured",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L115",
- "weight": 1.0,
- "_src": "config_config_paddlecheckoutconfigured",
- "_tgt": "config_config_normalizeplancode",
- "source": "config_config_paddlecheckoutconfigured",
- "target": "config_config_normalizeplancode",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L127",
- "weight": 1.0,
- "_src": "config_config_paddlepricematrixfromenv",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "config_config_paddlepricematrixfromenv",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L134",
- "weight": 1.0,
- "_src": "config_config_normalizepaddleenvironment",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "config_config_normalizepaddleenvironment",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L143",
- "weight": 1.0,
- "_src": "config_config_normalizeplancode",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "config_config_normalizeplancode",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L154",
- "weight": 1.0,
- "_src": "config_config_valueordefault",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "config_config_valueordefault",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/config/config.go",
- "source_location": "L161",
- "weight": 1.0,
- "_src": "config_config_boolfromenv",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "config_config_boolfromenv",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L19",
- "weight": 1.0,
- "_src": "apps_backend_internal_notifications_service_go",
- "_tgt": "notifications_deliveryreceipt",
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_deliveryreceipt",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L24",
- "weight": 1.0,
- "_src": "apps_backend_internal_notifications_service_go",
- "_tgt": "notifications_emailmessage",
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_emailmessage",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L32",
- "weight": 1.0,
- "_src": "apps_backend_internal_notifications_service_go",
- "_tgt": "notifications_emailprovider",
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_emailprovider",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L36",
- "weight": 1.0,
- "_src": "apps_backend_internal_notifications_service_go",
- "_tgt": "notifications_service",
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_service",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L43",
- "weight": 1.0,
- "_src": "apps_backend_internal_notifications_service_go",
- "_tgt": "notifications_service_newservice",
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_service_newservice",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L168",
- "weight": 1.0,
- "_src": "apps_backend_internal_notifications_service_go",
- "_tgt": "notifications_service_renderemailmessage",
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_service_renderemailmessage",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L172",
- "weight": 1.0,
- "_src": "apps_backend_internal_notifications_service_go",
- "_tgt": "notifications_service_renderremindercopy",
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_service_renderremindercopy",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L196",
- "weight": 1.0,
- "_src": "apps_backend_internal_notifications_service_go",
- "_tgt": "notifications_service_localizedstartsat",
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_service_localizedstartsat",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L208",
- "weight": 1.0,
- "_src": "apps_backend_internal_notifications_service_go",
- "_tgt": "notifications_service_reminderrecipient",
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_service_reminderrecipient",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L212",
- "weight": 1.0,
- "_src": "apps_backend_internal_notifications_service_go",
- "_tgt": "notifications_noopemailprovider",
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_noopemailprovider",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L224",
- "weight": 1.0,
- "_src": "apps_backend_internal_notifications_service_go",
- "_tgt": "notifications_smtpemailprovider",
- "source": "apps_backend_internal_notifications_service_go",
- "target": "notifications_smtpemailprovider",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L44",
- "weight": 1.0,
- "_src": "notifications_service_newservice",
- "_tgt": "notifications_emailprovider",
- "source": "notifications_emailprovider",
- "target": "notifications_service_newservice",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L57",
- "weight": 1.0,
- "_src": "notifications_service",
- "_tgt": "notifications_service_dispatchdue",
- "source": "notifications_service",
- "target": "notifications_service_dispatchdue",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L124",
- "weight": 1.0,
- "_src": "notifications_service",
- "_tgt": "notifications_service_sendbookingconfirmation",
- "source": "notifications_service",
- "target": "notifications_service_sendbookingconfirmation",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L135",
- "weight": 1.0,
- "_src": "notifications_service",
- "_tgt": "notifications_service_sendbookingreschedule",
- "source": "notifications_service",
- "target": "notifications_service_sendbookingreschedule",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L146",
- "weight": 1.0,
- "_src": "notifications_service",
- "_tgt": "notifications_service_sendbookingcancellation",
- "source": "notifications_service",
- "target": "notifications_service_sendbookingcancellation",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L157",
- "weight": 1.0,
- "_src": "notifications_service",
- "_tgt": "notifications_service_sendbusinessnotification",
- "source": "notifications_service",
- "target": "notifications_service_sendbusinessnotification",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L78",
- "weight": 1.0,
- "_src": "notifications_service_dispatchdue",
- "_tgt": "notifications_smtpemailprovider_send",
- "source": "notifications_service_dispatchdue",
- "target": "notifications_smtpemailprovider_send",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L78",
- "weight": 1.0,
- "_src": "notifications_service_dispatchdue",
- "_tgt": "notifications_service_renderemailmessage",
- "source": "notifications_service_dispatchdue",
- "target": "notifications_service_renderemailmessage",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L105",
- "weight": 1.0,
- "_src": "notifications_service_dispatchdue",
- "_tgt": "notifications_service_reminderrecipient",
- "source": "notifications_service_dispatchdue",
- "target": "notifications_service_reminderrecipient",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L129",
- "weight": 1.0,
- "_src": "notifications_service_sendbookingconfirmation",
- "_tgt": "notifications_service_renderemailmessage",
- "source": "notifications_service_sendbookingconfirmation",
- "target": "notifications_service_renderemailmessage",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L130",
- "weight": 1.0,
- "_src": "notifications_service_sendbookingconfirmation",
- "_tgt": "notifications_smtpemailprovider_send",
- "source": "notifications_service_sendbookingconfirmation",
- "target": "notifications_smtpemailprovider_send",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L140",
- "weight": 1.0,
- "_src": "notifications_service_sendbookingreschedule",
- "_tgt": "notifications_service_renderemailmessage",
- "source": "notifications_service_sendbookingreschedule",
- "target": "notifications_service_renderemailmessage",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L141",
- "weight": 1.0,
- "_src": "notifications_service_sendbookingreschedule",
- "_tgt": "notifications_smtpemailprovider_send",
- "source": "notifications_service_sendbookingreschedule",
- "target": "notifications_smtpemailprovider_send",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L151",
- "weight": 1.0,
- "_src": "notifications_service_sendbookingcancellation",
- "_tgt": "notifications_service_renderemailmessage",
- "source": "notifications_service_sendbookingcancellation",
- "target": "notifications_service_renderemailmessage",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L152",
- "weight": 1.0,
- "_src": "notifications_service_sendbookingcancellation",
- "_tgt": "notifications_smtpemailprovider_send",
- "source": "notifications_service_sendbookingcancellation",
- "target": "notifications_smtpemailprovider_send",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L162",
- "weight": 1.0,
- "_src": "notifications_service_sendbusinessnotification",
- "_tgt": "notifications_service_renderemailmessage",
- "source": "notifications_service_sendbusinessnotification",
- "target": "notifications_service_renderemailmessage",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L164",
- "weight": 1.0,
- "_src": "notifications_service_sendbusinessnotification",
- "_tgt": "notifications_smtpemailprovider_send",
- "source": "notifications_service_sendbusinessnotification",
- "target": "notifications_smtpemailprovider_send",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L169",
- "weight": 1.0,
- "_src": "notifications_service_renderemailmessage",
- "_tgt": "notifications_email_templates_renderreminderemail",
- "source": "notifications_service_renderemailmessage",
- "target": "notifications_email_templates_renderreminderemail"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L173",
- "weight": 1.0,
- "_src": "notifications_service_renderremindercopy",
- "_tgt": "notifications_service_localizedstartsat",
- "source": "notifications_service_renderremindercopy",
- "target": "notifications_service_localizedstartsat",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L214",
- "weight": 1.0,
- "_src": "notifications_noopemailprovider",
- "_tgt": "notifications_noopemailprovider_send",
- "source": "notifications_noopemailprovider",
- "target": "notifications_noopemailprovider_send",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L228",
- "weight": 1.0,
- "_src": "notifications_smtpemailprovider",
- "_tgt": "notifications_smtpemailprovider_send",
- "source": "notifications_smtpemailprovider",
- "target": "notifications_smtpemailprovider_send",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/notifications/service.go",
- "source_location": "L229",
- "weight": 1.0,
- "_src": "notifications_smtpemailprovider_send",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "notifications_smtpemailprovider_send",
- "target": "notifications_email_templates_trimspace"
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L10",
- "weight": 1.0,
- "_src": "apps_backend_internal_notifications_email_templates_go",
- "_tgt": "notifications_emailtype",
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_emailtype",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L20",
- "weight": 1.0,
- "_src": "apps_backend_internal_notifications_email_templates_go",
- "_tgt": "notifications_bookingemaildata",
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_bookingemaildata",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L42",
- "weight": 1.0,
- "_src": "apps_backend_internal_notifications_email_templates_go",
- "_tgt": "notifications_email_templates_renderemailmessage",
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_renderemailmessage",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L56",
- "weight": 1.0,
- "_src": "apps_backend_internal_notifications_email_templates_go",
- "_tgt": "notifications_email_templates_rendersubject",
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_rendersubject",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L90",
- "weight": 1.0,
- "_src": "apps_backend_internal_notifications_email_templates_go",
- "_tgt": "notifications_email_templates_rendertextbody",
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_rendertextbody",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L241",
- "weight": 1.0,
- "_src": "apps_backend_internal_notifications_email_templates_go",
- "_tgt": "notifications_email_templates_renderhtmlbody",
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_renderhtmlbody",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L266",
- "weight": 1.0,
- "_src": "apps_backend_internal_notifications_email_templates_go",
- "_tgt": "notifications_email_templates_formatlocalizedtime",
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_formatlocalizedtime",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L278",
- "weight": 1.0,
- "_src": "apps_backend_internal_notifications_email_templates_go",
- "_tgt": "notifications_email_templates_formatlocalizeddatetime",
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_formatlocalizeddatetime",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L290",
- "weight": 1.0,
- "_src": "apps_backend_internal_notifications_email_templates_go",
- "_tgt": "notifications_email_templates_splitparagraphs",
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_splitparagraphs",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L313",
- "weight": 1.0,
- "_src": "apps_backend_internal_notifications_email_templates_go",
- "_tgt": "notifications_email_templates_splitlines",
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_splitlines",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L326",
- "weight": 1.0,
- "_src": "apps_backend_internal_notifications_email_templates_go",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_trimspace",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L339",
- "weight": 1.0,
- "_src": "apps_backend_internal_notifications_email_templates_go",
- "_tgt": "notifications_email_templates_renderreminderemail",
- "source": "apps_backend_internal_notifications_email_templates_go",
- "target": "notifications_email_templates_renderreminderemail",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L43",
- "weight": 1.0,
- "_src": "notifications_email_templates_renderemailmessage",
- "_tgt": "notifications_email_templates_rendersubject",
- "source": "notifications_email_templates_renderemailmessage",
- "target": "notifications_email_templates_rendersubject",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L44",
- "weight": 1.0,
- "_src": "notifications_email_templates_renderemailmessage",
- "_tgt": "notifications_email_templates_renderhtmlbody",
- "source": "notifications_email_templates_renderemailmessage",
- "target": "notifications_email_templates_renderhtmlbody",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L45",
- "weight": 1.0,
- "_src": "notifications_email_templates_renderemailmessage",
- "_tgt": "notifications_email_templates_rendertextbody",
- "source": "notifications_email_templates_renderemailmessage",
- "target": "notifications_email_templates_rendertextbody",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L353",
- "weight": 1.0,
- "_src": "notifications_email_templates_renderreminderemail",
- "_tgt": "notifications_email_templates_renderemailmessage",
- "source": "notifications_email_templates_renderemailmessage",
- "target": "notifications_email_templates_renderreminderemail",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L57",
- "weight": 1.0,
- "_src": "notifications_email_templates_rendersubject",
- "_tgt": "notifications_email_templates_formatlocalizedtime",
- "source": "notifications_email_templates_rendersubject",
- "target": "notifications_email_templates_formatlocalizedtime",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L91",
- "weight": 1.0,
- "_src": "notifications_email_templates_rendertextbody",
- "_tgt": "notifications_email_templates_formatlocalizeddatetime",
- "source": "notifications_email_templates_rendertextbody",
- "target": "notifications_email_templates_formatlocalizeddatetime",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L243",
- "weight": 1.0,
- "_src": "notifications_email_templates_renderhtmlbody",
- "_tgt": "notifications_email_templates_rendertextbody",
- "source": "notifications_email_templates_rendertextbody",
- "target": "notifications_email_templates_renderhtmlbody",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L250",
- "weight": 1.0,
- "_src": "notifications_email_templates_renderhtmlbody",
- "_tgt": "notifications_email_templates_splitparagraphs",
- "source": "notifications_email_templates_renderhtmlbody",
- "target": "notifications_email_templates_splitparagraphs",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L293",
- "weight": 1.0,
- "_src": "notifications_email_templates_splitparagraphs",
- "_tgt": "notifications_email_templates_splitlines",
- "source": "notifications_email_templates_splitparagraphs",
- "target": "notifications_email_templates_splitlines",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/email_templates.go",
- "source_location": "L294",
- "weight": 1.0,
- "_src": "notifications_email_templates_splitparagraphs",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "notifications_email_templates_splitparagraphs",
- "target": "notifications_email_templates_trimspace",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L122",
- "weight": 1.0,
- "_src": "bookings_service_create",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "notifications_email_templates_trimspace",
- "target": "bookings_service_create"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L363",
- "weight": 1.0,
- "_src": "bookings_service_trackingstatus",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "notifications_email_templates_trimspace",
- "target": "bookings_service_trackingstatus"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L204",
- "weight": 1.0,
- "_src": "billing_service_createportalsession",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "notifications_email_templates_trimspace",
- "target": "billing_service_createportalsession"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L280",
- "weight": 1.0,
- "_src": "billing_service_resolvewebhooktenant",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "notifications_email_templates_trimspace",
- "target": "billing_service_resolvewebhooktenant"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L489",
- "weight": 1.0,
- "_src": "billing_service_normalizesubscriptionstatus",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "notifications_email_templates_trimspace",
- "target": "billing_service_normalizesubscriptionstatus"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L503",
- "weight": 1.0,
- "_src": "billing_service_checkoutavailable",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "notifications_email_templates_trimspace",
- "target": "billing_service_checkoutavailable"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L520",
- "weight": 1.0,
- "_src": "billing_service_customdatastring",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "notifications_email_templates_trimspace",
- "target": "billing_service_customdatastring"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L527",
- "weight": 1.0,
- "_src": "billing_service_parserfc3339ptr",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "notifications_email_templates_trimspace",
- "target": "billing_service_parserfc3339ptr"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L561",
- "weight": 1.0,
- "_src": "billing_service_firstnonempty",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "notifications_email_templates_trimspace",
- "target": "billing_service_firstnonempty"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L39",
- "weight": 1.0,
- "_src": "auth_middleware_requireauth",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "notifications_email_templates_trimspace",
- "target": "auth_middleware_requireauth"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L24",
- "weight": 1.0,
- "_src": "auth_neon_newverifier",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "notifications_email_templates_trimspace",
- "target": "auth_neon_newverifier"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L80",
- "weight": 1.0,
- "_src": "tenancy_service_onboard",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "notifications_email_templates_trimspace",
- "target": "tenancy_service_onboard"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L234",
- "weight": 1.0,
- "_src": "tenancy_service_toteaminvites",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "notifications_email_templates_trimspace",
- "target": "tenancy_service_toteaminvites"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L248",
- "weight": 1.0,
- "_src": "tenancy_service_normalizeclock",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "notifications_email_templates_trimspace",
- "target": "tenancy_service_normalizeclock"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L268",
- "weight": 1.0,
- "_src": "tenancy_service_firstnonempty",
- "_tgt": "notifications_email_templates_trimspace",
- "source": "notifications_email_templates_trimspace",
- "target": "tenancy_service_firstnonempty"
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L13",
- "weight": 1.0,
- "_src": "apps_backend_internal_notifications_service_test_go",
- "_tgt": "notifications_service_test_testdispatchdueprocessespendingemailreminders",
- "source": "apps_backend_internal_notifications_service_test_go",
- "target": "notifications_service_test_testdispatchdueprocessespendingemailreminders",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L66",
- "weight": 1.0,
- "_src": "apps_backend_internal_notifications_service_test_go",
- "_tgt": "notifications_service_test_testdispatchduefailsunknownchannel",
- "source": "apps_backend_internal_notifications_service_test_go",
- "target": "notifications_service_test_testdispatchduefailsunknownchannel",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L87",
- "weight": 1.0,
- "_src": "apps_backend_internal_notifications_service_test_go",
- "_tgt": "notifications_service_test_testdispatchrequestcontractshape",
- "source": "apps_backend_internal_notifications_service_test_go",
- "target": "notifications_service_test_testdispatchrequestcontractshape",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L38",
- "weight": 1.0,
- "_src": "notifications_service_test_testdispatchdueprocessespendingemailreminders",
- "_tgt": "tenancy_service_newservice",
- "source": "notifications_service_test_testdispatchdueprocessespendingemailreminders",
- "target": "tenancy_service_newservice"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/notifications/service_test.go",
- "source_location": "L77",
- "weight": 1.0,
- "_src": "notifications_service_test_testdispatchduefailsunknownchannel",
- "_tgt": "tenancy_service_newservice",
- "source": "notifications_service_test_testdispatchduefailsunknownchannel",
- "target": "tenancy_service_newservice"
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L27",
- "weight": 1.0,
- "_src": "apps_backend_internal_bookings_service_go",
- "_tgt": "bookings_service",
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L32",
- "weight": 1.0,
- "_src": "apps_backend_internal_bookings_service_go",
- "_tgt": "bookings_notifier",
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_notifier",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L37",
- "weight": 1.0,
- "_src": "apps_backend_internal_bookings_service_go",
- "_tgt": "bookings_service_newservice",
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_newservice",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L44",
- "weight": 1.0,
- "_src": "apps_backend_internal_bookings_service_go",
- "_tgt": "bookings_noopnotifier",
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_noopnotifier",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L352",
- "weight": 1.0,
- "_src": "apps_backend_internal_bookings_service_go",
- "_tgt": "bookings_service_widgetsnippets",
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_widgetsnippets",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L361",
- "weight": 1.0,
- "_src": "apps_backend_internal_bookings_service_go",
- "_tgt": "bookings_service_trackingstatus",
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_trackingstatus",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L369",
- "weight": 1.0,
- "_src": "apps_backend_internal_bookings_service_go",
- "_tgt": "bookings_service_normalizeplancode",
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_normalizeplancode",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L380",
- "weight": 1.0,
- "_src": "apps_backend_internal_bookings_service_go",
- "_tgt": "bookings_service_generateappointmentslots",
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_generateappointmentslots",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L449",
- "weight": 1.0,
- "_src": "apps_backend_internal_bookings_service_go",
- "_tgt": "bookings_service_generateclassslots",
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_generateclassslots",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L471",
- "weight": 1.0,
- "_src": "apps_backend_internal_bookings_service_go",
- "_tgt": "bookings_service_collides",
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_collides",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L486",
- "weight": 1.0,
- "_src": "apps_backend_internal_bookings_service_go",
- "_tgt": "bookings_service_sameresource",
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_sameresource",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L493",
- "weight": 1.0,
- "_src": "apps_backend_internal_bookings_service_go",
- "_tgt": "bookings_service_samesecond",
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_samesecond",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L497",
- "weight": 1.0,
- "_src": "apps_backend_internal_bookings_service_go",
- "_tgt": "bookings_service_countclassbookings",
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_countclassbookings",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L510",
- "weight": 1.0,
- "_src": "apps_backend_internal_bookings_service_go",
- "_tgt": "bookings_service_reminderschedule",
- "source": "apps_backend_internal_bookings_service_go",
- "target": "bookings_service_reminderschedule",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L54",
- "weight": 1.0,
- "_src": "bookings_service",
- "_tgt": "bookings_service_availability",
- "source": "bookings_service",
- "target": "bookings_service_availability",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L98",
- "weight": 1.0,
- "_src": "bookings_service",
- "_tgt": "bookings_service_create",
- "source": "bookings_service",
- "target": "bookings_service_create",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L240",
- "weight": 1.0,
- "_src": "bookings_service",
- "_tgt": "bookings_service_sendbookingconfirmationemails",
- "source": "bookings_service",
- "target": "bookings_service_sendbookingconfirmationemails",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L273",
- "weight": 1.0,
- "_src": "bookings_service",
- "_tgt": "bookings_service_serviceforrequest",
- "source": "bookings_service",
- "target": "bookings_service_serviceforrequest",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L286",
- "weight": 1.0,
- "_src": "bookings_service",
- "_tgt": "bookings_service_classsessionforrequest",
- "source": "bookings_service",
- "target": "bookings_service_classsessionforrequest",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L299",
- "weight": 1.0,
- "_src": "bookings_service",
- "_tgt": "bookings_service_dashboardsummary",
- "source": "bookings_service",
- "target": "bookings_service_dashboardsummary",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L46",
- "weight": 1.0,
- "_src": "bookings_noopnotifier",
- "_tgt": "bookings_noopnotifier_sendbookingconfirmation",
- "source": "bookings_noopnotifier",
- "target": "bookings_noopnotifier_sendbookingconfirmation",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L50",
- "weight": 1.0,
- "_src": "bookings_noopnotifier",
- "_tgt": "bookings_noopnotifier_sendbusinessnotification",
- "source": "bookings_noopnotifier",
- "target": "bookings_noopnotifier_sendbusinessnotification",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L270",
- "weight": 1.0,
- "_src": "bookings_service_sendbookingconfirmationemails",
- "_tgt": "bookings_noopnotifier_sendbookingconfirmation",
- "source": "bookings_noopnotifier_sendbookingconfirmation",
- "target": "bookings_service_sendbookingconfirmationemails",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L83",
- "weight": 1.0,
- "_src": "bookings_service_availability",
- "_tgt": "bookings_service_generateappointmentslots",
- "source": "bookings_service_availability",
- "target": "bookings_service_generateappointmentslots",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L84",
- "weight": 1.0,
- "_src": "bookings_service_availability",
- "_tgt": "bookings_service_generateclassslots",
- "source": "bookings_service_availability",
- "target": "bookings_service_generateclassslots",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L146",
- "weight": 1.0,
- "_src": "bookings_service_create",
- "_tgt": "bookings_service_serviceforrequest",
- "source": "bookings_service_create",
- "target": "bookings_service_serviceforrequest",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L161",
- "weight": 1.0,
- "_src": "bookings_service_create",
- "_tgt": "bookings_service_sameresource",
- "source": "bookings_service_create",
- "target": "bookings_service_sameresource",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L169",
- "weight": 1.0,
- "_src": "bookings_service_create",
- "_tgt": "bookings_service_classsessionforrequest",
- "source": "bookings_service_create",
- "target": "bookings_service_classsessionforrequest",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L176",
- "weight": 1.0,
- "_src": "bookings_service_create",
- "_tgt": "bookings_service_samesecond",
- "source": "bookings_service_create",
- "target": "bookings_service_samesecond",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L179",
- "weight": 1.0,
- "_src": "bookings_service_create",
- "_tgt": "bookings_service_countclassbookings",
- "source": "bookings_service_create",
- "target": "bookings_service_countclassbookings",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L219",
- "weight": 1.0,
- "_src": "bookings_service_create",
- "_tgt": "bookings_service_reminderschedule",
- "source": "bookings_service_create",
- "target": "bookings_service_reminderschedule",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L231",
- "weight": 1.0,
- "_src": "bookings_service_create",
- "_tgt": "bookings_service_sendbookingconfirmationemails",
- "source": "bookings_service_create",
- "target": "bookings_service_sendbookingconfirmationemails",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L199",
- "weight": 1.0,
- "_src": "bookings_service_create",
- "_tgt": "routes_booking_manage_route_reference",
- "source": "bookings_service_create",
- "target": "routes_booking_manage_route_reference"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L338",
- "weight": 1.0,
- "_src": "bookings_service_dashboardsummary",
- "_tgt": "bookings_service_normalizeplancode",
- "source": "bookings_service_dashboardsummary",
- "target": "bookings_service_normalizeplancode",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L347",
- "weight": 1.0,
- "_src": "bookings_service_dashboardsummary",
- "_tgt": "bookings_service_widgetsnippets",
- "source": "bookings_service_dashboardsummary",
- "target": "bookings_service_widgetsnippets",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L348",
- "weight": 1.0,
- "_src": "bookings_service_dashboardsummary",
- "_tgt": "bookings_service_trackingstatus",
- "source": "bookings_service_dashboardsummary",
- "target": "bookings_service_trackingstatus",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L426",
- "weight": 1.0,
- "_src": "bookings_service_generateappointmentslots",
- "_tgt": "bookings_service_collides",
- "source": "bookings_service_generateappointmentslots",
- "target": "bookings_service_collides",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L452",
- "weight": 1.0,
- "_src": "bookings_service_generateclassslots",
- "_tgt": "bookings_service_countclassbookings",
- "source": "bookings_service_generateclassslots",
- "target": "bookings_service_countclassbookings",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service.go",
- "source_location": "L479",
- "weight": 1.0,
- "_src": "bookings_service_collides",
- "_tgt": "bookings_service_sameresource",
- "source": "bookings_service_collides",
- "target": "bookings_service_sameresource",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L19",
- "weight": 1.0,
- "_src": "apps_backend_internal_bookings_customer_service_go",
- "_tgt": "bookings_customerservice",
- "source": "apps_backend_internal_bookings_customer_service_go",
- "target": "bookings_customerservice",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L24",
- "weight": 1.0,
- "_src": "apps_backend_internal_bookings_customer_service_go",
- "_tgt": "bookings_customernotifier",
- "source": "apps_backend_internal_bookings_customer_service_go",
- "target": "bookings_customernotifier",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L29",
- "weight": 1.0,
- "_src": "apps_backend_internal_bookings_customer_service_go",
- "_tgt": "bookings_customer_service_newcustomerservice",
- "source": "apps_backend_internal_bookings_customer_service_go",
- "target": "bookings_customer_service_newcustomerservice",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L36",
- "weight": 1.0,
- "_src": "apps_backend_internal_bookings_customer_service_go",
- "_tgt": "bookings_customernoopnotifier",
- "source": "apps_backend_internal_bookings_customer_service_go",
- "target": "bookings_customernoopnotifier",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L47",
- "weight": 1.0,
- "_src": "bookings_customerservice",
- "_tgt": "bookings_customerservice_getbookingbyreference",
- "source": "bookings_customerservice",
- "target": "bookings_customerservice_getbookingbyreference",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L73",
- "weight": 1.0,
- "_src": "bookings_customerservice",
- "_tgt": "bookings_customerservice_reschedulebooking",
- "source": "bookings_customerservice",
- "target": "bookings_customerservice_reschedulebooking",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L112",
- "weight": 1.0,
- "_src": "bookings_customerservice",
- "_tgt": "bookings_customerservice_cancelbooking",
- "source": "bookings_customerservice",
- "target": "bookings_customerservice_cancelbooking",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L132",
- "weight": 1.0,
- "_src": "bookings_customerservice",
- "_tgt": "bookings_customerservice_sendrescheduleemail",
- "source": "bookings_customerservice",
- "target": "bookings_customerservice_sendrescheduleemail",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L168",
- "weight": 1.0,
- "_src": "bookings_customerservice",
- "_tgt": "bookings_customerservice_sendcancellationemail",
- "source": "bookings_customerservice",
- "target": "bookings_customerservice_sendcancellationemail",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L42",
- "weight": 1.0,
- "_src": "api_server_newserver",
- "_tgt": "bookings_customer_service_newcustomerservice",
- "source": "bookings_customer_service_newcustomerservice",
- "target": "api_server_newserver"
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L38",
- "weight": 1.0,
- "_src": "bookings_customernoopnotifier",
- "_tgt": "bookings_customernoopnotifier_sendbookingreschedule",
- "source": "bookings_customernoopnotifier",
- "target": "bookings_customernoopnotifier_sendbookingreschedule",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L42",
- "weight": 1.0,
- "_src": "bookings_customernoopnotifier",
- "_tgt": "bookings_customernoopnotifier_sendbookingcancellation",
- "source": "bookings_customernoopnotifier",
- "target": "bookings_customernoopnotifier_sendbookingcancellation",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L165",
- "weight": 1.0,
- "_src": "bookings_customerservice_sendrescheduleemail",
- "_tgt": "bookings_customernoopnotifier_sendbookingreschedule",
- "source": "bookings_customernoopnotifier_sendbookingreschedule",
- "target": "bookings_customerservice_sendrescheduleemail",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L199",
- "weight": 1.0,
- "_src": "bookings_customerservice_sendcancellationemail",
- "_tgt": "bookings_customernoopnotifier_sendbookingcancellation",
- "source": "bookings_customernoopnotifier_sendbookingcancellation",
- "target": "bookings_customerservice_sendcancellationemail",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L74",
- "weight": 1.0,
- "_src": "bookings_customerservice_reschedulebooking",
- "_tgt": "bookings_customerservice_getbookingbyreference",
- "source": "bookings_customerservice_getbookingbyreference",
- "target": "bookings_customerservice_reschedulebooking",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L113",
- "weight": 1.0,
- "_src": "bookings_customerservice_cancelbooking",
- "_tgt": "bookings_customerservice_getbookingbyreference",
- "source": "bookings_customerservice_getbookingbyreference",
- "target": "bookings_customerservice_cancelbooking",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L106",
- "weight": 1.0,
- "_src": "bookings_customerservice_reschedulebooking",
- "_tgt": "bookings_customerservice_sendrescheduleemail",
- "source": "bookings_customerservice_reschedulebooking",
- "target": "bookings_customerservice_sendrescheduleemail",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/customer_service.go",
- "source_location": "L127",
- "weight": 1.0,
- "_src": "bookings_customerservice_cancelbooking",
- "_tgt": "bookings_customerservice_sendcancellationemail",
- "source": "bookings_customerservice_cancelbooking",
- "target": "bookings_customerservice_sendcancellationemail",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L13",
- "weight": 1.0,
- "_src": "apps_backend_internal_bookings_service_test_go",
- "_tgt": "bookings_service_test_testcreateappointmentrejectsconflict",
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "bookings_service_test_testcreateappointmentrejectsconflict",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L70",
- "weight": 1.0,
- "_src": "apps_backend_internal_bookings_service_test_go",
- "_tgt": "bookings_service_test_testcreateclassfallsbacktowaitlistwhencapacityreached",
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "bookings_service_test_testcreateclassfallsbacktowaitlistwhencapacityreached",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L127",
- "weight": 1.0,
- "_src": "apps_backend_internal_bookings_service_test_go",
- "_tgt": "bookings_service_test_testcreateappointmentrequirestenantservice",
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "bookings_service_test_testcreateappointmentrequirestenantservice",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L144",
- "weight": 1.0,
- "_src": "apps_backend_internal_bookings_service_test_go",
- "_tgt": "bookings_service_test_testcreateclassrequiresexistingsession",
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "bookings_service_test_testcreateclassrequiresexistingsession",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L163",
- "weight": 1.0,
- "_src": "apps_backend_internal_bookings_service_test_go",
- "_tgt": "bookings_service_test_testavailabilitygeneratesupcomingslots",
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "bookings_service_test_testavailabilitygeneratesupcomingslots",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L186",
- "weight": 1.0,
- "_src": "apps_backend_internal_bookings_service_test_go",
- "_tgt": "bookings_service_test_testcreateschedulesreminderjobforupcomingappointment",
- "source": "apps_backend_internal_bookings_service_test_go",
- "target": "bookings_service_test_testcreateschedulesreminderjobforupcomingappointment",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L15",
- "weight": 1.0,
- "_src": "bookings_service_test_testcreateappointmentrejectsconflict",
- "_tgt": "tenancy_service_newservice",
- "source": "bookings_service_test_testcreateappointmentrejectsconflict",
- "target": "tenancy_service_newservice"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L72",
- "weight": 1.0,
- "_src": "bookings_service_test_testcreateclassfallsbacktowaitlistwhencapacityreached",
- "_tgt": "tenancy_service_newservice",
- "source": "bookings_service_test_testcreateclassfallsbacktowaitlistwhencapacityreached",
- "target": "tenancy_service_newservice"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L129",
- "weight": 1.0,
- "_src": "bookings_service_test_testcreateappointmentrequirestenantservice",
- "_tgt": "tenancy_service_newservice",
- "source": "bookings_service_test_testcreateappointmentrequirestenantservice",
- "target": "tenancy_service_newservice"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L146",
- "weight": 1.0,
- "_src": "bookings_service_test_testcreateclassrequiresexistingsession",
- "_tgt": "tenancy_service_newservice",
- "source": "bookings_service_test_testcreateclassrequiresexistingsession",
- "target": "tenancy_service_newservice"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L165",
- "weight": 1.0,
- "_src": "bookings_service_test_testavailabilitygeneratesupcomingslots",
- "_tgt": "tenancy_service_newservice",
- "source": "bookings_service_test_testavailabilitygeneratesupcomingslots",
- "target": "tenancy_service_newservice"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/bookings/service_test.go",
- "source_location": "L188",
- "weight": 1.0,
- "_src": "bookings_service_test_testcreateschedulesreminderjobforupcomingappointment",
- "_tgt": "tenancy_service_newservice",
- "source": "bookings_service_test_testcreateschedulesreminderjobforupcomingappointment",
- "target": "tenancy_service_newservice"
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L51",
- "weight": 1.0,
- "_src": "apps_backend_internal_billing_service_go",
- "_tgt": "billing_webhookenvelope",
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_webhookenvelope",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L353",
- "weight": 1.0,
- "_src": "apps_backend_internal_billing_service_go",
- "_tgt": "billing_service_tosnapshot",
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_tosnapshot",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L390",
- "weight": 1.0,
- "_src": "apps_backend_internal_billing_service_go",
- "_tgt": "billing_service_entitlementsforplan",
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_entitlementsforplan",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L446",
- "weight": 1.0,
- "_src": "apps_backend_internal_billing_service_go",
- "_tgt": "billing_service_displaypricesforplan",
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_displaypricesforplan",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L488",
- "weight": 1.0,
- "_src": "apps_backend_internal_billing_service_go",
- "_tgt": "billing_service_normalizesubscriptionstatus",
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_normalizesubscriptionstatus",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L497",
- "weight": 1.0,
- "_src": "apps_backend_internal_billing_service_go",
- "_tgt": "billing_service_checkoutavailable",
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_checkoutavailable",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L510",
- "weight": 1.0,
- "_src": "apps_backend_internal_billing_service_go",
- "_tgt": "billing_service_customdatastring",
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_customdatastring",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L526",
- "weight": 1.0,
- "_src": "apps_backend_internal_billing_service_go",
- "_tgt": "billing_service_parserfc3339ptr",
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_parserfc3339ptr",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L538",
- "weight": 1.0,
- "_src": "apps_backend_internal_billing_service_go",
- "_tgt": "billing_service_timeperiodstart",
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_timeperiodstart",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L545",
- "weight": 1.0,
- "_src": "apps_backend_internal_billing_service_go",
- "_tgt": "billing_service_timeperiodend",
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_timeperiodend",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L552",
- "weight": 1.0,
- "_src": "apps_backend_internal_billing_service_go",
- "_tgt": "billing_service_derefstring",
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_derefstring",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L559",
- "weight": 1.0,
- "_src": "apps_backend_internal_billing_service_go",
- "_tgt": "billing_service_firstnonempty",
- "source": "apps_backend_internal_billing_service_go",
- "target": "billing_service_firstnonempty",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L189",
- "weight": 1.0,
- "_src": "billing_service_createportalsession",
- "_tgt": "billing_service_derefstring",
- "source": "billing_service_createportalsession",
- "target": "billing_service_derefstring",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L206",
- "weight": 1.0,
- "_src": "billing_service_createportalsession",
- "_tgt": "billing_service_firstnonempty",
- "source": "billing_service_createportalsession",
- "target": "billing_service_firstnonempty",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L281",
- "weight": 1.0,
- "_src": "billing_service_resolvewebhooktenant",
- "_tgt": "billing_service_customdatastring",
- "source": "billing_service_resolvewebhooktenant",
- "target": "billing_service_customdatastring",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L332",
- "weight": 1.0,
- "_src": "billing_service_syncpaddledata",
- "_tgt": "billing_service_normalizesubscriptionstatus",
- "source": "billing_service_syncpaddledata",
- "target": "billing_service_normalizesubscriptionstatus",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L335",
- "weight": 1.0,
- "_src": "billing_service_syncpaddledata",
- "_tgt": "billing_service_parserfc3339ptr",
- "source": "billing_service_syncpaddledata",
- "target": "billing_service_parserfc3339ptr",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L335",
- "weight": 1.0,
- "_src": "billing_service_syncpaddledata",
- "_tgt": "billing_service_timeperiodstart",
- "source": "billing_service_syncpaddledata",
- "target": "billing_service_timeperiodstart",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L336",
- "weight": 1.0,
- "_src": "billing_service_syncpaddledata",
- "_tgt": "billing_service_timeperiodend",
- "source": "billing_service_syncpaddledata",
- "target": "billing_service_timeperiodend",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L361",
- "weight": 1.0,
- "_src": "billing_service_tosnapshot",
- "_tgt": "billing_service_firstnonempty",
- "source": "billing_service_tosnapshot",
- "target": "billing_service_firstnonempty",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L364",
- "weight": 1.0,
- "_src": "billing_service_tosnapshot",
- "_tgt": "billing_service_derefstring",
- "source": "billing_service_tosnapshot",
- "target": "billing_service_derefstring",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L380",
- "weight": 1.0,
- "_src": "billing_service_tosnapshot",
- "_tgt": "billing_service_entitlementsforplan",
- "source": "billing_service_tosnapshot",
- "target": "billing_service_entitlementsforplan",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L381",
- "weight": 1.0,
- "_src": "billing_service_tosnapshot",
- "_tgt": "billing_service_displaypricesforplan",
- "source": "billing_service_tosnapshot",
- "target": "billing_service_displaypricesforplan",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service.go",
- "source_location": "L384",
- "weight": 1.0,
- "_src": "billing_service_tosnapshot",
- "_tgt": "billing_service_checkoutavailable",
- "source": "billing_service_tosnapshot",
- "target": "billing_service_checkoutavailable",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L12",
- "weight": 1.0,
- "_src": "apps_backend_internal_billing_service_test_go",
- "_tgt": "billing_service_test_testconfig",
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "billing_service_test_testconfig",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L25",
- "weight": 1.0,
- "_src": "apps_backend_internal_billing_service_test_go",
- "_tgt": "billing_service_test_testgetsubscriptionfallsbacktosnapshotandentitlements",
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "billing_service_test_testgetsubscriptionfallsbacktosnapshotandentitlements",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L47",
- "weight": 1.0,
- "_src": "apps_backend_internal_billing_service_test_go",
- "_tgt": "billing_service_test_testcreatecheckoutrequirespaddleconfig",
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "billing_service_test_testcreatecheckoutrequirespaddleconfig",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L61",
- "weight": 1.0,
- "_src": "apps_backend_internal_billing_service_test_go",
- "_tgt": "billing_service_test_testcreatecheckoutreturnslaunchpayload",
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "billing_service_test_testcreatecheckoutreturnslaunchpayload",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L82",
- "weight": 1.0,
- "_src": "apps_backend_internal_billing_service_test_go",
- "_tgt": "billing_service_test_testrefreshrequirespaddlekeywhencustomerexists",
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "billing_service_test_testrefreshrequirespaddlekeywhencustomerexists",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L96",
- "weight": 1.0,
- "_src": "apps_backend_internal_billing_service_test_go",
- "_tgt": "billing_service_test_testgetsubscriptiondisablescheckoutwhenwebhookmissing",
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "billing_service_test_testgetsubscriptiondisablescheckoutwhenwebhookmissing",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L113",
- "weight": 1.0,
- "_src": "apps_backend_internal_billing_service_test_go",
- "_tgt": "billing_service_test_testgetsubscriptionenablescheckoutwhenpaddleconfigured",
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "billing_service_test_testgetsubscriptionenablescheckoutwhenpaddleconfigured",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L131",
- "weight": 1.0,
- "_src": "apps_backend_internal_billing_service_test_go",
- "_tgt": "billing_service_test_testcreateportalsessionrequirescustomer",
- "source": "apps_backend_internal_billing_service_test_go",
- "target": "billing_service_test_testcreateportalsessionrequirescustomer",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L26",
- "weight": 1.0,
- "_src": "billing_service_test_testgetsubscriptionfallsbacktosnapshotandentitlements",
- "_tgt": "billing_service_test_testconfig",
- "source": "billing_service_test_testconfig",
- "target": "billing_service_test_testgetsubscriptionfallsbacktosnapshotandentitlements",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L48",
- "weight": 1.0,
- "_src": "billing_service_test_testcreatecheckoutrequirespaddleconfig",
- "_tgt": "billing_service_test_testconfig",
- "source": "billing_service_test_testconfig",
- "target": "billing_service_test_testcreatecheckoutrequirespaddleconfig",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L62",
- "weight": 1.0,
- "_src": "billing_service_test_testcreatecheckoutreturnslaunchpayload",
- "_tgt": "billing_service_test_testconfig",
- "source": "billing_service_test_testconfig",
- "target": "billing_service_test_testcreatecheckoutreturnslaunchpayload",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L83",
- "weight": 1.0,
- "_src": "billing_service_test_testrefreshrequirespaddlekeywhencustomerexists",
- "_tgt": "billing_service_test_testconfig",
- "source": "billing_service_test_testconfig",
- "target": "billing_service_test_testrefreshrequirespaddlekeywhencustomerexists",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L97",
- "weight": 1.0,
- "_src": "billing_service_test_testgetsubscriptiondisablescheckoutwhenwebhookmissing",
- "_tgt": "billing_service_test_testconfig",
- "source": "billing_service_test_testconfig",
- "target": "billing_service_test_testgetsubscriptiondisablescheckoutwhenwebhookmissing",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L114",
- "weight": 1.0,
- "_src": "billing_service_test_testgetsubscriptionenablescheckoutwhenpaddleconfigured",
- "_tgt": "billing_service_test_testconfig",
- "source": "billing_service_test_testconfig",
- "target": "billing_service_test_testgetsubscriptionenablescheckoutwhenpaddleconfigured",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L140",
- "weight": 1.0,
- "_src": "billing_service_test_testcreateportalsessionrequirescustomer",
- "_tgt": "billing_service_test_testconfig",
- "source": "billing_service_test_testconfig",
- "target": "billing_service_test_testcreateportalsessionrequirescustomer",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L26",
- "weight": 1.0,
- "_src": "billing_service_test_testgetsubscriptionfallsbacktosnapshotandentitlements",
- "_tgt": "tenancy_service_newservice",
- "source": "billing_service_test_testgetsubscriptionfallsbacktosnapshotandentitlements",
- "target": "tenancy_service_newservice"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L50",
- "weight": 1.0,
- "_src": "billing_service_test_testcreatecheckoutrequirespaddleconfig",
- "_tgt": "tenancy_service_newservice",
- "source": "billing_service_test_testcreatecheckoutrequirespaddleconfig",
- "target": "tenancy_service_newservice"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L62",
- "weight": 1.0,
- "_src": "billing_service_test_testcreatecheckoutreturnslaunchpayload",
- "_tgt": "tenancy_service_newservice",
- "source": "billing_service_test_testcreatecheckoutreturnslaunchpayload",
- "target": "tenancy_service_newservice"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L85",
- "weight": 1.0,
- "_src": "billing_service_test_testrefreshrequirespaddlekeywhencustomerexists",
- "_tgt": "tenancy_service_newservice",
- "source": "billing_service_test_testrefreshrequirespaddlekeywhencustomerexists",
- "target": "tenancy_service_newservice"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L99",
- "weight": 1.0,
- "_src": "billing_service_test_testgetsubscriptiondisablescheckoutwhenwebhookmissing",
- "_tgt": "tenancy_service_newservice",
- "source": "billing_service_test_testgetsubscriptiondisablescheckoutwhenwebhookmissing",
- "target": "tenancy_service_newservice"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L114",
- "weight": 1.0,
- "_src": "billing_service_test_testgetsubscriptionenablescheckoutwhenpaddleconfigured",
- "_tgt": "tenancy_service_newservice",
- "source": "billing_service_test_testgetsubscriptionenablescheckoutwhenpaddleconfigured",
- "target": "tenancy_service_newservice"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/billing/service_test.go",
- "source_location": "L140",
- "weight": 1.0,
- "_src": "billing_service_test_testcreateportalsessionrequirescustomer",
- "_tgt": "tenancy_service_newservice",
- "source": "billing_service_test_testcreateportalsessionrequirescustomer",
- "target": "tenancy_service_newservice"
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L23",
- "weight": 1.0,
- "_src": "apps_backend_internal_auth_middleware_go",
- "_tgt": "auth_middleware_requireauth",
- "source": "apps_backend_internal_auth_middleware_go",
- "target": "auth_middleware_requireauth",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/middleware.go",
- "source_location": "L82",
- "weight": 1.0,
- "_src": "apps_backend_internal_auth_middleware_go",
- "_tgt": "auth_middleware_principalfromcontext",
- "source": "apps_backend_internal_auth_middleware_go",
- "target": "auth_middleware_principalfromcontext",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L130",
- "weight": 1.0,
- "_src": "api_server_newserver",
- "_tgt": "auth_middleware_requireauth",
- "source": "auth_middleware_requireauth",
- "target": "api_server_newserver"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L133",
- "weight": 1.0,
- "_src": "api_server_newserver",
- "_tgt": "auth_middleware_principalfromcontext",
- "source": "auth_middleware_principalfromcontext",
- "target": "api_server_newserver"
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L15",
- "weight": 1.0,
- "_src": "apps_backend_internal_auth_neon_go",
- "_tgt": "auth_verifier",
- "source": "apps_backend_internal_auth_neon_go",
- "target": "auth_verifier",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L23",
- "weight": 1.0,
- "_src": "apps_backend_internal_auth_neon_go",
- "_tgt": "auth_neon_newverifier",
- "source": "apps_backend_internal_auth_neon_go",
- "target": "auth_neon_newverifier",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L58",
- "weight": 1.0,
- "_src": "auth_verifier",
- "_tgt": "auth_verifier_enabled",
- "source": "auth_verifier",
- "target": "auth_verifier_enabled",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L62",
- "weight": 1.0,
- "_src": "auth_verifier",
- "_tgt": "auth_verifier_close",
- "source": "auth_verifier",
- "target": "auth_verifier_close",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/auth/neon.go",
- "source_location": "L68",
- "weight": 1.0,
- "_src": "auth_verifier",
- "_tgt": "auth_verifier_verify",
- "source": "auth_verifier",
- "target": "auth_verifier_verify",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L34",
- "weight": 1.0,
- "_src": "api_server_newserver",
- "_tgt": "auth_neon_newverifier",
- "source": "auth_neon_newverifier",
- "target": "api_server_newserver"
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L26",
- "weight": 1.0,
- "_src": "apps_backend_internal_api_server_go",
- "_tgt": "api_server",
- "source": "apps_backend_internal_api_server_go",
- "target": "api_server",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L33",
- "weight": 1.0,
- "_src": "apps_backend_internal_api_server_go",
- "_tgt": "api_server_newserver",
- "source": "apps_backend_internal_api_server_go",
- "target": "api_server_newserver",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L600",
- "weight": 1.0,
- "_src": "apps_backend_internal_api_server_go",
- "_tgt": "api_server_authorizejobrunner",
- "source": "apps_backend_internal_api_server_go",
- "target": "api_server_authorizejobrunner",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L607",
- "weight": 1.0,
- "_src": "apps_backend_internal_api_server_go",
- "_tgt": "api_server_allowedorigins",
- "source": "apps_backend_internal_api_server_go",
- "target": "api_server_allowedorigins",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L634",
- "weight": 1.0,
- "_src": "apps_backend_internal_api_server_go",
- "_tgt": "api_server_widgetjavascript",
- "source": "apps_backend_internal_api_server_go",
- "target": "api_server_widgetjavascript",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L590",
- "weight": 1.0,
- "_src": "api_server",
- "_tgt": "api_server_handler",
- "source": "api_server",
- "target": "api_server_handler",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L594",
- "weight": 1.0,
- "_src": "api_server",
- "_tgt": "api_server_close",
- "source": "api_server",
- "target": "api_server_close",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L56",
- "weight": 1.0,
- "_src": "api_server_newserver",
- "_tgt": "api_server_allowedorigins",
- "source": "api_server_newserver",
- "target": "api_server_allowedorigins",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L561",
- "weight": 1.0,
- "_src": "api_server_newserver",
- "_tgt": "api_server_authorizejobrunner",
- "source": "api_server_newserver",
- "target": "api_server_authorizejobrunner",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L584",
- "weight": 1.0,
- "_src": "api_server_newserver",
- "_tgt": "api_server_widgetjavascript",
- "source": "api_server_newserver",
- "target": "api_server_widgetjavascript",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server.go",
- "source_location": "L40",
- "weight": 1.0,
- "_src": "api_server_newserver",
- "_tgt": "tenancy_service_newservice",
- "source": "api_server_newserver",
- "target": "tenancy_service_newservice"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L12",
- "weight": 1.0,
- "_src": "api_server_test_testdispatchreminderjobsrequiresjobrunnerkey",
- "_tgt": "api_server_newserver",
- "source": "api_server_newserver",
- "target": "api_server_test_testdispatchreminderjobsrequiresjobrunnerkey"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L34",
- "weight": 1.0,
- "_src": "api_server_test_testdispatchreminderjobsacceptsconfiguredjobrunnerkey",
- "_tgt": "api_server_newserver",
- "source": "api_server_newserver",
- "target": "api_server_test_testdispatchreminderjobsacceptsconfiguredjobrunnerkey"
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L11",
- "weight": 1.0,
- "_src": "apps_backend_internal_api_server_test_go",
- "_tgt": "api_server_test_testdispatchreminderjobsrequiresjobrunnerkey",
- "source": "apps_backend_internal_api_server_test_go",
- "target": "api_server_test_testdispatchreminderjobsrequiresjobrunnerkey",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/api/server_test.go",
- "source_location": "L33",
- "weight": 1.0,
- "_src": "apps_backend_internal_api_server_test_go",
- "_tgt": "api_server_test_testdispatchreminderjobsacceptsconfiguredjobrunnerkey",
- "source": "apps_backend_internal_api_server_test_go",
- "target": "api_server_test_testdispatchreminderjobsacceptsconfiguredjobrunnerkey",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L25",
- "weight": 1.0,
- "_src": "apps_backend_internal_tenancy_service_go",
- "_tgt": "tenancy_service",
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "tenancy_service",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L29",
- "weight": 1.0,
- "_src": "apps_backend_internal_tenancy_service_go",
- "_tgt": "tenancy_service_newservice",
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "tenancy_service_newservice",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L195",
- "weight": 1.0,
- "_src": "apps_backend_internal_tenancy_service_go",
- "_tgt": "tenancy_service_validateavailabilityblocks",
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "tenancy_service_validateavailabilityblocks",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L218",
- "weight": 1.0,
- "_src": "apps_backend_internal_tenancy_service_go",
- "_tgt": "tenancy_service_toavailabilityblocks",
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "tenancy_service_toavailabilityblocks",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L231",
- "weight": 1.0,
- "_src": "apps_backend_internal_tenancy_service_go",
- "_tgt": "tenancy_service_toteaminvites",
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "tenancy_service_toteaminvites",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L247",
- "weight": 1.0,
- "_src": "apps_backend_internal_tenancy_service_go",
- "_tgt": "tenancy_service_normalizeclock",
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "tenancy_service_normalizeclock",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L255",
- "weight": 1.0,
- "_src": "apps_backend_internal_tenancy_service_go",
- "_tgt": "tenancy_service_normalizeplancode",
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "tenancy_service_normalizeplancode",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L266",
- "weight": 1.0,
- "_src": "apps_backend_internal_tenancy_service_go",
- "_tgt": "tenancy_service_firstnonempty",
- "source": "apps_backend_internal_tenancy_service_go",
- "target": "tenancy_service_firstnonempty",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L33",
- "weight": 1.0,
- "_src": "tenancy_service",
- "_tgt": "tenancy_service_bootstrap",
- "source": "tenancy_service",
- "target": "tenancy_service_bootstrap",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L73",
- "weight": 1.0,
- "_src": "tenancy_service",
- "_tgt": "tenancy_service_onboard",
- "source": "tenancy_service",
- "target": "tenancy_service_onboard",
- "confidence_score": 1.0
- },
- {
- "relation": "method",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L182",
- "weight": 1.0,
- "_src": "tenancy_service",
- "_tgt": "tenancy_service_brandprofile",
- "source": "tenancy_service",
- "target": "tenancy_service_brandprofile",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L13",
- "weight": 1.0,
- "_src": "tenancy_service_test_testbootstrapresolvesmembershipafteridentitysync",
- "_tgt": "tenancy_service_newservice",
- "source": "tenancy_service_newservice",
- "target": "tenancy_service_test_testbootstrapresolvesmembershipafteridentitysync"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L42",
- "weight": 1.0,
- "_src": "tenancy_service_test_testbootstrapreturnsshellwhenmembershipmissing",
- "_tgt": "tenancy_service_newservice",
- "source": "tenancy_service_newservice",
- "target": "tenancy_service_test_testbootstrapreturnsshellwhenmembershipmissing"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L64",
- "weight": 1.0,
- "_src": "tenancy_service_test_testonboardcreatestenantforauthenticateduser",
- "_tgt": "tenancy_service_newservice",
- "source": "tenancy_service_newservice",
- "target": "tenancy_service_test_testonboardcreatestenantforauthenticateduser"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L91",
- "weight": 1.0,
- "_src": "tenancy_service_test_testonboardrejectsinvalidslug",
- "_tgt": "tenancy_service_newservice",
- "source": "tenancy_service_newservice",
- "target": "tenancy_service_test_testonboardrejectsinvalidslug"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L61",
- "weight": 1.0,
- "_src": "tenancy_service_bootstrap",
- "_tgt": "tenancy_service_normalizeplancode",
- "source": "tenancy_service_bootstrap",
- "target": "tenancy_service_normalizeplancode",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L63",
- "weight": 1.0,
- "_src": "tenancy_service_bootstrap",
- "_tgt": "tenancy_service_brandprofile",
- "source": "tenancy_service_bootstrap",
- "target": "tenancy_service_brandprofile",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L126",
- "weight": 1.0,
- "_src": "tenancy_service_onboard",
- "_tgt": "tenancy_service_validateavailabilityblocks",
- "source": "tenancy_service_onboard",
- "target": "tenancy_service_validateavailabilityblocks",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L147",
- "weight": 1.0,
- "_src": "tenancy_service_onboard",
- "_tgt": "tenancy_service_toavailabilityblocks",
- "source": "tenancy_service_onboard",
- "target": "tenancy_service_toavailabilityblocks",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L148",
- "weight": 1.0,
- "_src": "tenancy_service_onboard",
- "_tgt": "tenancy_service_toteaminvites",
- "source": "tenancy_service_onboard",
- "target": "tenancy_service_toteaminvites",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L165",
- "weight": 1.0,
- "_src": "tenancy_service_onboard",
- "_tgt": "tenancy_service_normalizeplancode",
- "source": "tenancy_service_onboard",
- "target": "tenancy_service_normalizeplancode",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L188",
- "weight": 1.0,
- "_src": "tenancy_service_brandprofile",
- "_tgt": "tenancy_service_firstnonempty",
- "source": "tenancy_service_brandprofile",
- "target": "tenancy_service_firstnonempty",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service.go",
- "source_location": "L223",
- "weight": 1.0,
- "_src": "tenancy_service_toavailabilityblocks",
- "_tgt": "tenancy_service_normalizeclock",
- "source": "tenancy_service_toavailabilityblocks",
- "target": "tenancy_service_normalizeclock",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L11",
- "weight": 1.0,
- "_src": "apps_backend_internal_tenancy_service_test_go",
- "_tgt": "tenancy_service_test_testbootstrapresolvesmembershipafteridentitysync",
- "source": "apps_backend_internal_tenancy_service_test_go",
- "target": "tenancy_service_test_testbootstrapresolvesmembershipafteridentitysync",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L40",
- "weight": 1.0,
- "_src": "apps_backend_internal_tenancy_service_test_go",
- "_tgt": "tenancy_service_test_testbootstrapreturnsshellwhenmembershipmissing",
- "source": "apps_backend_internal_tenancy_service_test_go",
- "target": "tenancy_service_test_testbootstrapreturnsshellwhenmembershipmissing",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L62",
- "weight": 1.0,
- "_src": "apps_backend_internal_tenancy_service_test_go",
- "_tgt": "tenancy_service_test_testonboardcreatestenantforauthenticateduser",
- "source": "apps_backend_internal_tenancy_service_test_go",
- "target": "tenancy_service_test_testonboardcreatestenantforauthenticateduser",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/backend/internal/tenancy/service_test.go",
- "source_location": "L89",
- "weight": 1.0,
- "_src": "apps_backend_internal_tenancy_service_test_go",
- "_tgt": "tenancy_service_test_testonboardrejectsinvalidslug",
- "source": "apps_backend_internal_tenancy_service_test_go",
- "target": "tenancy_service_test_testonboardrejectsinvalidslug",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L10",
- "weight": 1.0,
- "_src": "apps_frontend_src_app_tsx",
- "_tgt": "src_app_scrolltotop",
- "source": "apps_frontend_src_app_tsx",
- "target": "src_app_scrolltotop",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/App.tsx",
- "source_location": "L22",
- "weight": 1.0,
- "_src": "apps_frontend_src_app_tsx",
- "_tgt": "src_app_app",
- "source": "apps_frontend_src_app_tsx",
- "target": "src_app_app",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/about-route.tsx",
- "source_location": "L6",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_about_route_tsx",
- "_tgt": "routes_about_route_aboutroute",
- "source": "apps_frontend_src_routes_about_route_tsx",
- "target": "routes_about_route_aboutroute",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/auth-callback-route.tsx",
- "source_location": "L6",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_auth_callback_route_tsx",
- "_tgt": "routes_auth_callback_route_authcallbackroute",
- "source": "apps_frontend_src_routes_auth_callback_route_tsx",
- "target": "routes_auth_callback_route_authcallbackroute",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L12",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_public_booking_route_tsx",
- "_tgt": "routes_public_booking_route_tenantslug",
- "source": "apps_frontend_src_routes_public_booking_route_tsx",
- "target": "routes_public_booking_route_tenantslug",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L31",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_public_booking_route_tsx",
- "_tgt": "routes_public_booking_route_bookslot",
- "source": "apps_frontend_src_routes_public_booking_route_tsx",
- "target": "routes_public_booking_route_bookslot",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/public-booking-route.tsx",
- "source_location": "L41",
- "weight": 1.0,
- "_src": "routes_public_booking_route_bookslot",
- "_tgt": "routes_public_booking_route_tenantslug",
- "source": "routes_public_booking_route_tenantslug",
- "target": "routes_public_booking_route_bookslot",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L33",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_layoutdashboardicon",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_layoutdashboardicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L42",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_calendardaysicon",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_calendardaysicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L52",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_creditcardicon",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_creditcardicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L59",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_settings2icon",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_settings2icon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L67",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_logouticon",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_logouticon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L75",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_menuicon",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_menuicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L81",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_xicon",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_xicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L87",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_trendingupicon",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_trendingupicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L94",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_trendingdownicon",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_trendingdownicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L101",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_clockicon",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_clockicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L107",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_checkcircleicon",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_checkcircleicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L113",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_alertcircleicon",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_alertcircleicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L119",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_morehorizontalicon",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_morehorizontalicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L125",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_chevronlefticon",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_chevronlefticon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L131",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_chevronrighticon",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_chevronrighticon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L137",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_sparklesicon",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_sparklesicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L143",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_bellicon",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_bellicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L149",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_plusicon",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_plusicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L155",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_usersicon",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_usersicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L161",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_usercircleicon",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_usercircleicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L319",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_iscs",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_iscs",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L347",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_changemonth",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_changemonth",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L355",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_prevmonth",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_prevmonth",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L356",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_nextmonth",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_nextmonth",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L449",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_trend",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_trend",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L450",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_trendclass",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_trendclass",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L460",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_sparklineclass",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_sparklineclass",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L571",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_isdemomode",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_isdemomode",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L595",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_resolvedsummary",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_resolvedsummary",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L596",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_resolvedbootstrap",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_resolvedbootstrap",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L597",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_resolvedbilling",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_resolvedbilling",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L642",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_hastenant",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_hastenant",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L643",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_isdashboardready",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_isdashboardready",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L645",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_refreshbilling",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_refreshbilling",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L669",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_opencheckout",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_opencheckout",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L716",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_openbillingportal",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_openbillingportal",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L754",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_changesection",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_changesection",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L895",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_resolvedallbookings",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_resolvedallbookings",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L954",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_handlecreatebooking",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_handlecreatebooking",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L989",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_handleupdatebooking",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_handleupdatebooking",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1015",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_handlecancelbooking",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_handlecancelbooking",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1028",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_handlereschedulebooking",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_handlereschedulebooking",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1045",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_openbookingdetail",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_openbookingdetail",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1076",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_bookingstats",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_bookingstats",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1538",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_billingpricelabel",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_billingpricelabel",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1592",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_handlesavebrand",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_handlesavebrand",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2184",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_getdemocustomers",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_getdemocustomers",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2192",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_resolvedcustomers",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_resolvedcustomers",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2193",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_resolvedbookings",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_resolvedbookings",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2223",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_getcustomerbookings",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_getcustomerbookings",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2229",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_opencustomerdetail",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_opencustomerdetail",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2259",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_filteredcustomers",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_filteredcustomers",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2496",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_demodata",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_demodata",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2519",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_resolvedlocations",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_resolvedlocations",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2520",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_resolvedblockeddays",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_resolvedblockeddays",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2521",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_resolvedworkinghours",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_resolvedworkinghours",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2523",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_handleaddzone",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_handleaddzone",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2540",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_handleaddblockedday",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_handleaddblockedday",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2562",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_dashboard_route_tsx",
- "_tgt": "routes_dashboard_route_handledeleteblockedday",
- "source": "apps_frontend_src_routes_dashboard_route_tsx",
- "target": "routes_dashboard_route_handledeleteblockedday",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L355",
- "weight": 1.0,
- "_src": "routes_dashboard_route_prevmonth",
- "_tgt": "routes_dashboard_route_changemonth",
- "source": "routes_dashboard_route_changemonth",
- "target": "routes_dashboard_route_prevmonth",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L356",
- "weight": 1.0,
- "_src": "routes_dashboard_route_nextmonth",
- "_tgt": "routes_dashboard_route_changemonth",
- "source": "routes_dashboard_route_changemonth",
- "target": "routes_dashboard_route_nextmonth",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L451",
- "weight": 1.0,
- "_src": "routes_dashboard_route_trendclass",
- "_tgt": "routes_dashboard_route_trend",
- "source": "routes_dashboard_route_trend",
- "target": "routes_dashboard_route_trendclass",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L461",
- "weight": 1.0,
- "_src": "routes_dashboard_route_sparklineclass",
- "_tgt": "routes_dashboard_route_trend",
- "source": "routes_dashboard_route_trend",
- "target": "routes_dashboard_route_sparklineclass",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L595",
- "weight": 1.0,
- "_src": "routes_dashboard_route_resolvedsummary",
- "_tgt": "routes_dashboard_route_isdemomode",
- "source": "routes_dashboard_route_isdemomode",
- "target": "routes_dashboard_route_resolvedsummary",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L596",
- "weight": 1.0,
- "_src": "routes_dashboard_route_resolvedbootstrap",
- "_tgt": "routes_dashboard_route_isdemomode",
- "source": "routes_dashboard_route_isdemomode",
- "target": "routes_dashboard_route_resolvedbootstrap",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L597",
- "weight": 1.0,
- "_src": "routes_dashboard_route_resolvedbilling",
- "_tgt": "routes_dashboard_route_isdemomode",
- "source": "routes_dashboard_route_isdemomode",
- "target": "routes_dashboard_route_resolvedbilling",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L642",
- "weight": 1.0,
- "_src": "routes_dashboard_route_hastenant",
- "_tgt": "routes_dashboard_route_isdemomode",
- "source": "routes_dashboard_route_isdemomode",
- "target": "routes_dashboard_route_hastenant",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L643",
- "weight": 1.0,
- "_src": "routes_dashboard_route_isdashboardready",
- "_tgt": "routes_dashboard_route_isdemomode",
- "source": "routes_dashboard_route_isdemomode",
- "target": "routes_dashboard_route_isdashboardready",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L571",
- "weight": 1.0,
- "_src": "routes_dashboard_route_isdemomode",
- "_tgt": "routes_booking_manage_route_token",
- "source": "routes_dashboard_route_isdemomode",
- "target": "routes_booking_manage_route_token"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L595",
- "weight": 1.0,
- "_src": "routes_dashboard_route_resolvedsummary",
- "_tgt": "routes_dashboard_route_demodata",
- "source": "routes_dashboard_route_resolvedsummary",
- "target": "routes_dashboard_route_demodata",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L596",
- "weight": 1.0,
- "_src": "routes_dashboard_route_resolvedbootstrap",
- "_tgt": "routes_dashboard_route_demodata",
- "source": "routes_dashboard_route_resolvedbootstrap",
- "target": "routes_dashboard_route_demodata",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L597",
- "weight": 1.0,
- "_src": "routes_dashboard_route_resolvedbilling",
- "_tgt": "routes_dashboard_route_demodata",
- "source": "routes_dashboard_route_resolvedbilling",
- "target": "routes_dashboard_route_demodata",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L683",
- "weight": 1.0,
- "_src": "routes_dashboard_route_opencheckout",
- "_tgt": "routes_dashboard_route_resolvedbilling",
- "source": "routes_dashboard_route_resolvedbilling",
- "target": "routes_dashboard_route_opencheckout",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L643",
- "weight": 1.0,
- "_src": "routes_dashboard_route_isdashboardready",
- "_tgt": "routes_dashboard_route_hastenant",
- "source": "routes_dashboard_route_hastenant",
- "target": "routes_dashboard_route_isdashboardready",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L643",
- "weight": 1.0,
- "_src": "routes_dashboard_route_isdashboardready",
- "_tgt": "routes_booking_manage_route_token",
- "source": "routes_dashboard_route_isdashboardready",
- "target": "routes_booking_manage_route_token"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L646",
- "weight": 1.0,
- "_src": "routes_dashboard_route_refreshbilling",
- "_tgt": "routes_booking_manage_route_token",
- "source": "routes_dashboard_route_refreshbilling",
- "target": "routes_booking_manage_route_token"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L670",
- "weight": 1.0,
- "_src": "routes_dashboard_route_opencheckout",
- "_tgt": "routes_booking_manage_route_token",
- "source": "routes_dashboard_route_opencheckout",
- "target": "routes_booking_manage_route_token"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L676",
- "weight": 1.0,
- "_src": "routes_dashboard_route_opencheckout",
- "_tgt": "lib_paddle_paddleconfigured",
- "source": "routes_dashboard_route_opencheckout",
- "target": "lib_paddle_paddleconfigured"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L696",
- "weight": 1.0,
- "_src": "routes_dashboard_route_opencheckout",
- "_tgt": "lib_paddle_getpaddle",
- "source": "routes_dashboard_route_opencheckout",
- "target": "lib_paddle_getpaddle"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L717",
- "weight": 1.0,
- "_src": "routes_dashboard_route_openbillingportal",
- "_tgt": "routes_booking_manage_route_token",
- "source": "routes_dashboard_route_openbillingportal",
- "target": "routes_booking_manage_route_token"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L895",
- "weight": 1.0,
- "_src": "routes_dashboard_route_resolvedallbookings",
- "_tgt": "routes_dashboard_route_demodata",
- "source": "routes_dashboard_route_resolvedallbookings",
- "target": "routes_dashboard_route_demodata",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L955",
- "weight": 1.0,
- "_src": "routes_dashboard_route_handlecreatebooking",
- "_tgt": "routes_booking_manage_route_token",
- "source": "routes_dashboard_route_handlecreatebooking",
- "target": "routes_booking_manage_route_token"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L990",
- "weight": 1.0,
- "_src": "routes_dashboard_route_handleupdatebooking",
- "_tgt": "routes_booking_manage_route_token",
- "source": "routes_dashboard_route_handleupdatebooking",
- "target": "routes_booking_manage_route_token"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1016",
- "weight": 1.0,
- "_src": "routes_dashboard_route_handlecancelbooking",
- "_tgt": "routes_booking_manage_route_token",
- "source": "routes_dashboard_route_handlecancelbooking",
- "target": "routes_booking_manage_route_token"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1029",
- "weight": 1.0,
- "_src": "routes_dashboard_route_handlereschedulebooking",
- "_tgt": "routes_booking_manage_route_token",
- "source": "routes_dashboard_route_handlereschedulebooking",
- "target": "routes_booking_manage_route_token"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L1593",
- "weight": 1.0,
- "_src": "routes_dashboard_route_handlesavebrand",
- "_tgt": "routes_booking_manage_route_token",
- "source": "routes_dashboard_route_handlesavebrand",
- "target": "routes_booking_manage_route_token"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2192",
- "weight": 1.0,
- "_src": "routes_dashboard_route_resolvedcustomers",
- "_tgt": "routes_dashboard_route_getdemocustomers",
- "source": "routes_dashboard_route_getdemocustomers",
- "target": "routes_dashboard_route_resolvedcustomers",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2193",
- "weight": 1.0,
- "_src": "routes_dashboard_route_resolvedbookings",
- "_tgt": "routes_dashboard_route_demodata",
- "source": "routes_dashboard_route_resolvedbookings",
- "target": "routes_dashboard_route_demodata",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2224",
- "weight": 1.0,
- "_src": "routes_dashboard_route_getcustomerbookings",
- "_tgt": "routes_dashboard_route_resolvedbookings",
- "source": "routes_dashboard_route_resolvedbookings",
- "target": "routes_dashboard_route_getcustomerbookings",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2519",
- "weight": 1.0,
- "_src": "routes_dashboard_route_resolvedlocations",
- "_tgt": "routes_dashboard_route_demodata",
- "source": "routes_dashboard_route_demodata",
- "target": "routes_dashboard_route_resolvedlocations",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2520",
- "weight": 1.0,
- "_src": "routes_dashboard_route_resolvedblockeddays",
- "_tgt": "routes_dashboard_route_demodata",
- "source": "routes_dashboard_route_demodata",
- "target": "routes_dashboard_route_resolvedblockeddays",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2521",
- "weight": 1.0,
- "_src": "routes_dashboard_route_resolvedworkinghours",
- "_tgt": "routes_dashboard_route_demodata",
- "source": "routes_dashboard_route_demodata",
- "target": "routes_dashboard_route_resolvedworkinghours",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2524",
- "weight": 1.0,
- "_src": "routes_dashboard_route_handleaddzone",
- "_tgt": "routes_booking_manage_route_token",
- "source": "routes_dashboard_route_handleaddzone",
- "target": "routes_booking_manage_route_token"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2541",
- "weight": 1.0,
- "_src": "routes_dashboard_route_handleaddblockedday",
- "_tgt": "routes_booking_manage_route_token",
- "source": "routes_dashboard_route_handleaddblockedday",
- "target": "routes_booking_manage_route_token"
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/routes/dashboard-route.tsx",
- "source_location": "L2563",
- "weight": 1.0,
- "_src": "routes_dashboard_route_handledeleteblockedday",
- "_tgt": "routes_booking_manage_route_token",
- "source": "routes_dashboard_route_handledeleteblockedday",
- "target": "routes_booking_manage_route_token"
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/contact-route.tsx",
- "source_location": "L14",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_contact_route_tsx",
- "_tgt": "routes_contact_route_handlesubmit",
- "source": "apps_frontend_src_routes_contact_route_tsx",
- "target": "routes_contact_route_handlesubmit",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L7",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_home_route_tsx",
- "_tgt": "routes_home_route_calendaricon",
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_calendaricon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L16",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_home_route_tsx",
- "_tgt": "routes_home_route_clockicon",
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_clockicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L23",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_home_route_tsx",
- "_tgt": "routes_home_route_usersicon",
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_usersicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L32",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_home_route_tsx",
- "_tgt": "routes_home_route_bellicon",
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_bellicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L39",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_home_route_tsx",
- "_tgt": "routes_home_route_shieldicon",
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_shieldicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L45",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_home_route_tsx",
- "_tgt": "routes_home_route_zapicon",
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_zapicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L51",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_home_route_tsx",
- "_tgt": "routes_home_route_arrowrighticon",
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_arrowrighticon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L58",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_home_route_tsx",
- "_tgt": "routes_home_route_checkicon",
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_checkicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L64",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_home_route_tsx",
- "_tgt": "routes_home_route_sunicon",
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_sunicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L78",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_home_route_tsx",
- "_tgt": "routes_home_route_moonicon",
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_moonicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L91",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_home_route_tsx",
- "_tgt": "routes_home_route_stepcard",
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_stepcard",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L121",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_home_route_tsx",
- "_tgt": "routes_home_route_prevmonth",
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_prevmonth",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/home-route.tsx",
- "source_location": "L127",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_home_route_tsx",
- "_tgt": "routes_home_route_nextmonth",
- "source": "apps_frontend_src_routes_home_route_tsx",
- "target": "routes_home_route_nextmonth",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/not-found-route.tsx",
- "source_location": "L5",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_not_found_route_tsx",
- "_tgt": "routes_not_found_route_notfoundroute",
- "source": "apps_frontend_src_routes_not_found_route_tsx",
- "target": "routes_not_found_route_notfoundroute",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L10",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_legal_route_tsx",
- "_tgt": "routes_legal_route_kind",
- "source": "apps_frontend_src_routes_legal_route_tsx",
- "target": "routes_legal_route_kind",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L11",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_legal_route_tsx",
- "_tgt": "routes_legal_route_heropose",
- "source": "apps_frontend_src_routes_legal_route_tsx",
- "target": "routes_legal_route_heropose",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L12",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_legal_route_tsx",
- "_tgt": "routes_legal_route_helperpose",
- "source": "apps_frontend_src_routes_legal_route_tsx",
- "target": "routes_legal_route_helperpose",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L13",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_legal_route_tsx",
- "_tgt": "routes_legal_route_sections",
- "source": "apps_frontend_src_routes_legal_route_tsx",
- "target": "routes_legal_route_sections",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L11",
- "weight": 1.0,
- "_src": "routes_legal_route_heropose",
- "_tgt": "routes_legal_route_kind",
- "source": "routes_legal_route_kind",
- "target": "routes_legal_route_heropose",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L12",
- "weight": 1.0,
- "_src": "routes_legal_route_helperpose",
- "_tgt": "routes_legal_route_kind",
- "source": "routes_legal_route_kind",
- "target": "routes_legal_route_helperpose",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/legal-route.tsx",
- "source_location": "L14",
- "weight": 1.0,
- "_src": "routes_legal_route_sections",
- "_tgt": "routes_legal_route_kind",
- "source": "routes_legal_route_kind",
- "target": "routes_legal_route_sections",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L20",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_booking_manage_route_tsx",
- "_tgt": "routes_booking_manage_route_token",
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "routes_booking_manage_route_token",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L21",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_booking_manage_route_tsx",
- "_tgt": "routes_booking_manage_route_reference",
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "routes_booking_manage_route_reference",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L51",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_booking_manage_route_tsx",
- "_tgt": "routes_booking_manage_route_handlereschedule",
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "routes_booking_manage_route_handlereschedule",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L96",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_booking_manage_route_tsx",
- "_tgt": "routes_booking_manage_route_handlecancel",
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "routes_booking_manage_route_handlecancel",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L126",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_booking_manage_route_tsx",
- "_tgt": "routes_booking_manage_route_formatdate",
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "routes_booking_manage_route_formatdate",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L250",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_booking_manage_route_tsx",
- "_tgt": "routes_booking_manage_route_formattime",
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "routes_booking_manage_route_formattime",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L352",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_booking_manage_route_tsx",
- "_tgt": "routes_booking_manage_route_isrescheduling",
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "routes_booking_manage_route_isrescheduling",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L411",
- "weight": 1.0,
- "_src": "apps_frontend_src_routes_booking_manage_route_tsx",
- "_tgt": "routes_booking_manage_route_iscancelling",
- "source": "apps_frontend_src_routes_booking_manage_route_tsx",
- "target": "routes_booking_manage_route_iscancelling",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L61",
- "weight": 1.0,
- "_src": "routes_booking_manage_route_handlereschedule",
- "_tgt": "routes_booking_manage_route_token",
- "source": "routes_booking_manage_route_token",
- "target": "routes_booking_manage_route_handlereschedule",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L101",
- "weight": 1.0,
- "_src": "routes_booking_manage_route_handlecancel",
- "_tgt": "routes_booking_manage_route_token",
- "source": "routes_booking_manage_route_token",
- "target": "routes_booking_manage_route_handlecancel",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L60",
- "weight": 1.0,
- "_src": "routes_booking_manage_route_handlereschedule",
- "_tgt": "routes_booking_manage_route_reference",
- "source": "routes_booking_manage_route_reference",
- "target": "routes_booking_manage_route_handlereschedule",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/routes/booking-manage-route.tsx",
- "source_location": "L100",
- "weight": 1.0,
- "_src": "routes_booking_manage_route_handlecancel",
- "_tgt": "routes_booking_manage_route_reference",
- "source": "routes_booking_manage_route_reference",
- "target": "routes_booking_manage_route_handlecancel",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/bookra-character.tsx",
- "source_location": "L79",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_bookra_character_tsx",
- "_tgt": "components_bookra_character_bookracharacter",
- "source": "apps_frontend_src_components_bookra_character_tsx",
- "target": "components_bookra_character_bookracharacter",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/bookra-character.tsx",
- "source_location": "L125",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_bookra_character_tsx",
- "_tgt": "components_bookra_character_characterwithmessage",
- "source": "apps_frontend_src_components_bookra_character_tsx",
- "target": "components_bookra_character_characterwithmessage",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/integration-modal.tsx",
- "source_location": "L16",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_integration_modal_tsx",
- "_tgt": "components_integration_modal_copytoclipboard",
- "source": "apps_frontend_src_components_integration_modal_tsx",
- "target": "components_integration_modal_copytoclipboard",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L29",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_location_map_tsx",
- "_tgt": "components_location_map_loadleaflet",
- "source": "apps_frontend_src_components_location_map_tsx",
- "target": "components_location_map_loadleaflet",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L61",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_location_map_tsx",
- "_tgt": "components_location_map_safemarkercolor",
- "source": "apps_frontend_src_components_location_map_tsx",
- "target": "components_location_map_safemarkercolor",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L68",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_location_map_tsx",
- "_tgt": "components_location_map_escapehtml",
- "source": "apps_frontend_src_components_location_map_tsx",
- "target": "components_location_map_escapehtml",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L77",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_location_map_tsx",
- "_tgt": "components_location_map_createmarkericon",
- "source": "apps_frontend_src_components_location_map_tsx",
- "target": "components_location_map_createmarkericon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L88",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_location_map_tsx",
- "_tgt": "components_location_map_locationmap",
- "source": "apps_frontend_src_components_location_map_tsx",
- "target": "components_location_map_locationmap",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/location-map.tsx",
- "source_location": "L78",
- "weight": 1.0,
- "_src": "components_location_map_createmarkericon",
- "_tgt": "components_location_map_safemarkercolor",
- "source": "components_location_map_safemarkercolor",
- "target": "components_location_map_createmarkericon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L19",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_shell_tsx",
- "_tgt": "components_shell_sunicon",
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_sunicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L33",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_shell_tsx",
- "_tgt": "components_shell_moonicon",
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_moonicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L39",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_shell_tsx",
- "_tgt": "components_shell_globeicon",
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_globeicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L47",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_shell_tsx",
- "_tgt": "components_shell_menuicon",
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_menuicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L55",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_shell_tsx",
- "_tgt": "components_shell_xicon",
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_xicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L62",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_shell_tsx",
- "_tgt": "components_shell_googleicon",
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_googleicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L78",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_shell_tsx",
- "_tgt": "components_shell_hideheader",
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_hideheader",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L88",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_shell_tsx",
- "_tgt": "components_shell_showgooglesignin",
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_showgooglesignin",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L96",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_shell_tsx",
- "_tgt": "components_shell_isdemomode",
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_isdemomode",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L103",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_shell_tsx",
- "_tgt": "components_shell_handleopenauth",
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_handleopenauth",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L114",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_shell_tsx",
- "_tgt": "components_shell_submitsignin",
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_submitsignin",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L146",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_shell_tsx",
- "_tgt": "components_shell_translateautherror",
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_translateautherror",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L179",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_shell_tsx",
- "_tgt": "components_shell_sendmagiclink",
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_sendmagiclink",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L194",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_shell_tsx",
- "_tgt": "components_shell_signinwithgoogle",
- "source": "apps_frontend_src_components_shell_tsx",
- "target": "components_shell_signinwithgoogle",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/shell.tsx",
- "source_location": "L138",
- "weight": 1.0,
- "_src": "components_shell_submitsignin",
- "_tgt": "components_shell_translateautherror",
- "source": "components_shell_submitsignin",
- "target": "components_shell_translateautherror",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L39",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_copyicon",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_copyicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L46",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_checkicon",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_checkicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L52",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_codeicon",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_codeicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L59",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_externallinkicon",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_externallinkicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L67",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_iframeicon",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_iframeicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L75",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_buttonicon",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_buttonicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L81",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_calendaricon",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_calendaricon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L90",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_modalicon",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_modalicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L100",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_floatingicon",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_floatingicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L108",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_sunicon",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_sunicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L122",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_moonicon",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_moonicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L128",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_refreshicon",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_refreshicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L137",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_lockicon",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_lockicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L144",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_dragicon",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_dragicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L155",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_moveicon",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_moveicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L166",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_paletteicon",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_paletteicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L176",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_mapicon",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_mapicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L184",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_eyeicon",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_eyeicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L199",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_json",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_json",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L203",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_generatedmapelementid",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_generatedmapelementid",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L207",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_safehexcolor",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_safehexcolor",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L281",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_resolvemaplocation",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_resolvemaplocation",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L305",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_generatemapcode",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_generatemapcode",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L429",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_handledragstart",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_handledragstart",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L433",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_handledragover",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_handledragover",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L445",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_handledragend",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_handledragend",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L449",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_generatecode",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_generatecode",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L1076",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_widget_builder_tsx",
- "_tgt": "components_widget_builder_copytoclipboard",
- "source": "apps_frontend_src_components_widget_builder_tsx",
- "target": "components_widget_builder_copytoclipboard",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L322",
- "weight": 1.0,
- "_src": "components_widget_builder_generatemapcode",
- "_tgt": "components_widget_builder_json",
- "source": "components_widget_builder_json",
- "target": "components_widget_builder_generatemapcode",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L308",
- "weight": 1.0,
- "_src": "components_widget_builder_generatemapcode",
- "_tgt": "components_widget_builder_generatedmapelementid",
- "source": "components_widget_builder_generatedmapelementid",
- "target": "components_widget_builder_generatemapcode",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L309",
- "weight": 1.0,
- "_src": "components_widget_builder_generatemapcode",
- "_tgt": "components_widget_builder_safehexcolor",
- "source": "components_widget_builder_safehexcolor",
- "target": "components_widget_builder_generatemapcode",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "INFERRED",
- "confidence_score": 0.8,
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L285",
- "weight": 1.0,
- "_src": "components_widget_builder_resolvemaplocation",
- "_tgt": "lib_map_resolvelocationinput",
- "source": "components_widget_builder_resolvemaplocation",
- "target": "lib_map_resolvelocationinput"
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/widget-builder.tsx",
- "source_location": "L469",
- "weight": 1.0,
- "_src": "components_widget_builder_generatecode",
- "_tgt": "components_widget_builder_generatemapcode",
- "source": "components_widget_builder_generatemapcode",
- "target": "components_widget_builder_generatecode",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L1",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_dashboard_icons_tsx",
- "_tgt": "dashboard_icons_layoutdashboardicon",
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_layoutdashboardicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L10",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_dashboard_icons_tsx",
- "_tgt": "dashboard_icons_calendardaysicon",
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_calendardaysicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L20",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_dashboard_icons_tsx",
- "_tgt": "dashboard_icons_creditcardicon",
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_creditcardicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L27",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_dashboard_icons_tsx",
- "_tgt": "dashboard_icons_settings2icon",
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_settings2icon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L35",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_dashboard_icons_tsx",
- "_tgt": "dashboard_icons_logouticon",
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_logouticon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L43",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_dashboard_icons_tsx",
- "_tgt": "dashboard_icons_menuicon",
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_menuicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L49",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_dashboard_icons_tsx",
- "_tgt": "dashboard_icons_xicon",
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_xicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L55",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_dashboard_icons_tsx",
- "_tgt": "dashboard_icons_trendingupicon",
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_trendingupicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L62",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_dashboard_icons_tsx",
- "_tgt": "dashboard_icons_trendingdownicon",
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_trendingdownicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L69",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_dashboard_icons_tsx",
- "_tgt": "dashboard_icons_clockicon",
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_clockicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L75",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_dashboard_icons_tsx",
- "_tgt": "dashboard_icons_checkcircleicon",
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_checkcircleicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L81",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_dashboard_icons_tsx",
- "_tgt": "dashboard_icons_alertcircleicon",
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_alertcircleicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L87",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_dashboard_icons_tsx",
- "_tgt": "dashboard_icons_chevronlefticon",
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_chevronlefticon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L93",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_dashboard_icons_tsx",
- "_tgt": "dashboard_icons_chevronrighticon",
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_chevronrighticon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L99",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_dashboard_icons_tsx",
- "_tgt": "dashboard_icons_sparklesicon",
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_sparklesicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L105",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_dashboard_icons_tsx",
- "_tgt": "dashboard_icons_bellicon",
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_bellicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L111",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_dashboard_icons_tsx",
- "_tgt": "dashboard_icons_plusicon",
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_plusicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L117",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_dashboard_icons_tsx",
- "_tgt": "dashboard_icons_usersicon",
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_usersicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/icons.tsx",
- "source_location": "L123",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_dashboard_icons_tsx",
- "_tgt": "dashboard_icons_usercircleicon",
- "source": "apps_frontend_src_components_dashboard_icons_tsx",
- "target": "dashboard_icons_usercircleicon",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/types.ts",
- "source_location": "L14",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_dashboard_types_ts",
- "_tgt": "dashboard_types_getinitials",
- "source": "apps_frontend_src_components_dashboard_types_ts",
- "target": "dashboard_types_getinitials",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/dashboard/types.ts",
- "source_location": "L22",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_dashboard_types_ts",
- "_tgt": "dashboard_types_getbookingduration",
- "source": "apps_frontend_src_components_dashboard_types_ts",
- "target": "dashboard_types_getbookingduration",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tooltip.tsx",
- "source_location": "L10",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_tooltip_tsx",
- "_tgt": "ui_tooltip_tooltip",
- "source": "apps_frontend_src_components_ui_tooltip_tsx",
- "target": "ui_tooltip_tooltip",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/input.tsx",
- "source_location": "L9",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_input_tsx",
- "_tgt": "ui_input_input",
- "source": "apps_frontend_src_components_ui_input_tsx",
- "target": "ui_input_input",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/badge.tsx",
- "source_location": "L8",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_badge_tsx",
- "_tgt": "ui_badge_badge",
- "source": "apps_frontend_src_components_ui_badge_tsx",
- "target": "ui_badge_badge",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/select.tsx",
- "source_location": "L17",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_select_tsx",
- "_tgt": "ui_select_select",
- "source": "apps_frontend_src_components_ui_select_tsx",
- "target": "ui_select_select",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/textarea.tsx",
- "source_location": "L15",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_textarea_tsx",
- "_tgt": "ui_textarea_resizeclass",
- "source": "apps_frontend_src_components_ui_textarea_tsx",
- "target": "ui_textarea_resizeclass",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L8",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_card_tsx",
- "_tgt": "ui_card_card",
- "source": "apps_frontend_src_components_ui_card_tsx",
- "target": "ui_card_card",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L42",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_card_tsx",
- "_tgt": "ui_card_cardheader",
- "source": "apps_frontend_src_components_ui_card_tsx",
- "target": "ui_card_cardheader",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L53",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_card_tsx",
- "_tgt": "ui_card_cardtitle",
- "source": "apps_frontend_src_components_ui_card_tsx",
- "target": "ui_card_cardtitle",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L67",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_card_tsx",
- "_tgt": "ui_card_carddescription",
- "source": "apps_frontend_src_components_ui_card_tsx",
- "target": "ui_card_carddescription",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L78",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_card_tsx",
- "_tgt": "ui_card_cardcontent",
- "source": "apps_frontend_src_components_ui_card_tsx",
- "target": "ui_card_cardcontent",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/card.tsx",
- "source_location": "L89",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_card_tsx",
- "_tgt": "ui_card_cardfooter",
- "source": "apps_frontend_src_components_ui_card_tsx",
- "target": "ui_card_cardfooter",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/skeleton.tsx",
- "source_location": "L9",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_skeleton_tsx",
- "_tgt": "ui_skeleton_skeleton",
- "source": "apps_frontend_src_components_ui_skeleton_tsx",
- "target": "ui_skeleton_skeleton",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/skeleton.tsx",
- "source_location": "L28",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_skeleton_tsx",
- "_tgt": "ui_skeleton_skeletoncard",
- "source": "apps_frontend_src_components_ui_skeleton_tsx",
- "target": "ui_skeleton_skeletoncard",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/skeleton.tsx",
- "source_location": "L38",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_skeleton_tsx",
- "_tgt": "ui_skeleton_skeletontext",
- "source": "apps_frontend_src_components_ui_skeleton_tsx",
- "target": "ui_skeleton_skeletontext",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/avatar.tsx",
- "source_location": "L12",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_avatar_tsx",
- "_tgt": "ui_avatar_avatar",
- "source": "apps_frontend_src_components_ui_avatar_tsx",
- "target": "ui_avatar_avatar",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L12",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_tabs_tsx",
- "_tgt": "ui_tabs_usetabs",
- "source": "apps_frontend_src_components_ui_tabs_tsx",
- "target": "ui_tabs_usetabs",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L29",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_tabs_tsx",
- "_tgt": "ui_tabs_tabs",
- "source": "apps_frontend_src_components_ui_tabs_tsx",
- "target": "ui_tabs_tabs",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L60",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_tabs_tsx",
- "_tgt": "ui_tabs_tabslist",
- "source": "apps_frontend_src_components_ui_tabs_tsx",
- "target": "ui_tabs_tabslist",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L89",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_tabs_tsx",
- "_tgt": "ui_tabs_tabstrigger",
- "source": "apps_frontend_src_components_ui_tabs_tsx",
- "target": "ui_tabs_tabstrigger",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L120",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_tabs_tsx",
- "_tgt": "ui_tabs_tabscontent",
- "source": "apps_frontend_src_components_ui_tabs_tsx",
- "target": "ui_tabs_tabscontent",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L91",
- "weight": 1.0,
- "_src": "ui_tabs_tabstrigger",
- "_tgt": "ui_tabs_usetabs",
- "source": "ui_tabs_usetabs",
- "target": "ui_tabs_tabstrigger",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/tabs.tsx",
- "source_location": "L122",
- "weight": 1.0,
- "_src": "ui_tabs_tabscontent",
- "_tgt": "ui_tabs_usetabs",
- "source": "ui_tabs_usetabs",
- "target": "ui_tabs_tabscontent",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L10",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_dialog_tsx",
- "_tgt": "ui_dialog_dialog",
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "ui_dialog_dialog",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L78",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_dialog_tsx",
- "_tgt": "ui_dialog_dialogheader",
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "ui_dialog_dialogheader",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L88",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_dialog_tsx",
- "_tgt": "ui_dialog_dialogtitle",
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "ui_dialog_dialogtitle",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L104",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_dialog_tsx",
- "_tgt": "ui_dialog_dialogdescription",
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "ui_dialog_dialogdescription",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L120",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_dialog_tsx",
- "_tgt": "ui_dialog_dialogcontent",
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "ui_dialog_dialogcontent",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L130",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_dialog_tsx",
- "_tgt": "ui_dialog_dialogfooter",
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "ui_dialog_dialogfooter",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L151",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_dialog_tsx",
- "_tgt": "ui_dialog_dialogclosebutton",
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "ui_dialog_dialogclosebutton",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/components/ui/dialog.tsx",
- "source_location": "L185",
- "weight": 1.0,
- "_src": "apps_frontend_src_components_ui_dialog_tsx",
- "_tgt": "ui_dialog_usedialog",
- "source": "apps_frontend_src_components_ui_dialog_tsx",
- "target": "ui_dialog_usedialog",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/theme-provider.tsx",
- "source_location": "L13",
- "weight": 1.0,
- "_src": "apps_frontend_src_providers_theme_provider_tsx",
- "_tgt": "providers_theme_provider_getinitialtheme",
- "source": "apps_frontend_src_providers_theme_provider_tsx",
- "target": "providers_theme_provider_getinitialtheme",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/theme-provider.tsx",
- "source_location": "L19",
- "weight": 1.0,
- "_src": "apps_frontend_src_providers_theme_provider_tsx",
- "_tgt": "providers_theme_provider_getresolvedtheme",
- "source": "apps_frontend_src_providers_theme_provider_tsx",
- "target": "providers_theme_provider_getresolvedtheme",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/theme-provider.tsx",
- "source_location": "L82",
- "weight": 1.0,
- "_src": "apps_frontend_src_providers_theme_provider_tsx",
- "_tgt": "providers_theme_provider_usetheme",
- "source": "apps_frontend_src_providers_theme_provider_tsx",
- "target": "providers_theme_provider_usetheme",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L21",
- "weight": 1.0,
- "_src": "apps_frontend_src_providers_auth_provider_tsx",
- "_tgt": "providers_auth_provider_sessionfromlocaltoken",
- "source": "apps_frontend_src_providers_auth_provider_tsx",
- "target": "providers_auth_provider_sessionfromlocaltoken",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L40",
- "weight": 1.0,
- "_src": "apps_frontend_src_providers_auth_provider_tsx",
- "_tgt": "providers_auth_provider_parsejwtpayload",
- "source": "apps_frontend_src_providers_auth_provider_tsx",
- "target": "providers_auth_provider_parsejwtpayload",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L69",
- "weight": 1.0,
- "_src": "apps_frontend_src_providers_auth_provider_tsx",
- "_tgt": "providers_auth_provider_authprovider",
- "source": "apps_frontend_src_providers_auth_provider_tsx",
- "target": "providers_auth_provider_authprovider",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L208",
- "weight": 1.0,
- "_src": "apps_frontend_src_providers_auth_provider_tsx",
- "_tgt": "providers_auth_provider_useauth",
- "source": "apps_frontend_src_providers_auth_provider_tsx",
- "target": "providers_auth_provider_useauth",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/providers/auth-provider.tsx",
- "source_location": "L22",
- "weight": 1.0,
- "_src": "providers_auth_provider_sessionfromlocaltoken",
- "_tgt": "providers_auth_provider_parsejwtpayload",
- "source": "providers_auth_provider_sessionfromlocaltoken",
- "target": "providers_auth_provider_parsejwtpayload",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L84",
- "weight": 1.0,
- "_src": "apps_frontend_src_lib_map_ts",
- "_tgt": "lib_map_mapstylebyid",
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_mapstylebyid",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L88",
- "weight": 1.0,
- "_src": "apps_frontend_src_lib_map_ts",
- "_tgt": "lib_map_resolvemaptilestyle",
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_resolvemaptilestyle",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L102",
- "weight": 1.0,
- "_src": "apps_frontend_src_lib_map_ts",
- "_tgt": "lib_map_validatecoordinates",
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_validatecoordinates",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L113",
- "weight": 1.0,
- "_src": "apps_frontend_src_lib_map_ts",
- "_tgt": "lib_map_parsecoordinatetext",
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_parsecoordinatetext",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L133",
- "weight": 1.0,
- "_src": "apps_frontend_src_lib_map_ts",
- "_tgt": "lib_map_parsemapyczurl",
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_parsemapyczurl",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L159",
- "weight": 1.0,
- "_src": "apps_frontend_src_lib_map_ts",
- "_tgt": "lib_map_parsegooglemapsurl",
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_parsegooglemapsurl",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L217",
- "weight": 1.0,
- "_src": "apps_frontend_src_lib_map_ts",
- "_tgt": "lib_map_parsemapurl",
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_parsemapurl",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L228",
- "weight": 1.0,
- "_src": "apps_frontend_src_lib_map_ts",
- "_tgt": "lib_map_geocodelocation",
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_geocodelocation",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L282",
- "weight": 1.0,
- "_src": "apps_frontend_src_lib_map_ts",
- "_tgt": "lib_map_reversegeocode",
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_reversegeocode",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L320",
- "weight": 1.0,
- "_src": "apps_frontend_src_lib_map_ts",
- "_tgt": "lib_map_resolvelocationinput",
- "source": "apps_frontend_src_lib_map_ts",
- "target": "lib_map_resolvelocationinput",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L99",
- "weight": 1.0,
- "_src": "lib_map_resolvemaptilestyle",
- "_tgt": "lib_map_mapstylebyid",
- "source": "lib_map_mapstylebyid",
- "target": "lib_map_resolvemaptilestyle",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L123",
- "weight": 1.0,
- "_src": "lib_map_parsecoordinatetext",
- "_tgt": "lib_map_validatecoordinates",
- "source": "lib_map_validatecoordinates",
- "target": "lib_map_parsecoordinatetext",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L145",
- "weight": 1.0,
- "_src": "lib_map_parsemapyczurl",
- "_tgt": "lib_map_validatecoordinates",
- "source": "lib_map_validatecoordinates",
- "target": "lib_map_parsemapyczurl",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L175",
- "weight": 1.0,
- "_src": "lib_map_parsegooglemapsurl",
- "_tgt": "lib_map_validatecoordinates",
- "source": "lib_map_validatecoordinates",
- "target": "lib_map_parsegooglemapsurl",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L265",
- "weight": 1.0,
- "_src": "lib_map_geocodelocation",
- "_tgt": "lib_map_validatecoordinates",
- "source": "lib_map_validatecoordinates",
- "target": "lib_map_geocodelocation",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L283",
- "weight": 1.0,
- "_src": "lib_map_reversegeocode",
- "_tgt": "lib_map_validatecoordinates",
- "source": "lib_map_validatecoordinates",
- "target": "lib_map_reversegeocode",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L189",
- "weight": 1.0,
- "_src": "lib_map_parsegooglemapsurl",
- "_tgt": "lib_map_parsecoordinatetext",
- "source": "lib_map_parsecoordinatetext",
- "target": "lib_map_parsegooglemapsurl",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L321",
- "weight": 1.0,
- "_src": "lib_map_resolvelocationinput",
- "_tgt": "lib_map_parsecoordinatetext",
- "source": "lib_map_parsecoordinatetext",
- "target": "lib_map_resolvelocationinput",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L225",
- "weight": 1.0,
- "_src": "lib_map_parsemapurl",
- "_tgt": "lib_map_parsemapyczurl",
- "source": "lib_map_parsemapyczurl",
- "target": "lib_map_parsemapurl",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L225",
- "weight": 1.0,
- "_src": "lib_map_parsemapurl",
- "_tgt": "lib_map_parsegooglemapsurl",
- "source": "lib_map_parsegooglemapsurl",
- "target": "lib_map_parsemapurl",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L330",
- "weight": 1.0,
- "_src": "lib_map_resolvelocationinput",
- "_tgt": "lib_map_parsemapurl",
- "source": "lib_map_parsemapurl",
- "target": "lib_map_resolvelocationinput",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L341",
- "weight": 1.0,
- "_src": "lib_map_resolvelocationinput",
- "_tgt": "lib_map_geocodelocation",
- "source": "lib_map_geocodelocation",
- "target": "lib_map_resolvelocationinput",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/map.ts",
- "source_location": "L323",
- "weight": 1.0,
- "_src": "lib_map_resolvelocationinput",
- "_tgt": "lib_map_reversegeocode",
- "source": "lib_map_reversegeocode",
- "target": "lib_map_resolvelocationinput",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/paddle.ts",
- "source_location": "L8",
- "weight": 1.0,
- "_src": "apps_frontend_src_lib_paddle_ts",
- "_tgt": "lib_paddle_paddleconfigured",
- "source": "apps_frontend_src_lib_paddle_ts",
- "target": "lib_paddle_paddleconfigured",
- "confidence_score": 1.0
- },
- {
- "relation": "contains",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/paddle.ts",
- "source_location": "L12",
- "weight": 1.0,
- "_src": "apps_frontend_src_lib_paddle_ts",
- "_tgt": "lib_paddle_getpaddle",
- "source": "apps_frontend_src_lib_paddle_ts",
- "target": "lib_paddle_getpaddle",
- "confidence_score": 1.0
- },
- {
- "relation": "calls",
- "confidence": "EXTRACTED",
- "source_file": "apps/frontend/src/lib/paddle.ts",
- "source_location": "L13",
- "weight": 1.0,
- "_src": "lib_paddle_getpaddle",
- "_tgt": "lib_paddle_paddleconfigured",
- "source": "lib_paddle_paddleconfigured",
- "target": "lib_paddle_getpaddle",
- "confidence_score": 1.0
- }
- ],
- "hyperedges": []
-}
\ No newline at end of file
diff --git a/graphify-out/manifest.json b/graphify-out/manifest.json
deleted file mode 100644
index 8bafb81..0000000
--- a/graphify-out/manifest.json
+++ /dev/null
@@ -1,168 +0,0 @@
-{
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/generate_map.tsx": 1776666624.8887467,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/map.ts": 1776666624.9033415,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/cmd/api/main.go": 1776752207.8631995,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/email/templates.go": 1776602005.9417026,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/email/service.go": 1776670728.696918,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/db/db.go": 1776673568.9536011,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/db/repository.go": 1776602985.9187567,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/config/config_test.go": 1776753441.2964497,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/config/config.go": 1776753433.2604668,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/oauth/google.go": 1776600255.6443596,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/handlers/handlers.go": 1776753485.007356,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/handlers/admin.go": 1776752223.8340588,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/billing/service.go": 1776753644.080393,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/billing/service_test.go": 1776753472.1483834,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/auth/service.go": 1776752246.6598577,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/auth/neon.go": 1776604492.8585796,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/internal/auth/service_test.go": 1776752259.460893,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/cmd/api/main.go": 1776154845.3740513,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/catalog/service.go": 1776766156.708989,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/httpx/middleware.go": 1775805857.4949794,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/db/repository.go": 1776766029.7570255,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/db/pool.go": 1775805087.4963162,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/domain/models.go": 1776765331.3064964,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/config/config_test.go": 1776760126.2416844,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/config/config.go": 1776759750.1264958,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/notifications/service.go": 1776771186.9076862,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/notifications/email_templates.go": 1776771124.7805548,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/notifications/service_test.go": 1776604768.0589664,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/bookings/service.go": 1776771471.275241,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/bookings/customer_service.go": 1776771428.1311963,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/bookings/service_test.go": 1776784217.9115837,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/billing/service.go": 1776760009.5927346,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/billing/service_test.go": 1776760116.1976886,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/auth/middleware.go": 1776672549.3119998,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/auth/neon.go": 1776670077.8565476,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/api/server.go": 1776784168.2225142,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/api/server_test.go": 1776752223.8311362,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/tenancy/service.go": 1776604326.3473518,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/internal/tenancy/service_test.go": 1775808604.7880082,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/vite.config.ts": 1775804396.9782922,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/App.tsx": 1776673902.149617,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/main.tsx": 1777455784.3577452,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/routes/about-route.tsx": 1776752690.362625,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/routes/auth-callback-route.tsx": 1776760235.7786372,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/routes/public-booking-route.tsx": 1776674167.8148322,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/routes/dashboard-route.tsx": 1776797782.1085014,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/routes/contact-route.tsx": 1776674430.6888938,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/routes/home-route.tsx": 1777456312.473124,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/routes/not-found-route.tsx": 1776674381.8262,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/routes/legal-route.tsx": 1776752690.3636248,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/routes/booking-manage-route.tsx": 1776767972.4928482,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/bookra-character.tsx": 1776752690.3546247,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/index.ts": 1776760875.805695,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/integration-modal.tsx": 1776760859.2087228,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/location-map.tsx": 1776669785.3826764,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/shell.tsx": 1776782961.7637327,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/widget-builder.tsx": 1776669857.0035434,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/dashboard/icons.tsx": 1776789476.8345778,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/dashboard/types.ts": 1776789531.009494,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/ui/tooltip.tsx": 1776152848.7478018,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/ui/input.tsx": 1776148007.514892,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/ui/badge.tsx": 1776148004.4917321,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/ui/select.tsx": 1776152733.964673,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/ui/button.tsx": 1776147997.6907823,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/ui/textarea.tsx": 1776152781.1648598,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/ui/index.ts": 1776152961.1018794,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/ui/card.tsx": 1776148002.4907696,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/ui/skeleton.tsx": 1776148009.7859027,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/ui/avatar.tsx": 1776152787.4049883,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/ui/tabs.tsx": 1776152841.947702,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/components/ui/dialog.tsx": 1776152909.6496222,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/providers/theme-provider.tsx": 1776095550.9844944,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/providers/auth-provider.tsx": 1776760223.0926425,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/providers/i18n-provider.tsx": 1776760652.0982246,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/lib/map.ts": 1776669661.7833047,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/lib/api-client.ts": 1775804396.9789596,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/lib/types.ts": 1775807876.3199303,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/src/lib/paddle.ts": 1776760715.6411605,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/packages/shared-types/src/index.ts": 1776604570.1236856,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/packages/api-client/src/index.ts": 1775804396.9789596,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/packages/api-client/src/generated/types.ts": 1777456335.8890824,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/packages/api-client/scripts/generate.mjs": 1775805010.3883135,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/project.md": 1776760816.0081425,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/FRONTEND_ISSUES.md": 1776605116.9474611,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/prompt.md": 1776768681.7567835,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/README.md": 1777280416.8592253,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/test-emails.html": 1776602140.645646,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/auth-service/README.md": 1776784168.2225142,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/backend/README.md": 1776784168.2225142,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/index.html": 1776155053.752991,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/docs/ci-cd.md": 1777455829.58997,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/docs/superpowers/specs/2026-04-21-paddle-billing-migration-design.md": 1776759387.7846043,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/favicon.svg": 1776155053.7538831,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-logo.svg": 1776608388.1235633,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/headphones.svg": 1776752581.4101584,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/clock.svg": 1776752581.4081745,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/walk.svg": 1776752581.4124937,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/logo_text_horizontal.svg": 1776752581.4109368,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/lookup.svg": 1776752581.4112468,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/happy-note.svg": 1776752581.4098568,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/like.svg": 1776752581.4107628,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/success.svg": 1776752581.4123247,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/maintenance.svg": 1776752581.4115665,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/coffee.svg": 1776752581.4084466,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/sad.svg": 1776752581.4118588,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/connection-error.svg": 1776752581.4087214,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/flag.svg": 1776752581.4093015,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/404.svg": 1776752581.4074118,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/announcement.svg": 1776752581.4080162,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/sleep.svg": 1776752581.4121594,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/educate.svg": 1776752581.4090226,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/laptop.svg": 1776752581.410602,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/main.svg": 1776752581.4114072,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/forbidden.svg": 1776752581.409577,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/hello.svg": 1776752581.410437,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/angry-bulb.svg": 1776752581.40772,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-illustrations/logo_text_vertical.svg": 1776752581.411093,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-characters/walk.svg": 1776606519.5665152,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-characters/logo_text_horizontal.svg": 1776606519.5637534,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-characters/lookup.svg": 1776606519.5642965,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-characters/like.svg": 1776606519.5623937,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-characters/success.svg": 1776606519.5659773,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-characters/announcement.svg": 1776606519.5606966,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-characters/sleep.svg": 1776606519.5655613,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-characters/laptop.svg": 1776606519.5619218,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-characters/main.svg": 1776606519.564816,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-characters/hello.svg": 1776606519.561268,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/apps/frontend/public/bookra-characters/logo_text_vertical.svg": 1776606519.5642073,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/privacy.png": 1776671490.3701248,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/auth-magic-link-sent.png": 1776671593.7941616,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/bookra-dashboard-check.png": 1777456216.1062973,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/home-mobile.png": 1776671653.0399165,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/home-desktop.png": 1776671305.7341623,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/contact-success.png": 1776671424.1384103,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/dashboard-magic-link.png": 1776671214.315326,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/terms.png": 1776671502.096919,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/bookra-home-check.png": 1777456059.8225186,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/booking-mobile.png": 1776671663.6709323,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/booking-confirmed.png": 1776671475.877128,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/dashboard-map-brno.png": 1776671259.678833,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/about-desktop.png": 1776671345.3982804,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/pricing-section.png": 1776671325.0954196,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/output/playwright/dashboard-after-magic-link.png": 1776671625.547864,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/headphones.svg": 1776693673.0,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/clock.svg": 1776693727.0,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/walk.svg": 1776605163.0,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/logo_text_horizontal.svg": 1776605698.0,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/lookup.svg": 1776605059.0,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/happy-note.svg": 1776694043.0,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/like.svg": 1776605122.0,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/success.svg": 1776604968.0,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/maintenance.svg": 1776693910.0,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/coffee.svg": 1776694073.0,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/sad.svg": 1776693708.0,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/connection-error.svg": 1776693861.0,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/flag.svg": 1776693653.0,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/404.svg": 1776693878.0,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/announcement.svg": 1776605100.0,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/sleep.svg": 1776604846.0,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/educate.svg": 1776694005.0,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/laptop.svg": 1776605043.0,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/main.svg": 1776604578.0,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/forbidden.svg": 1776693929.0,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/hello.svg": 1776605143.0,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/angry-bulb.svg": 1776694024.0,
- "/home/tdvorak/Desktop/PROG+HTML/Bookra/bookra-img/logo_text_vertical.svg": 1776605520.0
-}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 33f80b8..887362f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -22,11 +22,9 @@
"dependencies": {
"@bookra/api-client": "0.1.0",
"@bookra/shared-types": "0.1.0",
- "@neondatabase/neon-js": "^0.2.0-beta.1",
- "@paddle/paddle-js": "^1.3.2",
+ "@neondatabase/neon-js": "^0.7.0-beta",
"@sentry/react": "^10.52.0",
"@solidjs/router": "^0.15.3",
- "@stripe/stripe-js": "^4.0.0",
"solid-js": "^1.9.5"
},
"devDependencies": {
@@ -39,15 +37,6 @@
"vite-plugin-solid": "^2.11.6"
}
},
- "apps/frontend/node_modules/@stripe/stripe-js": {
- "version": "4.10.0",
- "resolved": "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-4.10.0.tgz",
- "integrity": "sha512-KrMOL+sH69htCIXCaZ4JluJ35bchuCCznyPyrbN8JXSGQfwBI1SuIEMZNwvy8L8ykj29t6sa5BAAiL7fNoLZ8A==",
- "license": "MIT",
- "engines": {
- "node": ">=12.16"
- }
- },
"node_modules/@alloc/quick-lru": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
@@ -61,12 +50,13 @@
}
},
"node_modules/@babel/code-frame": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
- "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz",
+ "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.28.5",
+ "@babel/helper-validator-identifier": "^7.29.7",
"js-tokens": "^4.0.0",
"picocolors": "^1.1.1"
},
@@ -75,29 +65,31 @@
}
},
"node_modules/@babel/compat-data": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz",
- "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz",
+ "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz",
- "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz",
+ "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.29.0",
- "@babel/generator": "^7.29.0",
- "@babel/helper-compilation-targets": "^7.28.6",
- "@babel/helper-module-transforms": "^7.28.6",
- "@babel/helpers": "^7.28.6",
- "@babel/parser": "^7.29.0",
- "@babel/template": "^7.28.6",
- "@babel/traverse": "^7.29.0",
- "@babel/types": "^7.29.0",
+ "@babel/code-frame": "^7.29.7",
+ "@babel/generator": "^7.29.7",
+ "@babel/helper-compilation-targets": "^7.29.7",
+ "@babel/helper-module-transforms": "^7.29.7",
+ "@babel/helpers": "^7.29.7",
+ "@babel/parser": "^7.29.7",
+ "@babel/template": "^7.29.7",
+ "@babel/traverse": "^7.29.7",
+ "@babel/types": "^7.29.7",
"@jridgewell/remapping": "^2.3.5",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
@@ -123,13 +115,14 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.29.1",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz",
- "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==",
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz",
+ "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/parser": "^7.29.0",
- "@babel/types": "^7.29.0",
+ "@babel/parser": "^7.29.8",
+ "@babel/types": "^7.29.8",
"@jridgewell/gen-mapping": "^0.3.12",
"@jridgewell/trace-mapping": "^0.3.28",
"jsesc": "^3.0.2"
@@ -139,13 +132,14 @@
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz",
- "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz",
+ "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/compat-data": "^7.28.6",
- "@babel/helper-validator-option": "^7.27.1",
+ "@babel/compat-data": "^7.29.7",
+ "@babel/helper-validator-option": "^7.29.7",
"browserslist": "^4.24.0",
"lru-cache": "^5.1.1",
"semver": "^6.3.1"
@@ -159,41 +153,45 @@
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/@babel/helper-globals": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
- "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz",
+ "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-imports": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz",
- "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz",
+ "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/traverse": "^7.28.6",
- "@babel/types": "^7.28.6"
+ "@babel/traverse": "^7.29.7",
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz",
- "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz",
+ "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/helper-module-imports": "^7.28.6",
- "@babel/helper-validator-identifier": "^7.28.5",
- "@babel/traverse": "^7.28.6"
+ "@babel/helper-module-imports": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7",
+ "@babel/traverse": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -212,52 +210,57 @@
}
},
"node_modules/@babel/helper-string-parser": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
- "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz",
+ "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
- "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz",
+ "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-option": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
- "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz",
+ "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helpers": {
- "version": "7.29.2",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz",
- "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz",
+ "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/template": "^7.28.6",
- "@babel/types": "^7.29.0"
+ "@babel/template": "^7.29.7",
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
- "version": "7.29.2",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz",
- "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==",
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz",
+ "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/types": "^7.29.0"
+ "@babel/types": "^7.29.8"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -282,39 +285,42 @@
}
},
"node_modules/@babel/runtime": {
- "version": "7.29.2",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz",
- "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz",
+ "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==",
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/template": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz",
- "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz",
+ "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.28.6",
- "@babel/parser": "^7.28.6",
- "@babel/types": "^7.28.6"
+ "@babel/code-frame": "^7.29.7",
+ "@babel/parser": "^7.29.7",
+ "@babel/types": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz",
- "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==",
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz",
+ "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.29.0",
- "@babel/generator": "^7.29.0",
- "@babel/helper-globals": "^7.28.0",
- "@babel/parser": "^7.29.0",
- "@babel/template": "^7.28.6",
- "@babel/types": "^7.29.0",
+ "@babel/code-frame": "^7.29.7",
+ "@babel/generator": "^7.29.8",
+ "@babel/helper-globals": "^7.29.7",
+ "@babel/parser": "^7.29.8",
+ "@babel/template": "^7.29.7",
+ "@babel/types": "^7.29.8",
"debug": "^4.3.1"
},
"engines": {
@@ -322,31 +328,73 @@
}
},
"node_modules/@babel/types": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz",
- "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==",
+ "version": "7.29.8",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz",
+ "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/helper-string-parser": "^7.27.1",
- "@babel/helper-validator-identifier": "^7.28.5"
+ "@babel/helper-string-parser": "^7.29.7",
+ "@babel/helper-validator-identifier": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
}
},
- "node_modules/@better-auth/utils": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/@better-auth/utils/-/utils-0.4.0.tgz",
- "integrity": "sha512-RpMtLUIQAEWMgdPLNVbIF5ON2mm+CH0U3rCdUCU1VyeAUui4m38DyK7/aXMLZov2YDjG684pS1D0MBllrmgjQA==",
+ "node_modules/@better-auth/core": {
+ "version": "1.7.4",
+ "resolved": "https://registry.npmjs.org/@better-auth/core/-/core-1.7.4.tgz",
+ "integrity": "sha512-g66dKOMB5PLxoujkxkZeYb6dh5wLhfAx/D+w9XtcO669Dslnyen2naBYqnD1r5ZwnxFKcr6aSrUPaH952V89Lg==",
+ "license": "MIT",
"peer": true,
+ "dependencies": {
+ "@opentelemetry/semantic-conventions": "^1.41.1",
+ "@standard-schema/spec": "^1.1.0",
+ "zod": "^4.5.4"
+ },
+ "peerDependencies": {
+ "@better-auth/utils": "0.4.2",
+ "@better-fetch/fetch": "1.3.1",
+ "@cloudflare/workers-types": ">=4",
+ "@opentelemetry/api": "^1.9.0",
+ "better-call": "1.4.0",
+ "jose": "^6.1.0",
+ "kysely": "^0.28.5 || ^0.29.0",
+ "nanostores": "^1.0.1"
+ },
+ "peerDependenciesMeta": {
+ "@cloudflare/workers-types": {
+ "optional": true
+ },
+ "@opentelemetry/api": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@better-auth/core/node_modules/zod": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.2.tgz",
+ "integrity": "sha512-lh5RCAGFa1Cm2hjtNwLQhSs/AsqdWnTQaBER9fEwN/88pSh7KOtJavtBx/0VlkN/uFd61SwYmljLMDAsHlvzBQ==",
+ "license": "MIT",
+ "peer": true,
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ },
+ "node_modules/@better-auth/utils": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/@better-auth/utils/-/utils-0.4.2.tgz",
+ "integrity": "sha512-AUxrvu+HaaODsUyzDxFgwd/8RZ1yZaYo42LXKSrU2oGgR38pS1ij8nqQKNgtTWoYGpNevNXtCfgTy6loHveW9A==",
+ "license": "MIT",
"dependencies": {
"@noble/hashes": "^2.0.1"
}
},
"node_modules/@better-fetch/fetch": {
- "version": "1.1.21",
- "resolved": "https://registry.npmjs.org/@better-fetch/fetch/-/fetch-1.1.21.tgz",
- "integrity": "sha512-/ImESw0sskqlVR94jB+5+Pxjf+xBwDZF/N5+y2/q4EqD7IARUTSpPfIo8uf39SYpCxyOCtbyYpUrZ3F/k0zT4A=="
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@better-fetch/fetch/-/fetch-1.3.1.tgz",
+ "integrity": "sha512-ABkD1WhyfPZprKRQI3bhATjeiFuNWC9PXhfGWqL+sg/gKrM977oFrYkdb4msM3hgUGonr7KlOsOFT5TU2rht9g==",
+ "license": "MIT"
},
"node_modules/@bookra/api-client": {
"resolved": "packages/api-client",
@@ -361,11 +409,12 @@
"link": true
},
"node_modules/@captchafox/react": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@captchafox/react/-/react-1.11.0.tgz",
- "integrity": "sha512-/oF/PahBiNwk/ZVC0XQBl9hHwwRo7Eg8k6tz0U835jH15OJpIZvGHPN4xZ5cRTct+sXAdVcMqfuEP0bsg4yTBw==",
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/@captchafox/react/-/react-1.13.0.tgz",
+ "integrity": "sha512-ApU8zeUQm2tLcxR5Mm6IPwZUnaoSIy5sF0R0kUwgKHYvnxeIZ+E4uaLro/5f25JBvqM4XW1jJh03EkWjoOIhfA==",
+ "license": "MIT",
"dependencies": {
- "@captchafox/types": "^1.4.0"
+ "@captchafox/types": "^1.6.0"
},
"peerDependencies": {
"react": ">=16.8.0",
@@ -373,18 +422,20 @@
}
},
"node_modules/@captchafox/types": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/@captchafox/types/-/types-1.4.0.tgz",
- "integrity": "sha512-4xnPMICLinsXghw6zWEF436lhMsBmLxui2QmU7xAEz/+572BRdvc518Sz5OoofbJ7GZG6QPz/wOtJoN8BfKyCg=="
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@captchafox/types/-/types-1.6.0.tgz",
+ "integrity": "sha512-isJBepZntzO++rE2i9rP4FGh5XPwoXXle4H2POkNR6bYwjBaWI1D7XwbW5oylLnXMMELGksNnOX0QGHYHuQ2PQ==",
+ "license": "MIT"
},
"node_modules/@esbuild/aix-ppc64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz",
- "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.2.tgz",
+ "integrity": "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==",
"cpu": [
"ppc64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"aix"
@@ -394,13 +445,14 @@
}
},
"node_modules/@esbuild/android-arm": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz",
- "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.2.tgz",
+ "integrity": "sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==",
"cpu": [
"arm"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"android"
@@ -410,13 +462,14 @@
}
},
"node_modules/@esbuild/android-arm64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz",
- "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.2.tgz",
+ "integrity": "sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"android"
@@ -426,13 +479,14 @@
}
},
"node_modules/@esbuild/android-x64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz",
- "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.2.tgz",
+ "integrity": "sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"android"
@@ -442,13 +496,14 @@
}
},
"node_modules/@esbuild/darwin-arm64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz",
- "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.2.tgz",
+ "integrity": "sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
@@ -458,13 +513,14 @@
}
},
"node_modules/@esbuild/darwin-x64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz",
- "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.2.tgz",
+ "integrity": "sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
@@ -474,13 +530,14 @@
}
},
"node_modules/@esbuild/freebsd-arm64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz",
- "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.2.tgz",
+ "integrity": "sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"freebsd"
@@ -490,13 +547,14 @@
}
},
"node_modules/@esbuild/freebsd-x64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz",
- "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.2.tgz",
+ "integrity": "sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"freebsd"
@@ -506,13 +564,14 @@
}
},
"node_modules/@esbuild/linux-arm": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz",
- "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.2.tgz",
+ "integrity": "sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==",
"cpu": [
"arm"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -522,13 +581,14 @@
}
},
"node_modules/@esbuild/linux-arm64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz",
- "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.2.tgz",
+ "integrity": "sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -538,13 +598,14 @@
}
},
"node_modules/@esbuild/linux-ia32": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz",
- "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.2.tgz",
+ "integrity": "sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==",
"cpu": [
"ia32"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -554,13 +615,14 @@
}
},
"node_modules/@esbuild/linux-loong64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz",
- "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.2.tgz",
+ "integrity": "sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==",
"cpu": [
"loong64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -570,13 +632,14 @@
}
},
"node_modules/@esbuild/linux-mips64el": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz",
- "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.2.tgz",
+ "integrity": "sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==",
"cpu": [
"mips64el"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -586,13 +649,14 @@
}
},
"node_modules/@esbuild/linux-ppc64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz",
- "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.2.tgz",
+ "integrity": "sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==",
"cpu": [
"ppc64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -602,13 +666,14 @@
}
},
"node_modules/@esbuild/linux-riscv64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz",
- "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.2.tgz",
+ "integrity": "sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==",
"cpu": [
"riscv64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -618,13 +683,14 @@
}
},
"node_modules/@esbuild/linux-s390x": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz",
- "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.2.tgz",
+ "integrity": "sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==",
"cpu": [
"s390x"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -634,13 +700,14 @@
}
},
"node_modules/@esbuild/linux-x64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz",
- "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.2.tgz",
+ "integrity": "sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -650,13 +717,14 @@
}
},
"node_modules/@esbuild/netbsd-arm64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz",
- "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.2.tgz",
+ "integrity": "sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"netbsd"
@@ -666,13 +734,14 @@
}
},
"node_modules/@esbuild/netbsd-x64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz",
- "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.2.tgz",
+ "integrity": "sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"netbsd"
@@ -682,13 +751,14 @@
}
},
"node_modules/@esbuild/openbsd-arm64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz",
- "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.2.tgz",
+ "integrity": "sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"openbsd"
@@ -698,13 +768,14 @@
}
},
"node_modules/@esbuild/openbsd-x64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz",
- "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.2.tgz",
+ "integrity": "sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"openbsd"
@@ -714,13 +785,14 @@
}
},
"node_modules/@esbuild/openharmony-arm64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz",
- "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.2.tgz",
+ "integrity": "sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"openharmony"
@@ -730,13 +802,14 @@
}
},
"node_modules/@esbuild/sunos-x64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz",
- "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.2.tgz",
+ "integrity": "sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"sunos"
@@ -746,13 +819,14 @@
}
},
"node_modules/@esbuild/win32-arm64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz",
- "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.2.tgz",
+ "integrity": "sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"win32"
@@ -762,13 +836,14 @@
}
},
"node_modules/@esbuild/win32-ia32": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz",
- "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.2.tgz",
+ "integrity": "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==",
"cpu": [
"ia32"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"win32"
@@ -778,13 +853,14 @@
}
},
"node_modules/@esbuild/win32-x64": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz",
- "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.2.tgz",
+ "integrity": "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"win32"
@@ -793,89 +869,32 @@
"node": ">=18"
}
},
- "node_modules/@fastify/ajv-compiler": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.6.0.tgz",
- "integrity": "sha512-LwdXQJjmMD+GwLOkP7TVC68qa+pSSogeWWmznRJ/coyTcfe9qA05AHFSe1eZFwK6q+xVRpChnvFUkf1iYaSZsQ==",
- "dependencies": {
- "ajv": "^8.11.0",
- "ajv-formats": "^2.1.1",
- "fast-uri": "^2.0.0"
- }
- },
- "node_modules/@fastify/cors": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/@fastify/cors/-/cors-9.0.1.tgz",
- "integrity": "sha512-YY9Ho3ovI+QHIL2hW+9X4XqQjXLjJqsU+sMV/xFsxZkE8p3GNnYVFpoOxF7SsP5ZL76gwvbo3V9L+FIekBGU4Q==",
- "dependencies": {
- "fastify-plugin": "^4.0.0",
- "mnemonist": "0.39.6"
- }
- },
- "node_modules/@fastify/error": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/@fastify/error/-/error-3.4.1.tgz",
- "integrity": "sha512-wWSvph+29GR783IhmvdwWnN4bUxTD01Vm5Xad4i7i1VuAOItLvbPAb69sb0IQ2N57yprvhNIwAP5B6xfKTmjmQ=="
- },
- "node_modules/@fastify/fast-json-stringify-compiler": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.3.0.tgz",
- "integrity": "sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==",
- "dependencies": {
- "fast-json-stringify": "^5.7.0"
- }
- },
- "node_modules/@fastify/merge-json-schemas": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.1.1.tgz",
- "integrity": "sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==",
- "dependencies": {
- "fast-deep-equal": "^3.1.3"
- }
- },
- "node_modules/@fastify/swagger": {
- "version": "8.15.0",
- "resolved": "https://registry.npmjs.org/@fastify/swagger/-/swagger-8.15.0.tgz",
- "integrity": "sha512-zy+HEEKFqPMS2sFUsQU5X0MHplhKJvWeohBwTCkBAJA/GDYGLGUWQaETEhptiqxK7Hs0fQB9B4MDb3pbwIiCwA==",
- "dependencies": {
- "fastify-plugin": "^4.0.0",
- "json-schema-resolver": "^2.0.0",
- "openapi-types": "^12.0.0",
- "rfdc": "^1.3.0",
- "yaml": "^2.2.2"
- }
- },
- "node_modules/@fastify/type-provider-typebox": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/@fastify/type-provider-typebox/-/type-provider-typebox-3.6.0.tgz",
- "integrity": "sha512-HTeOLvirfGg0u1KGao3iXn5rZpYNqlrOmyDnXSXAbWVPa+mDQTTBNs/x5uZzOB6vFAqr0Xcf7x1lxOamNSYKjw==",
- "peerDependencies": {
- "@sinclair/typebox": ">=0.26 <=0.32"
- }
- },
"node_modules/@floating-ui/core": {
- "version": "1.7.5",
- "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.5.tgz",
- "integrity": "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==",
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.8.0.tgz",
+ "integrity": "sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ==",
+ "license": "MIT",
"dependencies": {
- "@floating-ui/utils": "^0.2.11"
+ "@floating-ui/utils": "^0.2.12"
}
},
"node_modules/@floating-ui/dom": {
- "version": "1.7.6",
- "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.6.tgz",
- "integrity": "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==",
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.8.0.tgz",
+ "integrity": "sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg==",
+ "license": "MIT",
"dependencies": {
- "@floating-ui/core": "^1.7.5",
- "@floating-ui/utils": "^0.2.11"
+ "@floating-ui/core": "^1.8.0",
+ "@floating-ui/utils": "^0.2.12"
}
},
"node_modules/@floating-ui/react-dom": {
- "version": "2.1.8",
- "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.8.tgz",
- "integrity": "sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A==",
+ "version": "2.1.9",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.9.tgz",
+ "integrity": "sha512-JDjEFGCpImxDCA7JJKviA0M9+RtmJdj0m/NVU5IMgBK+AmZouAQQ7/+2GLH0GXXY0YMw9oXPB8hKdbPYg5QLYg==",
+ "license": "MIT",
"dependencies": {
- "@floating-ui/dom": "^1.7.6"
+ "@floating-ui/dom": "^1.8.0"
},
"peerDependencies": {
"react": ">=16.8.0",
@@ -883,19 +902,22 @@
}
},
"node_modules/@floating-ui/utils": {
- "version": "0.2.11",
- "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.11.tgz",
- "integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg=="
+ "version": "0.2.12",
+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.12.tgz",
+ "integrity": "sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==",
+ "license": "MIT"
},
"node_modules/@hcaptcha/loader": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@hcaptcha/loader/-/loader-2.3.0.tgz",
- "integrity": "sha512-i4lnNxKBe+COf3R1nFZEWaZoHIoJjvDgWqvcNrdZq8ehoSNMN6KVZ56dcQ02qKie2h3+BkbkwlJA9DOIuLlK/g=="
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/@hcaptcha/loader/-/loader-2.4.2.tgz",
+ "integrity": "sha512-+Pf0Vin6iJlJj5u/mq6XMgbJT1mi/Sg5LWHxxqO4YHt2YvdZgecp5V2sbC6vRaNPJUqQGk2HOu1K/i12mqs5vw==",
+ "license": "MIT"
},
"node_modules/@hcaptcha/react-hcaptcha": {
"version": "1.17.4",
"resolved": "https://registry.npmjs.org/@hcaptcha/react-hcaptcha/-/react-hcaptcha-1.17.4.tgz",
"integrity": "sha512-rIvgesG1N7SS9sAYYHFoWm+nXqRrxq7RcA9z2pKkDWV+S1GdfmrTNYA1aPyVWVe3eowphTCwyDJvl97Swwy0mw==",
+ "license": "MIT",
"dependencies": {
"@babel/runtime": "^7.17.9",
"@hcaptcha/loader": "^2.3.0"
@@ -909,39 +931,30 @@
"version": "1.1.28",
"resolved": "https://registry.npmjs.org/@hexagon/base64/-/base64-1.1.28.tgz",
"integrity": "sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw==",
- "peer": true
- },
- "node_modules/@hookform/resolvers": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-5.2.2.tgz",
- "integrity": "sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA==",
- "dependencies": {
- "@standard-schema/utils": "^0.3.0"
- },
- "peerDependencies": {
- "react-hook-form": "^7.55.0"
- }
+ "license": "MIT"
},
"node_modules/@instantdb/core": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@instantdb/core/-/core-1.0.0.tgz",
- "integrity": "sha512-o9gklfQDcKS0U+SdZsfByxkYpZPKOrNMuHgY7kDYo/u6gY1BlP3BAaq3pnTpgCfHG0JvQAln9dmot3XJjtB+8g==",
+ "version": "1.0.67",
+ "resolved": "https://registry.npmjs.org/@instantdb/core/-/core-1.0.67.tgz",
+ "integrity": "sha512-HWB7pnZ77j6hqCCCZ+LeOBakDKl5cSsEnQieUz38PP4o1D4vMujCoNeNVuAa3nO//VLMWuIm5hCO4psEnNRsCQ==",
+ "license": "Apache-2.0",
"peer": true,
"dependencies": {
- "@instantdb/version": "1.0.0",
+ "@instantdb/version": "1.0.67",
"mutative": "^1.0.10",
"uuid": "^11.1.0"
}
},
"node_modules/@instantdb/react": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@instantdb/react/-/react-1.0.0.tgz",
- "integrity": "sha512-A9ZTnWOQEJln3R+RWR7uAk+LMakQKVdgWMaZ1/ESkW8BqUknaNI93Dzhi1Ul3L9Imavll275afXvZRShqcj06A==",
+ "version": "1.0.67",
+ "resolved": "https://registry.npmjs.org/@instantdb/react/-/react-1.0.67.tgz",
+ "integrity": "sha512-kzZaiLZ3uAIH+0M2RpQWA0Lqr/7dnB+YQPzDp2L/iunggdcEW0eMTghDkDRLwbtQf+NNATn+UHmTRTqHQZ/fVg==",
+ "license": "Apache-2.0",
"peer": true,
"dependencies": {
- "@instantdb/core": "1.0.0",
- "@instantdb/react-common": "1.0.0",
- "@instantdb/version": "1.0.0",
+ "@instantdb/core": "1.0.67",
+ "@instantdb/react-common": "1.0.67",
+ "@instantdb/version": "1.0.67",
"eventsource": "^4.0.0"
},
"peerDependencies": {
@@ -949,22 +962,24 @@
}
},
"node_modules/@instantdb/react-common": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@instantdb/react-common/-/react-common-1.0.0.tgz",
- "integrity": "sha512-DFnMLqOt450nWfKkGovWoBWYUtvzNMOD1Pe+B/qLDNq6EPsZsmc1oKhWzjAxZV3MkxOoFyrQZtga4pPvm/S2rw==",
+ "version": "1.0.67",
+ "resolved": "https://registry.npmjs.org/@instantdb/react-common/-/react-common-1.0.67.tgz",
+ "integrity": "sha512-hRRs5O0XSe5+rx0GYozZ4A2j/VGMx49Hr2iEQHWQWjpFVJrCvYdCEI0UDmCUnK+/G1Qtm76wddryVZwgiDzOqw==",
+ "license": "Apache-2.0",
"peer": true,
"dependencies": {
- "@instantdb/core": "1.0.0",
- "@instantdb/version": "1.0.0"
+ "@instantdb/core": "1.0.67",
+ "@instantdb/version": "1.0.67"
},
"peerDependencies": {
"react": ">=16"
}
},
"node_modules/@instantdb/version": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@instantdb/version/-/version-1.0.0.tgz",
- "integrity": "sha512-N3oiGeVbYmDh1exBQE473U9yQsxIpkqplXI+1LY7ZZg71E7V7j89HAL2C+WSCwmvAUY5RoQXO7soiWXhB7OvSQ==",
+ "version": "1.0.67",
+ "resolved": "https://registry.npmjs.org/@instantdb/version/-/version-1.0.67.tgz",
+ "integrity": "sha512-V7nCs+DcuM+rNkvSxllBUJ/XTxlas6tsmws7EpnhZrF4tEJAfSQQfQOj4LcaOfwg9ItWWOAZJCkbDJ/iZSUQhA==",
+ "license": "Apache-2.0",
"peer": true
},
"node_modules/@jridgewell/gen-mapping": {
@@ -1016,33 +1031,39 @@
"version": "0.2.11",
"resolved": "https://registry.npmjs.org/@levischuck/tiny-cbor/-/tiny-cbor-0.2.11.tgz",
"integrity": "sha512-llBRm4dT4Z89aRsm6u2oEZ8tfwL/2l6BwpZ7JcyieouniDECM5AqNgr/y08zalEIvW3RSK4upYyybDcmjXqAow==",
- "peer": true
+ "license": "MIT"
},
"node_modules/@marsidev/react-turnstile": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@marsidev/react-turnstile/-/react-turnstile-1.5.0.tgz",
- "integrity": "sha512-Ph6mcj8u9WBDsBO7s9jKPsyRDz1sBPBJwrk+Ngx09vFInvKsQ6U6kW5amEcGq4dHOreB6DgFrOJk7/fy318YlQ==",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@marsidev/react-turnstile/-/react-turnstile-1.6.1.tgz",
+ "integrity": "sha512-ojI9NLYv821IRKi7KraTkxTto6KC/m58hNNyKxvYxm/cQBu5MI5eMkaiJs2JSQBFiXE3LPQI3seJVjv/2lgALA==",
+ "license": "MIT",
"peerDependencies": {
"react": "^17.0.2 || ^18.0.0 || ^19.0",
"react-dom": "^17.0.2 || ^18.0.0 || ^19.0"
}
},
"node_modules/@neondatabase/auth": {
- "version": "0.2.0-beta.1",
- "resolved": "https://registry.npmjs.org/@neondatabase/auth/-/auth-0.2.0-beta.1.tgz",
- "integrity": "sha512-XX8h0oMQChzhk9FYaIjDjPRCLosNb08QpS/SxaqUuBonWUguaR0+7lyqa1MtSHkns8Sunp+SRPw9vuLY4Qv9hQ==",
+ "version": "0.5.0-beta",
+ "resolved": "https://registry.npmjs.org/@neondatabase/auth/-/auth-0.5.0-beta.tgz",
+ "integrity": "sha512-s/CHBVlX7hzm1iJJpDKKDiv5zIXQqYxeGJC/3oRjs1mjY35Hzg+qM7rj/h6DVY3qrvl5jgILcrOnLtyYq/N80A==",
+ "license": "Apache-2.0",
"dependencies": {
- "@neondatabase/auth-ui": "0.1.0-alpha.11",
+ "@better-fetch/fetch": "1.3.1",
+ "@neondatabase/auth-ui": "0.3.0-beta",
"@supabase/auth-js": "2.79.0",
- "better-auth": "1.4.6",
- "jose": "6.1.2",
- "zod": "4.1.12"
+ "better-auth": "1.6.23",
+ "jose": "6.2.5",
+ "zod": "4.3.6"
+ },
+ "bin": {
+ "neon-auth-codemod": "codemods/migrate-auth-ui-imports.mjs"
},
"funding": {
"url": "https://neon.tech"
},
"peerDependencies": {
- "next": ">=16.0.6",
+ "next": ">=16.0.0",
"react": ">=18.0.0",
"react-dom": ">=18.0.0"
},
@@ -1058,61 +1079,18 @@
}
}
},
- "node_modules/@neondatabase/auth/node_modules/@daveyplate/better-auth-tanstack": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/@daveyplate/better-auth-tanstack/-/better-auth-tanstack-1.3.6.tgz",
- "integrity": "sha512-GvIGdbjRMZCEfAffU7LeWpGpie4vSli8V9jmNFCQOziZZMEFbO4cd53HBFmAushC9oEYIyhSNZBgV2ADzW94Ww==",
- "peer": true,
- "peerDependencies": {
- "@tanstack/query-core": ">=5.65.0",
- "@tanstack/react-query": ">=5.65.0",
- "better-auth": ">=1.2.8",
- "react": ">=18.0.0",
- "react-dom": ">=18.0.0"
- }
- },
- "node_modules/@neondatabase/auth/node_modules/@neondatabase/auth": {
- "version": "0.1.0-beta.21",
- "resolved": "https://registry.npmjs.org/@neondatabase/auth/-/auth-0.1.0-beta.21.tgz",
- "integrity": "sha512-j1pMr/j5AawxB0K0FltyHzlfWTJ6hsSvqOKQQ5lL8fKpwvmrzD2i+BOQAfMiQm5C3IQ7fltSDuCDT6v43orkBQ==",
- "peer": true,
- "dependencies": {
- "@neondatabase/auth-ui": "0.1.0-alpha.11",
- "@supabase/auth-js": "2.79.0",
- "better-auth": "1.4.6",
- "jose": "6.1.2",
- "zod": "4.1.12"
- },
- "funding": {
- "url": "https://neon.tech"
- },
- "peerDependencies": {
- "next": ">=16.0.6",
- "react": ">=18.0.0",
- "react-dom": ">=18.0.0"
- },
- "peerDependenciesMeta": {
- "next": {
- "optional": true
- },
- "react": {
- "optional": true
- },
- "react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@neondatabase/auth/node_modules/@neondatabase/auth-ui": {
- "version": "0.1.0-alpha.11",
- "resolved": "https://registry.npmjs.org/@neondatabase/auth-ui/-/auth-ui-0.1.0-alpha.11.tgz",
- "integrity": "sha512-iSo4O+4mo6eeLQrk70p0LdYRjx2zgoVjx4rPjPzcNFb6/2tipxZdF6uwjO5cnRIZxZB56t63I4Bw8xdVnZNSzw==",
+ "node_modules/@neondatabase/auth-ui": {
+ "version": "0.3.0-beta",
+ "resolved": "https://registry.npmjs.org/@neondatabase/auth-ui/-/auth-ui-0.3.0-beta.tgz",
+ "integrity": "sha512-//7s2nOR8ej0f8soXAlHSckjkrPPPSaH86pmSeMgRq9zHLvDymKuE/jhaoRVr2tgx1/BTviS7MdYzExaABxkjA==",
+ "license": "Apache-2.0",
"dependencies": {
+ "@better-auth/passkey": "1.6.23",
"@captchafox/react": "^1.10.0",
- "@daveyplate/better-auth-ui": "3.3.9",
+ "@daveyplate/better-auth-ui": "3.4.0",
"@hcaptcha/react-hcaptcha": "^1.12.1",
"@hookform/resolvers": "^5.2.2",
- "@marsidev/react-turnstile": ">=1.1.0",
+ "@marsidev/react-turnstile": "^1.1.0",
"@radix-ui/react-avatar": "^1.1.11",
"@radix-ui/react-checkbox": "^1.3.3",
"@radix-ui/react-context": "^1.1.3",
@@ -1127,6 +1105,8 @@
"@radix-ui/react-use-callback-ref": "^1.1.1",
"@radix-ui/react-use-layout-effect": "^1.1.1",
"@wojtekmaj/react-recaptcha-v3": "^0.1.4",
+ "better-auth": "1.6.23",
+ "better-call": "1.3.7",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"input-otp": "^1.4.2",
@@ -1137,17 +1117,17 @@
"react-qr-code": "^2.0.18",
"sonner": "^2.0.7",
"tailwind-merge": "^3.4.0",
- "tailwindcss": "^4.1.17",
+ "tailwindcss": "4.2.1",
"tw-animate-css": "^1.4.0",
- "ua-parser-js": "^2.0.5",
+ "ua-parser-js": "^2.0.9",
"vaul": "^1.1.2",
- "zod": "^4.1.12"
+ "zod": "^4.3.6"
},
"funding": {
"url": "https://neon.tech"
},
"peerDependencies": {
- "@neondatabase/auth": ">=0.1.0-alpha.8",
+ "@neondatabase/auth": "0.5.0-beta",
"react": ">=18.0.0",
"react-dom": ">=18.0.0"
},
@@ -1163,153 +1143,55 @@
}
}
},
- "node_modules/@neondatabase/auth/node_modules/@neondatabase/auth-ui/node_modules/@better-auth/core": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/@better-auth/core/-/core-1.6.2.tgz",
- "integrity": "sha512-nBftDp+eN1fwXor1O4KQorCXa0tJNDgpab7O1z4NcWUU+3faDpdzqLn5mbXZer2E8ZD4VhjqOfYZ041xnBF5NA==",
- "peer": true,
- "dependencies": {
- "@opentelemetry/semantic-conventions": "^1.39.0",
- "@standard-schema/spec": "^1.1.0",
- "zod": "^4.3.6"
- },
- "peerDependencies": {
- "@better-auth/utils": "0.4.0",
- "@better-fetch/fetch": "1.1.21",
- "@cloudflare/workers-types": ">=4",
- "@opentelemetry/api": "^1.9.0",
- "better-call": "1.3.5",
- "jose": "^6.1.0",
- "kysely": "^0.28.5",
- "nanostores": "^1.0.1"
- },
- "peerDependenciesMeta": {
- "@cloudflare/workers-types": {
- "optional": true
- }
- }
- },
- "node_modules/@neondatabase/auth/node_modules/@neondatabase/auth-ui/node_modules/@better-auth/drizzle-adapter": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/@better-auth/drizzle-adapter/-/drizzle-adapter-1.6.2.tgz",
- "integrity": "sha512-KawrNNuhgmpcc5PgLs6HesMckxCscz5J+BQ99iRmU1cLzG/A87IcydrmYtep+K8WHPN0HmZ/i4z/nOBCtxE2qA==",
- "peer": true,
- "peerDependencies": {
- "@better-auth/core": "^1.6.2",
- "@better-auth/utils": "0.4.0",
- "drizzle-orm": ">=0.41.0"
- },
- "peerDependenciesMeta": {
- "drizzle-orm": {
- "optional": true
- }
- }
- },
- "node_modules/@neondatabase/auth/node_modules/@neondatabase/auth-ui/node_modules/@better-auth/kysely-adapter": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/@better-auth/kysely-adapter/-/kysely-adapter-1.6.2.tgz",
- "integrity": "sha512-YMMm75jek/MNCAFWTAaq/U3VPmFnrwZW4NhBjjAwruHQJEIrSZZaOaUEXuUpFRRBhWqg7OOltQcHMwU/45CkuA==",
- "peer": true,
- "peerDependencies": {
- "@better-auth/core": "^1.6.2",
- "@better-auth/utils": "0.4.0",
- "kysely": "^0.27.0 || ^0.28.0"
- },
- "peerDependenciesMeta": {
- "kysely": {
- "optional": true
- }
- }
- },
- "node_modules/@neondatabase/auth/node_modules/@neondatabase/auth-ui/node_modules/@better-auth/memory-adapter": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/@better-auth/memory-adapter/-/memory-adapter-1.6.2.tgz",
- "integrity": "sha512-QvuK5m7NFgkzLPHyab+NORu3J683nj36Tix58qq6DPcniyY6KZk5gY2yyh4+z1wgSjrxwY5NFx/DC2qz8B8NJg==",
- "peer": true,
- "peerDependencies": {
- "@better-auth/core": "^1.6.2",
- "@better-auth/utils": "0.4.0"
- }
- },
- "node_modules/@neondatabase/auth/node_modules/@neondatabase/auth-ui/node_modules/@better-auth/mongo-adapter": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/@better-auth/mongo-adapter/-/mongo-adapter-1.6.2.tgz",
- "integrity": "sha512-IvR2Q+1pjzxA4JXI3ED76+6fsqervIpZ2K5MxoX/+miLQhLEmNcbqqcItg4O2kfkxN8h33/ev57sjTW8QH9Tuw==",
- "peer": true,
- "peerDependencies": {
- "@better-auth/core": "^1.6.2",
- "@better-auth/utils": "0.4.0",
- "mongodb": "^6.0.0 || ^7.0.0"
- },
- "peerDependenciesMeta": {
- "mongodb": {
- "optional": true
- }
- }
- },
- "node_modules/@neondatabase/auth/node_modules/@neondatabase/auth-ui/node_modules/@better-auth/passkey": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/@better-auth/passkey/-/passkey-1.6.2.tgz",
- "integrity": "sha512-jMfLAoCS+hI3nCZw3CepWIW/hAvw5l7CoN4PzhaSOt16uuAKHXbZPJOT7pz+E4l2d20+L7eshN4pH9wBh2L+uA==",
- "peer": true,
+ "node_modules/@neondatabase/auth-ui/node_modules/@better-auth/passkey": {
+ "version": "1.6.23",
+ "resolved": "https://registry.npmjs.org/@better-auth/passkey/-/passkey-1.6.23.tgz",
+ "integrity": "sha512-nr5tKaNd/huUwTYX4DUm4HcXgBkixj0lXrRHdy9azY4fFjF49Tyif4sPyRMWnQJYxlRJ1HVEMJq2nGyr5CLXQg==",
+ "license": "MIT",
"dependencies": {
"@simplewebauthn/browser": "^13.2.2",
"@simplewebauthn/server": "^13.2.3",
"zod": "^4.3.6"
},
"peerDependencies": {
- "@better-auth/core": "^1.6.2",
- "@better-auth/utils": "0.4.0",
- "@better-fetch/fetch": "1.1.21",
- "better-auth": "^1.6.2",
- "better-call": "1.3.5",
+ "@better-auth/core": "^1.6.23",
+ "@better-auth/utils": "0.4.2",
+ "@better-fetch/fetch": "1.3.1",
+ "better-auth": "^1.6.23",
+ "better-call": "1.3.7",
"nanostores": "^1.0.1"
}
},
- "node_modules/@neondatabase/auth/node_modules/@neondatabase/auth-ui/node_modules/@better-auth/prisma-adapter": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/@better-auth/prisma-adapter/-/prisma-adapter-1.6.2.tgz",
- "integrity": "sha512-bQkXYTo1zPau+xAiMpo1yCjEDSy7i7oeYlkYO+fSfRDCo52DE/9oPOOuI+EStmFkPUNSk9L2rhk8Fulifi8WCg==",
+ "node_modules/@neondatabase/auth-ui/node_modules/@daveyplate/better-auth-tanstack": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/@daveyplate/better-auth-tanstack/-/better-auth-tanstack-1.3.6.tgz",
+ "integrity": "sha512-GvIGdbjRMZCEfAffU7LeWpGpie4vSli8V9jmNFCQOziZZMEFbO4cd53HBFmAushC9oEYIyhSNZBgV2ADzW94Ww==",
+ "license": "MIT",
"peer": true,
"peerDependencies": {
- "@better-auth/core": "^1.6.2",
- "@better-auth/utils": "0.4.0",
- "@prisma/client": "^5.0.0 || ^6.0.0 || ^7.0.0",
- "prisma": "^5.0.0 || ^6.0.0 || ^7.0.0"
- },
- "peerDependenciesMeta": {
- "@prisma/client": {
- "optional": true
- },
- "prisma": {
- "optional": true
- }
+ "@tanstack/query-core": ">=5.65.0",
+ "@tanstack/react-query": ">=5.65.0",
+ "better-auth": ">=1.2.8",
+ "react": ">=18.0.0",
+ "react-dom": ">=18.0.0"
}
},
- "node_modules/@neondatabase/auth/node_modules/@neondatabase/auth-ui/node_modules/@better-auth/telemetry": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/@better-auth/telemetry/-/telemetry-1.6.2.tgz",
- "integrity": "sha512-o4gHKXqizUxVUUYChZZTowLEzdsz3ViBE/fKFzfHqNFUnF+aVt8QsbLSfipq1WpTIXyJVT/SnH0hgSdWxdssbQ==",
- "peer": true,
- "peerDependencies": {
- "@better-auth/core": "^1.6.2",
- "@better-auth/utils": "0.4.0",
- "@better-fetch/fetch": "1.1.21"
- }
- },
- "node_modules/@neondatabase/auth/node_modules/@neondatabase/auth-ui/node_modules/@daveyplate/better-auth-ui": {
- "version": "3.3.9",
- "resolved": "https://registry.npmjs.org/@daveyplate/better-auth-ui/-/better-auth-ui-3.3.9.tgz",
- "integrity": "sha512-bKUSytQmIaUwPd6hFcbZGiscCDhrh2BN10DZCR3QjsXpc0Wj2yBUcKQC2FKr8dUPZiUnWNt2ajIsEnaMXuKewA==",
+ "node_modules/@neondatabase/auth-ui/node_modules/@daveyplate/better-auth-ui": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/@daveyplate/better-auth-ui/-/better-auth-ui-3.4.0.tgz",
+ "integrity": "sha512-mGA0cKsAk0AcoKkxjff2xQOviMrUDDN+9SsRusURP/kiTmoLvWAv8utaPex0GFLHKm1w3BrLBdJRg9B2LkT7Bw==",
+ "license": "MIT",
"dependencies": {
+ "@better-auth/api-key": "^1.5.6",
"@better-fetch/fetch": "^1.1.21",
- "@hcaptcha/react-hcaptcha": "^1.17.1",
+ "@hcaptcha/react-hcaptcha": "^2.0.2",
"@noble/hashes": "^2.0.1",
- "@react-email/components": "^1.0.1",
+ "@react-email/components": "^1.0.10",
"@wojtekmaj/react-recaptcha-v3": "^0.1.4",
+ "better-call": "2.0.2",
+ "bowser": "^2.11.0",
"react-google-recaptcha": "^3.1.0",
"react-qr-code": "^2.0.18",
- "ua-parser-js": "^2.0.7",
"vaul": "^1.1.2"
},
"peerDependencies": {
@@ -1330,6 +1212,7 @@
"@radix-ui/react-separator": ">=1.1.0",
"@radix-ui/react-slot": ">=1.1.0",
"@radix-ui/react-tabs": ">=1.1.0",
+ "@radix-ui/react-tooltip": ">=1.2.0",
"@radix-ui/react-use-callback-ref": ">=1.1.0",
"@radix-ui/react-use-layout-effect": ">=1.1.0",
"@tanstack/react-query": ">=5.66.0",
@@ -1349,27 +1232,184 @@
"zod": ">=3.0.0"
}
},
- "node_modules/@neondatabase/auth/node_modules/@neondatabase/auth-ui/node_modules/better-auth": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/better-auth/-/better-auth-1.6.2.tgz",
- "integrity": "sha512-5nqDAIj5xexmnk+GjjdrBknJCabi1mlvsVWJbxs4usHreao4vNdxIxINWDzCyDF9iDR1ildRZdXWSiYPAvTHhA==",
- "peer": true,
+ "node_modules/@neondatabase/auth-ui/node_modules/@daveyplate/better-auth-ui/node_modules/@better-auth/api-key": {
+ "version": "1.7.4",
+ "resolved": "https://registry.npmjs.org/@better-auth/api-key/-/api-key-1.7.4.tgz",
+ "integrity": "sha512-CIpY45AvvTKzvbB9VTONB7FIYgJZXn1HYuxGRRXGnCKzWGe58SDLjB2UqWuix7TRicqanq3TwVCOZTDt6Np9JA==",
+ "license": "MIT",
"dependencies": {
- "@better-auth/core": "1.6.2",
- "@better-auth/drizzle-adapter": "1.6.2",
- "@better-auth/kysely-adapter": "1.6.2",
- "@better-auth/memory-adapter": "1.6.2",
- "@better-auth/mongo-adapter": "1.6.2",
- "@better-auth/prisma-adapter": "1.6.2",
- "@better-auth/telemetry": "1.6.2",
- "@better-auth/utils": "0.4.0",
- "@better-fetch/fetch": "1.1.21",
+ "zod": "^4.5.4"
+ },
+ "peerDependencies": {
+ "@better-auth/core": "^1.7.4",
+ "@better-auth/utils": "0.4.2",
+ "better-auth": "^1.7.4",
+ "better-call": "1.4.0"
+ }
+ },
+ "node_modules/@neondatabase/auth-ui/node_modules/@daveyplate/better-auth-ui/node_modules/@hcaptcha/react-hcaptcha": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@hcaptcha/react-hcaptcha/-/react-hcaptcha-2.2.0.tgz",
+ "integrity": "sha512-/HrPgNLRrJziLrh2s+qFRO33ubBSuHn9sdNsQcP0wQElpORxlpR6wnq3X9j/bZGd+uQtYIvPl4QSU2la+Jl9Hg==",
+ "license": "MIT"
+ },
+ "node_modules/@neondatabase/auth-ui/node_modules/@daveyplate/better-auth-ui/node_modules/better-call": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/better-call/-/better-call-2.0.2.tgz",
+ "integrity": "sha512-QqSKtfJD/ZzQdlm7BTUxT9RCA0AxcrZEMyU/yl7/uoFDoR7YCTdc555xQXjReo75M6/xkskPawPdhbn3fge4Cg==",
+ "license": "MIT",
+ "dependencies": {
+ "@better-auth/utils": "^0.3.1",
+ "@better-fetch/fetch": "^1.1.21",
+ "rou3": "^0.7.12",
+ "set-cookie-parser": "^3.0.1"
+ },
+ "peerDependencies": {
+ "zod": "^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "zod": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@neondatabase/auth-ui/node_modules/@daveyplate/better-auth-ui/node_modules/better-call/node_modules/@better-auth/utils": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/@better-auth/utils/-/utils-0.3.1.tgz",
+ "integrity": "sha512-+CGp4UmZSUrHHnpHhLPYu6cV+wSUSvVbZbNykxhUDocpVNTo9uFFxw/NqJlh1iC4wQ9HKKWGCKuZ5wUgS0v6Kg==",
+ "license": "MIT"
+ },
+ "node_modules/@neondatabase/auth-ui/node_modules/@hookform/resolvers": {
+ "version": "5.9.1",
+ "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-5.9.1.tgz",
+ "integrity": "sha512-7b7vsbraJxKgjVSA1Nur9tLwj539WGJUBLA7QNvXnFoT2pM5Z7G+6rlukk4B2/QrTZy6huRtH6wKeESPKuIr6w==",
+ "license": "MIT",
+ "dependencies": {
+ "@standard-schema/utils": "^0.3.0"
+ },
+ "peerDependencies": {
+ "@sinclair/typebox": ">=0.25.24",
+ "@standard-schema/spec": "^1.0.0",
+ "@typeschema/main": ">=0.13.7",
+ "@vinejs/vine": "^2.0.0 || ^3.0.0 || ^4.0.0",
+ "ajv": "^8.12.0",
+ "ajv-errors": "^3.0.0",
+ "ajv-formats": "^2.1.1",
+ "arktype": "^2.0.0",
+ "ata-validator": "^1.2.0",
+ "class-transformer": ">=0.4.0",
+ "class-validator": ">=0.12.0",
+ "computed-types": "^1.0.0",
+ "effect": "^3.10.3",
+ "fluentvalidation-ts": "^3.0.0",
+ "fp-ts": "^2.7.0",
+ "io-ts": "^2.0.0",
+ "joi": "^17.0.0 || ^18.0.0",
+ "nope-validator": ">=0.12.0",
+ "react-hook-form": "^7.55.0",
+ "superstruct": ">=0.12.0",
+ "typanion": "^3.3.2",
+ "valibot": ">=0.31.0 || ^1.0.0-beta.4 || ^1.0.0-rc",
+ "vest": ">=6.0.0",
+ "yup": "^1.0.0",
+ "zod": "^3.25.0 || ^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@sinclair/typebox": {
+ "optional": true
+ },
+ "@standard-schema/spec": {
+ "optional": true
+ },
+ "@typeschema/main": {
+ "optional": true
+ },
+ "@vinejs/vine": {
+ "optional": true
+ },
+ "ajv": {
+ "optional": true
+ },
+ "ajv-errors": {
+ "optional": true
+ },
+ "ajv-formats": {
+ "optional": true
+ },
+ "arktype": {
+ "optional": true
+ },
+ "ata-validator": {
+ "optional": true
+ },
+ "class-transformer": {
+ "optional": true
+ },
+ "class-validator": {
+ "optional": true
+ },
+ "computed-types": {
+ "optional": true
+ },
+ "effect": {
+ "optional": true
+ },
+ "fluentvalidation-ts": {
+ "optional": true
+ },
+ "fp-ts": {
+ "optional": true
+ },
+ "io-ts": {
+ "optional": true
+ },
+ "joi": {
+ "optional": true
+ },
+ "nope-validator": {
+ "optional": true
+ },
+ "superstruct": {
+ "optional": true
+ },
+ "typanion": {
+ "optional": true
+ },
+ "valibot": {
+ "optional": true
+ },
+ "vest": {
+ "optional": true
+ },
+ "yup": {
+ "optional": true
+ },
+ "zod": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@neondatabase/auth-ui/node_modules/better-auth": {
+ "version": "1.6.23",
+ "resolved": "https://registry.npmjs.org/better-auth/-/better-auth-1.6.23.tgz",
+ "integrity": "sha512-4vOaRd9UiKGKm9R+ej0jjU1es3MiJIiNc9Qq3VCnYqOZ4/nb5272QqTxWYoDxyUXl5x6A2x2we5KZKQO9teTQQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@better-auth/core": "1.6.23",
+ "@better-auth/drizzle-adapter": "1.6.23",
+ "@better-auth/kysely-adapter": "1.6.23",
+ "@better-auth/memory-adapter": "1.6.23",
+ "@better-auth/mongo-adapter": "1.6.23",
+ "@better-auth/prisma-adapter": "1.6.23",
+ "@better-auth/telemetry": "1.6.23",
+ "@better-auth/utils": "0.4.2",
+ "@better-fetch/fetch": "1.3.1",
"@noble/ciphers": "^2.1.1",
"@noble/hashes": "^2.0.1",
- "better-call": "1.3.5",
+ "better-call": "1.3.7",
"defu": "^6.1.4",
"jose": "^6.1.3",
- "kysely": "^0.28.14",
+ "kysely": "^0.28.17 || ^0.29.0",
"nanostores": "^1.1.1",
"zod": "^4.3.6"
},
@@ -1381,7 +1421,7 @@
"@tanstack/solid-start": "^1.0.0",
"better-sqlite3": "^12.0.0",
"drizzle-kit": ">=0.31.4",
- "drizzle-orm": ">=0.41.0",
+ "drizzle-orm": "^0.45.2",
"mongodb": "^6.0.0 || ^7.0.0",
"mysql2": "^3.0.0",
"next": "^14.0.0 || ^15.0.0 || ^16.0.0",
@@ -1454,92 +1494,224 @@
}
}
},
- "node_modules/@neondatabase/auth/node_modules/@neondatabase/auth-ui/node_modules/better-call": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/better-call/-/better-call-1.3.5.tgz",
- "integrity": "sha512-kOFJkBP7utAQLEYrobZm3vkTH8mXq5GNgvjc5/XEST1ilVHaxXUXfeDeFlqoETMtyqS4+3/h4ONX2i++ebZrvA==",
- "peer": true,
+ "node_modules/@neondatabase/auth-ui/node_modules/better-auth/node_modules/@better-auth/core": {
+ "version": "1.6.23",
+ "resolved": "https://registry.npmjs.org/@better-auth/core/-/core-1.6.23.tgz",
+ "integrity": "sha512-beEhOs0uVeOxYOZKUfIEBd/nQV2Bd4/6wyLxZ0OFkn6CMTK2Vi+hXuZLnyPBeB6RdHpebEoJWiHqwHxBIxgPDQ==",
+ "license": "MIT",
"dependencies": {
- "@better-auth/utils": "^0.4.0",
- "@better-fetch/fetch": "^1.1.21",
- "rou3": "^0.7.12",
- "set-cookie-parser": "^3.0.1"
+ "@opentelemetry/semantic-conventions": "^1.39.0",
+ "@standard-schema/spec": "^1.1.0",
+ "zod": "^4.3.6"
},
"peerDependencies": {
- "zod": "^4.0.0"
+ "@better-auth/utils": "0.4.2",
+ "@better-fetch/fetch": "1.3.1",
+ "@cloudflare/workers-types": ">=4",
+ "@opentelemetry/api": "^1.9.0",
+ "better-call": "1.3.7",
+ "jose": "^6.1.0",
+ "kysely": "^0.28.5 || ^0.29.0",
+ "nanostores": "^1.0.1"
},
"peerDependenciesMeta": {
- "zod": {
+ "@cloudflare/workers-types": {
+ "optional": true
+ },
+ "@opentelemetry/api": {
"optional": true
}
}
},
- "node_modules/@neondatabase/auth/node_modules/@neondatabase/auth-ui/node_modules/jose": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.2.tgz",
- "integrity": "sha512-d7kPDd34KO/YnzaDOlikGpOurfF0ByC2sEV4cANCtdqLlTfBlw2p14O/5d/zv40gJPbIQxfES3nSx1/oYNyuZQ==",
- "peer": true,
- "funding": {
- "url": "https://github.com/sponsors/panva"
+ "node_modules/@neondatabase/auth-ui/node_modules/better-auth/node_modules/@better-auth/drizzle-adapter": {
+ "version": "1.6.23",
+ "resolved": "https://registry.npmjs.org/@better-auth/drizzle-adapter/-/drizzle-adapter-1.6.23.tgz",
+ "integrity": "sha512-2+/PTVfIP9E7iz6af8TB3lhnowHUj9ljC66kECmHaFEdUqPgzHoWux9epotKwO7XDg2ui4ttWQ8CMeNFLvQeKQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@better-auth/core": "^1.6.23",
+ "@better-auth/utils": "0.4.2",
+ "drizzle-orm": "^0.45.2"
+ },
+ "peerDependenciesMeta": {
+ "drizzle-orm": {
+ "optional": true
+ }
}
},
- "node_modules/@neondatabase/auth/node_modules/@neondatabase/auth-ui/node_modules/set-cookie-parser": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-3.1.0.tgz",
- "integrity": "sha512-kjnC1DXBHcxaOaOXBHBeRtltsDG2nUiUni+jP92M9gYdW12rsmx92UsfpH7o5tDRs7I1ZZPSQJQGv3UaRfCiuw==",
- "peer": true
+ "node_modules/@neondatabase/auth-ui/node_modules/better-auth/node_modules/@better-auth/kysely-adapter": {
+ "version": "1.6.23",
+ "resolved": "https://registry.npmjs.org/@better-auth/kysely-adapter/-/kysely-adapter-1.6.23.tgz",
+ "integrity": "sha512-zbNJsMbG09exfkGyvFqBLLqWoMPAUWjxCuUnEK5AsjbYoZeIjj/QGZgdf4CapVWryKxjA9Q6Jlr6fbiPpC3VAg==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@better-auth/core": "^1.6.23",
+ "@better-auth/utils": "0.4.2",
+ "kysely": "^0.28.17 || ^0.29.0"
+ },
+ "peerDependenciesMeta": {
+ "kysely": {
+ "optional": true
+ }
+ }
},
- "node_modules/@neondatabase/auth/node_modules/@neondatabase/auth-ui/node_modules/zod": {
- "version": "4.3.6",
- "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz",
- "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==",
+ "node_modules/@neondatabase/auth-ui/node_modules/better-auth/node_modules/@better-auth/memory-adapter": {
+ "version": "1.6.23",
+ "resolved": "https://registry.npmjs.org/@better-auth/memory-adapter/-/memory-adapter-1.6.23.tgz",
+ "integrity": "sha512-krIiR0pIVkaKlAzm690n5bcMW4NGbqeMg0HQSD9fz/KcQF/eWLqcq9gG/BhHTj2i/y96qH+W5JWPmaSOS5iTgQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@better-auth/core": "^1.6.23",
+ "@better-auth/utils": "0.4.2"
+ }
+ },
+ "node_modules/@neondatabase/auth-ui/node_modules/better-auth/node_modules/@better-auth/mongo-adapter": {
+ "version": "1.6.23",
+ "resolved": "https://registry.npmjs.org/@better-auth/mongo-adapter/-/mongo-adapter-1.6.23.tgz",
+ "integrity": "sha512-7+QdevitGlKBbP6JbiSk5SBnzPsKV/mDrQBGBn8hwByQLeJwqpqbuBPw7ZI8vzUlFfAAnyFiqwP3Eb8mxnp7pA==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@better-auth/core": "^1.6.23",
+ "@better-auth/utils": "0.4.2",
+ "mongodb": "^6.0.0 || ^7.0.0"
+ },
+ "peerDependenciesMeta": {
+ "mongodb": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@neondatabase/auth-ui/node_modules/better-auth/node_modules/@better-auth/prisma-adapter": {
+ "version": "1.6.23",
+ "resolved": "https://registry.npmjs.org/@better-auth/prisma-adapter/-/prisma-adapter-1.6.23.tgz",
+ "integrity": "sha512-2qSdzidq4tkb1eS5TTqb4Nzg0mdZWm3Qky9SYeXeb8PpVQbC2sxqJhEM5mK7y12uU6I8hc64wO9f7AFVNL+6UQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@better-auth/core": "^1.6.23",
+ "@better-auth/utils": "0.4.2",
+ "@prisma/client": "^5.0.0 || ^6.0.0 || ^7.0.0",
+ "prisma": "^5.0.0 || ^6.0.0 || ^7.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@prisma/client": {
+ "optional": true
+ },
+ "prisma": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@neondatabase/auth-ui/node_modules/better-auth/node_modules/@better-auth/telemetry": {
+ "version": "1.6.23",
+ "resolved": "https://registry.npmjs.org/@better-auth/telemetry/-/telemetry-1.6.23.tgz",
+ "integrity": "sha512-/R2Kb+z2BpDOOWwVHqOk+c0VNpuwfCv4Hp5Yr9003WIZPax/zyNraGLB9CFE8qF2gZW8Dsz419k4I8CPrGzpDA==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@better-auth/core": "^1.6.23",
+ "@better-auth/utils": "0.4.2",
+ "@better-fetch/fetch": "1.3.1"
+ }
+ },
+ "node_modules/@neondatabase/auth-ui/node_modules/tailwindcss": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.2.1.tgz",
+ "integrity": "sha512-/tBrSQ36vCleJkAOsy9kbNTgaxvGbyOamC30PRePTQe/o1MFwEKHQk4Cn7BNGaPtjp+PuUrByJehM1hgxfq4sw==",
+ "license": "MIT"
+ },
+ "node_modules/@neondatabase/auth-ui/node_modules/zod": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.2.tgz",
+ "integrity": "sha512-lh5RCAGFa1Cm2hjtNwLQhSs/AsqdWnTQaBER9fEwN/88pSh7KOtJavtBx/0VlkN/uFd61SwYmljLMDAsHlvzBQ==",
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
},
"node_modules/@neondatabase/auth/node_modules/better-auth": {
- "version": "1.4.6",
- "resolved": "https://registry.npmjs.org/better-auth/-/better-auth-1.4.6.tgz",
- "integrity": "sha512-5wEBzjolrQA26b4uT6FVVYICsE3SmE/MzrZtl8cb2a3TJtswpP8v3OVV5yTso+ef9z85swgZk0/qBzcULFWVtA==",
+ "version": "1.6.23",
+ "resolved": "https://registry.npmjs.org/better-auth/-/better-auth-1.6.23.tgz",
+ "integrity": "sha512-4vOaRd9UiKGKm9R+ej0jjU1es3MiJIiNc9Qq3VCnYqOZ4/nb5272QqTxWYoDxyUXl5x6A2x2we5KZKQO9teTQQ==",
+ "license": "MIT",
"dependencies": {
- "@better-auth/core": "1.4.6",
- "@better-auth/telemetry": "1.4.6",
- "@better-auth/utils": "0.3.0",
- "@better-fetch/fetch": "1.1.18",
- "@noble/ciphers": "^2.0.0",
- "@noble/hashes": "^2.0.0",
- "better-call": "1.1.5",
+ "@better-auth/core": "1.6.23",
+ "@better-auth/drizzle-adapter": "1.6.23",
+ "@better-auth/kysely-adapter": "1.6.23",
+ "@better-auth/memory-adapter": "1.6.23",
+ "@better-auth/mongo-adapter": "1.6.23",
+ "@better-auth/prisma-adapter": "1.6.23",
+ "@better-auth/telemetry": "1.6.23",
+ "@better-auth/utils": "0.4.2",
+ "@better-fetch/fetch": "1.3.1",
+ "@noble/ciphers": "^2.1.1",
+ "@noble/hashes": "^2.0.1",
+ "better-call": "1.3.7",
"defu": "^6.1.4",
- "jose": "^6.1.0",
- "kysely": "^0.28.5",
- "ms": "4.0.0-nightly.202508271359",
- "nanostores": "^1.0.1",
- "zod": "^4.1.12"
+ "jose": "^6.1.3",
+ "kysely": "^0.28.17 || ^0.29.0",
+ "nanostores": "^1.1.1",
+ "zod": "^4.3.6"
},
"peerDependencies": {
"@lynx-js/react": "*",
+ "@prisma/client": "^5.0.0 || ^6.0.0 || ^7.0.0",
"@sveltejs/kit": "^2.0.0",
"@tanstack/react-start": "^1.0.0",
+ "@tanstack/solid-start": "^1.0.0",
+ "better-sqlite3": "^12.0.0",
+ "drizzle-kit": ">=0.31.4",
+ "drizzle-orm": "^0.45.2",
+ "mongodb": "^6.0.0 || ^7.0.0",
+ "mysql2": "^3.0.0",
"next": "^14.0.0 || ^15.0.0 || ^16.0.0",
+ "pg": "^8.0.0",
+ "prisma": "^5.0.0 || ^6.0.0 || ^7.0.0",
"react": "^18.0.0 || ^19.0.0",
"react-dom": "^18.0.0 || ^19.0.0",
"solid-js": "^1.0.0",
"svelte": "^4.0.0 || ^5.0.0",
+ "vitest": "^2.0.0 || ^3.0.0 || ^4.0.0",
"vue": "^3.0.0"
},
"peerDependenciesMeta": {
"@lynx-js/react": {
"optional": true
},
+ "@prisma/client": {
+ "optional": true
+ },
"@sveltejs/kit": {
"optional": true
},
"@tanstack/react-start": {
"optional": true
},
+ "@tanstack/solid-start": {
+ "optional": true
+ },
+ "better-sqlite3": {
+ "optional": true
+ },
+ "drizzle-kit": {
+ "optional": true
+ },
+ "drizzle-orm": {
+ "optional": true
+ },
+ "mongodb": {
+ "optional": true
+ },
+ "mysql2": {
+ "optional": true
+ },
"next": {
"optional": true
},
+ "pg": {
+ "optional": true
+ },
+ "prisma": {
+ "optional": true
+ },
"react": {
"optional": true
},
@@ -1552,136 +1724,154 @@
"svelte": {
"optional": true
},
+ "vitest": {
+ "optional": true
+ },
"vue": {
"optional": true
}
}
},
"node_modules/@neondatabase/auth/node_modules/better-auth/node_modules/@better-auth/core": {
- "version": "1.4.6",
- "resolved": "https://registry.npmjs.org/@better-auth/core/-/core-1.4.6.tgz",
- "integrity": "sha512-cYjscr4wU5ZJPhk86JuUkecJT+LSYCFmUzYaitiLkizl+wCr1qdPFSEoAnRVZVTUEEoKpeS2XW69voBJ1NoB3g==",
+ "version": "1.6.23",
+ "resolved": "https://registry.npmjs.org/@better-auth/core/-/core-1.6.23.tgz",
+ "integrity": "sha512-beEhOs0uVeOxYOZKUfIEBd/nQV2Bd4/6wyLxZ0OFkn6CMTK2Vi+hXuZLnyPBeB6RdHpebEoJWiHqwHxBIxgPDQ==",
+ "license": "MIT",
"dependencies": {
- "@standard-schema/spec": "^1.0.0",
- "zod": "^4.1.12"
+ "@opentelemetry/semantic-conventions": "^1.39.0",
+ "@standard-schema/spec": "^1.1.0",
+ "zod": "^4.3.6"
},
"peerDependencies": {
- "@better-auth/utils": "0.3.0",
- "@better-fetch/fetch": "1.1.18",
- "better-call": "1.1.5",
+ "@better-auth/utils": "0.4.2",
+ "@better-fetch/fetch": "1.3.1",
+ "@cloudflare/workers-types": ">=4",
+ "@opentelemetry/api": "^1.9.0",
+ "better-call": "1.3.7",
"jose": "^6.1.0",
- "kysely": "^0.28.5",
+ "kysely": "^0.28.5 || ^0.29.0",
"nanostores": "^1.0.1"
+ },
+ "peerDependenciesMeta": {
+ "@cloudflare/workers-types": {
+ "optional": true
+ },
+ "@opentelemetry/api": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@neondatabase/auth/node_modules/better-auth/node_modules/@better-auth/drizzle-adapter": {
+ "version": "1.6.23",
+ "resolved": "https://registry.npmjs.org/@better-auth/drizzle-adapter/-/drizzle-adapter-1.6.23.tgz",
+ "integrity": "sha512-2+/PTVfIP9E7iz6af8TB3lhnowHUj9ljC66kECmHaFEdUqPgzHoWux9epotKwO7XDg2ui4ttWQ8CMeNFLvQeKQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@better-auth/core": "^1.6.23",
+ "@better-auth/utils": "0.4.2",
+ "drizzle-orm": "^0.45.2"
+ },
+ "peerDependenciesMeta": {
+ "drizzle-orm": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@neondatabase/auth/node_modules/better-auth/node_modules/@better-auth/kysely-adapter": {
+ "version": "1.6.23",
+ "resolved": "https://registry.npmjs.org/@better-auth/kysely-adapter/-/kysely-adapter-1.6.23.tgz",
+ "integrity": "sha512-zbNJsMbG09exfkGyvFqBLLqWoMPAUWjxCuUnEK5AsjbYoZeIjj/QGZgdf4CapVWryKxjA9Q6Jlr6fbiPpC3VAg==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@better-auth/core": "^1.6.23",
+ "@better-auth/utils": "0.4.2",
+ "kysely": "^0.28.17 || ^0.29.0"
+ },
+ "peerDependenciesMeta": {
+ "kysely": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@neondatabase/auth/node_modules/better-auth/node_modules/@better-auth/memory-adapter": {
+ "version": "1.6.23",
+ "resolved": "https://registry.npmjs.org/@better-auth/memory-adapter/-/memory-adapter-1.6.23.tgz",
+ "integrity": "sha512-krIiR0pIVkaKlAzm690n5bcMW4NGbqeMg0HQSD9fz/KcQF/eWLqcq9gG/BhHTj2i/y96qH+W5JWPmaSOS5iTgQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@better-auth/core": "^1.6.23",
+ "@better-auth/utils": "0.4.2"
+ }
+ },
+ "node_modules/@neondatabase/auth/node_modules/better-auth/node_modules/@better-auth/mongo-adapter": {
+ "version": "1.6.23",
+ "resolved": "https://registry.npmjs.org/@better-auth/mongo-adapter/-/mongo-adapter-1.6.23.tgz",
+ "integrity": "sha512-7+QdevitGlKBbP6JbiSk5SBnzPsKV/mDrQBGBn8hwByQLeJwqpqbuBPw7ZI8vzUlFfAAnyFiqwP3Eb8mxnp7pA==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@better-auth/core": "^1.6.23",
+ "@better-auth/utils": "0.4.2",
+ "mongodb": "^6.0.0 || ^7.0.0"
+ },
+ "peerDependenciesMeta": {
+ "mongodb": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@neondatabase/auth/node_modules/better-auth/node_modules/@better-auth/prisma-adapter": {
+ "version": "1.6.23",
+ "resolved": "https://registry.npmjs.org/@better-auth/prisma-adapter/-/prisma-adapter-1.6.23.tgz",
+ "integrity": "sha512-2qSdzidq4tkb1eS5TTqb4Nzg0mdZWm3Qky9SYeXeb8PpVQbC2sxqJhEM5mK7y12uU6I8hc64wO9f7AFVNL+6UQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@better-auth/core": "^1.6.23",
+ "@better-auth/utils": "0.4.2",
+ "@prisma/client": "^5.0.0 || ^6.0.0 || ^7.0.0",
+ "prisma": "^5.0.0 || ^6.0.0 || ^7.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@prisma/client": {
+ "optional": true
+ },
+ "prisma": {
+ "optional": true
+ }
}
},
"node_modules/@neondatabase/auth/node_modules/better-auth/node_modules/@better-auth/telemetry": {
- "version": "1.4.6",
- "resolved": "https://registry.npmjs.org/@better-auth/telemetry/-/telemetry-1.4.6.tgz",
- "integrity": "sha512-idc9MGJXxWA7zl2U9zsbdG6+2ZCeqWdPq1KeFSfyqGMFtI1VPQOx9YWLqNPOt31YnOX77ojZSraU2sb7IRdBMA==",
- "dependencies": {
- "@better-auth/utils": "0.3.0",
- "@better-fetch/fetch": "1.1.18"
- },
+ "version": "1.6.23",
+ "resolved": "https://registry.npmjs.org/@better-auth/telemetry/-/telemetry-1.6.23.tgz",
+ "integrity": "sha512-/R2Kb+z2BpDOOWwVHqOk+c0VNpuwfCv4Hp5Yr9003WIZPax/zyNraGLB9CFE8qF2gZW8Dsz419k4I8CPrGzpDA==",
+ "license": "MIT",
"peerDependencies": {
- "@better-auth/core": "1.4.6"
+ "@better-auth/core": "^1.6.23",
+ "@better-auth/utils": "0.4.2",
+ "@better-fetch/fetch": "1.3.1"
}
},
- "node_modules/@neondatabase/auth/node_modules/better-auth/node_modules/@better-auth/utils": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/@better-auth/utils/-/utils-0.3.0.tgz",
- "integrity": "sha512-W+Adw6ZA6mgvnSnhOki270rwJ42t4XzSK6YWGF//BbVXL6SwCLWfyzBc1lN2m/4RM28KubdBKQ4X5VMoLRNPQw=="
- },
- "node_modules/@neondatabase/auth/node_modules/better-auth/node_modules/@better-fetch/fetch": {
- "version": "1.1.18",
- "resolved": "https://registry.npmjs.org/@better-fetch/fetch/-/fetch-1.1.18.tgz",
- "integrity": "sha512-rEFOE1MYIsBmoMJtQbl32PGHHXuG2hDxvEd7rUHE0vCBoFQVSDqaVs9hkZEtHCxRoY+CljXKFCOuJ8uxqw1LcA=="
- },
- "node_modules/@neondatabase/auth/node_modules/better-auth/node_modules/better-call": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/better-call/-/better-call-1.1.5.tgz",
- "integrity": "sha512-nQJ3S87v6wApbDwbZ++FrQiSiVxWvZdjaO+2v6lZJAG2WWggkB2CziUDjPciz3eAt9TqfRursIQMZIcpkBnvlw==",
- "dependencies": {
- "@better-auth/utils": "^0.3.0",
- "@better-fetch/fetch": "^1.1.4",
- "rou3": "^0.7.10",
- "set-cookie-parser": "^2.7.1"
- },
- "peerDependencies": {
- "zod": "^4.0.0"
- },
- "peerDependenciesMeta": {
- "zod": {
- "optional": true
- }
+ "node_modules/@neondatabase/auth/node_modules/zod": {
+ "version": "4.3.6",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz",
+ "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
}
},
- "node_modules/@neondatabase/auth/node_modules/ms": {
- "version": "4.0.0-nightly.202508271359",
- "resolved": "https://registry.npmjs.org/ms/-/ms-4.0.0-nightly.202508271359.tgz",
- "integrity": "sha512-WC/Eo7NzFrOV/RRrTaI0fxKVbNCzEy76j2VqNV8SxDf9D69gSE2Lh0QwYvDlhiYmheBYExAvEAxVf5NoN0cj2A==",
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@neondatabase/auth/node_modules/pg": {
- "version": "8.20.0",
- "resolved": "https://registry.npmjs.org/pg/-/pg-8.20.0.tgz",
- "integrity": "sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==",
- "optional": true,
- "peer": true,
- "dependencies": {
- "pg-connection-string": "^2.12.0",
- "pg-pool": "^3.13.0",
- "pg-protocol": "^1.13.0",
- "pg-types": "2.2.0",
- "pgpass": "1.0.5"
- },
- "engines": {
- "node": ">= 16.0.0"
- },
- "optionalDependencies": {
- "pg-cloudflare": "^1.3.0"
- },
- "peerDependencies": {
- "pg-native": ">=3.0.1"
- },
- "peerDependenciesMeta": {
- "pg-native": {
- "optional": true
- }
- }
- },
- "node_modules/@neondatabase/auth/node_modules/pg-pool": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.13.0.tgz",
- "integrity": "sha512-gB+R+Xud1gLFuRD/QgOIgGOBE2KCQPaPwkzBBGC9oG69pHTkhQeIuejVIk3/cnDyX39av2AxomQiyPT13WKHQA==",
- "optional": true,
- "peer": true,
- "peerDependencies": {
- "pg": ">=8.0"
- }
- },
- "node_modules/@neondatabase/auth/node_modules/pg-protocol": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.13.0.tgz",
- "integrity": "sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==",
- "optional": true,
- "peer": true
- },
- "node_modules/@neondatabase/auth/node_modules/tailwindcss": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.2.2.tgz",
- "integrity": "sha512-KWBIxs1Xb6NoLdMVqhbhgwZf2PGBpPEiwOqgI4pFIYbNTfBXiKYyWoTsXgBQ9WFg/OlhnvHaY+AEpW7wSmFo2Q=="
- },
"node_modules/@neondatabase/neon-js": {
- "version": "0.2.0-beta.1",
- "resolved": "https://registry.npmjs.org/@neondatabase/neon-js/-/neon-js-0.2.0-beta.1.tgz",
- "integrity": "sha512-V/ty76DIW+iLR7eiSHksr02coc9bNnQzHSlErafVZw6p9D0UwKsaE6ND4SctsE8mJRb+QUuUAYlETc6GvG3m/A==",
+ "version": "0.7.0-beta",
+ "resolved": "https://registry.npmjs.org/@neondatabase/neon-js/-/neon-js-0.7.0-beta.tgz",
+ "integrity": "sha512-TZiMKvYU90/P5E1aXDPW0eY1wQmV4KWHjlYQ4zqnvGsXhaklHuXUsEZ9FiaaF343wxzMBTe2b+RtJ5Q8yCHMjQ==",
+ "license": "Apache-2.0",
"dependencies": {
- "@neondatabase/auth": "0.2.0-beta.1",
- "@neondatabase/postgrest-js": "0.1.0-alpha.2",
- "@supabase/postgres-meta": "0.93.1",
+ "@neondatabase/auth": "0.5.0-beta",
+ "@neondatabase/postgrest-js": "0.2.0-beta",
"meow": "14.0.0",
+ "pg": "^8.13.0",
+ "pg-format": "1.0.4",
+ "postgres-array": "3.0.4",
+ "prettier": "3.8.1",
"zod": "4.1.12"
},
"bin": {
@@ -1692,9 +1882,10 @@
}
},
"node_modules/@neondatabase/postgrest-js": {
- "version": "0.1.0-alpha.2",
- "resolved": "https://registry.npmjs.org/@neondatabase/postgrest-js/-/postgrest-js-0.1.0-alpha.2.tgz",
- "integrity": "sha512-fE3Kd6Tj3uUVx6jvDUA3USW4gZaSAL0NoGePFg31xDfBbmS2EBpdboKUnac8rJVajUiCDQPj6/j4G1eXOleYsg==",
+ "version": "0.2.0-beta",
+ "resolved": "https://registry.npmjs.org/@neondatabase/postgrest-js/-/postgrest-js-0.2.0-beta.tgz",
+ "integrity": "sha512-Uq+Qzr6g5lD41KG0TFS5lc2Wo7UnQ1PE+HWdYg8Rr4X5f2pfJvJxciaPlXxOqZji6sEeO6WmLquMG40B/0sSGQ==",
+ "license": "Apache-2.0",
"dependencies": {
"@supabase/postgrest-js": "2.79.0"
},
@@ -1703,9 +1894,10 @@
}
},
"node_modules/@noble/ciphers": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-2.1.1.tgz",
- "integrity": "sha512-bysYuiVfhxNJuldNXlFEitTVdNnYUc+XNJZd7Qm2a5j1vZHgY+fazadNFWFaMK/2vye0JVlxV3gHmC0WDfAOQw==",
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-2.4.0.tgz",
+ "integrity": "sha512-AnjFn0Jv92laAkvMrghlFZq4qQCIN/4DxFV/eooqtC2YTjB7kBeLMS2T9KJX4Dn+ZVXLOwK0lSgqDtx9gvxtiw==",
+ "license": "MIT",
"engines": {
"node": ">= 20.19.0"
},
@@ -1714,9 +1906,10 @@
}
},
"node_modules/@noble/hashes": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz",
- "integrity": "sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==",
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.4.0.tgz",
+ "integrity": "sha512-X5XaVWZIBCT7HHZGm5I7ZQXDwLG+bGXuSrMQAW+7Zvl87h1kmc1ZB1VSRJcpUfoUrGQp4Fkoxm5kZ+Ms+aW+eA==",
+ "license": "MIT",
"engines": {
"node": ">= 20.19.0"
},
@@ -1759,646 +1952,191 @@
"node": ">= 8"
}
},
- "node_modules/@opentelemetry/api": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.1.tgz",
- "integrity": "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==",
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/@opentelemetry/api-logs": {
- "version": "0.57.2",
- "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz",
- "integrity": "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==",
- "dependencies": {
- "@opentelemetry/api": "^1.3.0"
- },
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/@opentelemetry/context-async-hooks": {
- "version": "1.30.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.30.1.tgz",
- "integrity": "sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA==",
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": ">=1.0.0 <1.10.0"
- }
- },
- "node_modules/@opentelemetry/core": {
- "version": "1.30.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz",
- "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==",
- "dependencies": {
- "@opentelemetry/semantic-conventions": "1.28.0"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": ">=1.0.0 <1.10.0"
- }
- },
- "node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions": {
- "version": "1.28.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz",
- "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==",
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/@opentelemetry/instrumentation": {
- "version": "0.57.2",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz",
- "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==",
- "dependencies": {
- "@opentelemetry/api-logs": "0.57.2",
- "@types/shimmer": "^1.2.0",
- "import-in-the-middle": "^1.8.1",
- "require-in-the-middle": "^7.1.1",
- "semver": "^7.5.2",
- "shimmer": "^1.2.1"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
- }
- },
- "node_modules/@opentelemetry/instrumentation-amqplib": {
- "version": "0.46.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-amqplib/-/instrumentation-amqplib-0.46.1.tgz",
- "integrity": "sha512-AyXVnlCf/xV3K/rNumzKxZqsULyITJH6OVLiW6730JPRqWA7Zc9bvYoVNpN6iOpTU8CasH34SU/ksVJmObFibQ==",
- "dependencies": {
- "@opentelemetry/core": "^1.8.0",
- "@opentelemetry/instrumentation": "^0.57.1",
- "@opentelemetry/semantic-conventions": "^1.27.0"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
- }
- },
- "node_modules/@opentelemetry/instrumentation-connect": {
- "version": "0.43.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.43.1.tgz",
- "integrity": "sha512-ht7YGWQuV5BopMcw5Q2hXn3I8eG8TH0J/kc/GMcW4CuNTgiP6wCu44BOnucJWL3CmFWaRHI//vWyAhaC8BwePw==",
- "dependencies": {
- "@opentelemetry/core": "^1.8.0",
- "@opentelemetry/instrumentation": "^0.57.1",
- "@opentelemetry/semantic-conventions": "^1.27.0",
- "@types/connect": "3.4.38"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
- }
- },
- "node_modules/@opentelemetry/instrumentation-dataloader": {
- "version": "0.16.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.16.1.tgz",
- "integrity": "sha512-K/qU4CjnzOpNkkKO4DfCLSQshejRNAJtd4esgigo/50nxCB6XCyi1dhAblUHM9jG5dRm8eu0FB+t87nIo99LYQ==",
- "dependencies": {
- "@opentelemetry/instrumentation": "^0.57.1"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
- }
- },
- "node_modules/@opentelemetry/instrumentation-express": {
- "version": "0.47.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-express/-/instrumentation-express-0.47.1.tgz",
- "integrity": "sha512-QNXPTWteDclR2B4pDFpz0TNghgB33UMjUt14B+BZPmtH1MwUFAfLHBaP5If0Z5NZC+jaH8oF2glgYjrmhZWmSw==",
- "dependencies": {
- "@opentelemetry/core": "^1.8.0",
- "@opentelemetry/instrumentation": "^0.57.1",
- "@opentelemetry/semantic-conventions": "^1.27.0"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
- }
- },
- "node_modules/@opentelemetry/instrumentation-fs": {
- "version": "0.19.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.19.1.tgz",
- "integrity": "sha512-6g0FhB3B9UobAR60BGTcXg4IHZ6aaYJzp0Ki5FhnxyAPt8Ns+9SSvgcrnsN2eGmk3RWG5vYycUGOEApycQL24A==",
- "dependencies": {
- "@opentelemetry/core": "^1.8.0",
- "@opentelemetry/instrumentation": "^0.57.1"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
- }
- },
- "node_modules/@opentelemetry/instrumentation-generic-pool": {
- "version": "0.43.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.43.1.tgz",
- "integrity": "sha512-M6qGYsp1cURtvVLGDrPPZemMFEbuMmCXgQYTReC/IbimV5sGrLBjB+/hANUpRZjX67nGLdKSVLZuQQAiNz+sww==",
- "dependencies": {
- "@opentelemetry/instrumentation": "^0.57.1"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
- }
- },
- "node_modules/@opentelemetry/instrumentation-graphql": {
- "version": "0.47.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.47.1.tgz",
- "integrity": "sha512-EGQRWMGqwiuVma8ZLAZnExQ7sBvbOx0N/AE/nlafISPs8S+QtXX+Viy6dcQwVWwYHQPAcuY3bFt3xgoAwb4ZNQ==",
- "dependencies": {
- "@opentelemetry/instrumentation": "^0.57.1"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
- }
- },
- "node_modules/@opentelemetry/instrumentation-hapi": {
- "version": "0.45.2",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.45.2.tgz",
- "integrity": "sha512-7Ehow/7Wp3aoyCrZwQpU7a2CnoMq0XhIcioFuKjBb0PLYfBfmTsFTUyatlHu0fRxhwcRsSQRTvEhmZu8CppBpQ==",
- "dependencies": {
- "@opentelemetry/core": "^1.8.0",
- "@opentelemetry/instrumentation": "^0.57.1",
- "@opentelemetry/semantic-conventions": "^1.27.0"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
- }
- },
- "node_modules/@opentelemetry/instrumentation-http": {
- "version": "0.57.2",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.57.2.tgz",
- "integrity": "sha512-1Uz5iJ9ZAlFOiPuwYg29Bf7bJJc/GeoeJIFKJYQf67nTVKFe8RHbEtxgkOmK4UGZNHKXcpW4P8cWBYzBn1USpg==",
- "dependencies": {
- "@opentelemetry/core": "1.30.1",
- "@opentelemetry/instrumentation": "0.57.2",
- "@opentelemetry/semantic-conventions": "1.28.0",
- "forwarded-parse": "2.1.2",
- "semver": "^7.5.2"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
- }
- },
- "node_modules/@opentelemetry/instrumentation-http/node_modules/@opentelemetry/semantic-conventions": {
- "version": "1.28.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz",
- "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==",
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/@opentelemetry/instrumentation-ioredis": {
- "version": "0.47.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.47.1.tgz",
- "integrity": "sha512-OtFGSN+kgk/aoKgdkKQnBsQFDiG8WdCxu+UrHr0bXScdAmtSzLSraLo7wFIb25RVHfRWvzI5kZomqJYEg/l1iA==",
- "dependencies": {
- "@opentelemetry/instrumentation": "^0.57.1",
- "@opentelemetry/redis-common": "^0.36.2",
- "@opentelemetry/semantic-conventions": "^1.27.0"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
- }
- },
- "node_modules/@opentelemetry/instrumentation-kafkajs": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-kafkajs/-/instrumentation-kafkajs-0.7.1.tgz",
- "integrity": "sha512-OtjaKs8H7oysfErajdYr1yuWSjMAectT7Dwr+axIoZqT9lmEOkD/H/3rgAs8h/NIuEi2imSXD+vL4MZtOuJfqQ==",
- "dependencies": {
- "@opentelemetry/instrumentation": "^0.57.1",
- "@opentelemetry/semantic-conventions": "^1.27.0"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
- }
- },
- "node_modules/@opentelemetry/instrumentation-knex": {
- "version": "0.44.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-knex/-/instrumentation-knex-0.44.1.tgz",
- "integrity": "sha512-U4dQxkNhvPexffjEmGwCq68FuftFK15JgUF05y/HlK3M6W/G2iEaACIfXdSnwVNe9Qh0sPfw8LbOPxrWzGWGMQ==",
- "dependencies": {
- "@opentelemetry/instrumentation": "^0.57.1",
- "@opentelemetry/semantic-conventions": "^1.27.0"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
- }
- },
- "node_modules/@opentelemetry/instrumentation-koa": {
- "version": "0.47.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.47.1.tgz",
- "integrity": "sha512-l/c+Z9F86cOiPJUllUCt09v+kICKvT+Vg1vOAJHtHPsJIzurGayucfCMq2acd/A/yxeNWunl9d9eqZ0G+XiI6A==",
- "dependencies": {
- "@opentelemetry/core": "^1.8.0",
- "@opentelemetry/instrumentation": "^0.57.1",
- "@opentelemetry/semantic-conventions": "^1.27.0"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
- }
- },
- "node_modules/@opentelemetry/instrumentation-lru-memoizer": {
- "version": "0.44.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-lru-memoizer/-/instrumentation-lru-memoizer-0.44.1.tgz",
- "integrity": "sha512-5MPkYCvG2yw7WONEjYj5lr5JFehTobW7wX+ZUFy81oF2lr9IPfZk9qO+FTaM0bGEiymwfLwKe6jE15nHn1nmHg==",
- "dependencies": {
- "@opentelemetry/instrumentation": "^0.57.1"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
- }
- },
- "node_modules/@opentelemetry/instrumentation-mongodb": {
- "version": "0.52.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.52.0.tgz",
- "integrity": "sha512-1xmAqOtRUQGR7QfJFfGV/M2kC7wmI2WgZdpru8hJl3S0r4hW0n3OQpEHlSGXJAaNFyvT+ilnwkT+g5L4ljHR6g==",
- "dependencies": {
- "@opentelemetry/instrumentation": "^0.57.1",
- "@opentelemetry/semantic-conventions": "^1.27.0"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
- }
- },
- "node_modules/@opentelemetry/instrumentation-mongoose": {
- "version": "0.46.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.46.1.tgz",
- "integrity": "sha512-3kINtW1LUTPkiXFRSSBmva1SXzS/72we/jL22N+BnF3DFcoewkdkHPYOIdAAk9gSicJ4d5Ojtt1/HeibEc5OQg==",
- "dependencies": {
- "@opentelemetry/core": "^1.8.0",
- "@opentelemetry/instrumentation": "^0.57.1",
- "@opentelemetry/semantic-conventions": "^1.27.0"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
- }
- },
- "node_modules/@opentelemetry/instrumentation-mysql": {
- "version": "0.45.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.45.1.tgz",
- "integrity": "sha512-TKp4hQ8iKQsY7vnp/j0yJJ4ZsP109Ht6l4RHTj0lNEG1TfgTrIH5vJMbgmoYXWzNHAqBH2e7fncN12p3BP8LFg==",
- "dependencies": {
- "@opentelemetry/instrumentation": "^0.57.1",
- "@opentelemetry/semantic-conventions": "^1.27.0",
- "@types/mysql": "2.15.26"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
- }
- },
- "node_modules/@opentelemetry/instrumentation-mysql2": {
- "version": "0.45.2",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.45.2.tgz",
- "integrity": "sha512-h6Ad60FjCYdJZ5DTz1Lk2VmQsShiViKe0G7sYikb0GHI0NVvApp2XQNRHNjEMz87roFttGPLHOYVPlfy+yVIhQ==",
- "dependencies": {
- "@opentelemetry/instrumentation": "^0.57.1",
- "@opentelemetry/semantic-conventions": "^1.27.0",
- "@opentelemetry/sql-common": "^0.40.1"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
- }
- },
- "node_modules/@opentelemetry/instrumentation-pg": {
- "version": "0.51.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.51.1.tgz",
- "integrity": "sha512-QxgjSrxyWZc7Vk+qGSfsejPVFL1AgAJdSBMYZdDUbwg730D09ub3PXScB9d04vIqPriZ+0dqzjmQx0yWKiCi2Q==",
- "dependencies": {
- "@opentelemetry/core": "^1.26.0",
- "@opentelemetry/instrumentation": "^0.57.1",
- "@opentelemetry/semantic-conventions": "^1.27.0",
- "@opentelemetry/sql-common": "^0.40.1",
- "@types/pg": "8.6.1",
- "@types/pg-pool": "2.0.6"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
- }
- },
- "node_modules/@opentelemetry/instrumentation-redis-4": {
- "version": "0.46.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.46.1.tgz",
- "integrity": "sha512-UMqleEoabYMsWoTkqyt9WAzXwZ4BlFZHO40wr3d5ZvtjKCHlD4YXLm+6OLCeIi/HkX7EXvQaz8gtAwkwwSEvcQ==",
- "dependencies": {
- "@opentelemetry/instrumentation": "^0.57.1",
- "@opentelemetry/redis-common": "^0.36.2",
- "@opentelemetry/semantic-conventions": "^1.27.0"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
- }
- },
- "node_modules/@opentelemetry/instrumentation-tedious": {
- "version": "0.18.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-tedious/-/instrumentation-tedious-0.18.1.tgz",
- "integrity": "sha512-5Cuy/nj0HBaH+ZJ4leuD7RjgvA844aY2WW+B5uLcWtxGjRZl3MNLuxnNg5DYWZNPO+NafSSnra0q49KWAHsKBg==",
- "dependencies": {
- "@opentelemetry/instrumentation": "^0.57.1",
- "@opentelemetry/semantic-conventions": "^1.27.0",
- "@types/tedious": "^4.0.14"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.3.0"
- }
- },
- "node_modules/@opentelemetry/instrumentation-undici": {
- "version": "0.10.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-undici/-/instrumentation-undici-0.10.1.tgz",
- "integrity": "sha512-rkOGikPEyRpMCmNu9AQuV5dtRlDmJp2dK5sw8roVshAGoB6hH/3QjDtRhdwd75SsJwgynWUNRUYe0wAkTo16tQ==",
- "dependencies": {
- "@opentelemetry/core": "^1.8.0",
- "@opentelemetry/instrumentation": "^0.57.1"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.7.0"
- }
- },
- "node_modules/@opentelemetry/redis-common": {
- "version": "0.36.2",
- "resolved": "https://registry.npmjs.org/@opentelemetry/redis-common/-/redis-common-0.36.2.tgz",
- "integrity": "sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==",
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/@opentelemetry/resources": {
- "version": "1.30.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.1.tgz",
- "integrity": "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==",
- "dependencies": {
- "@opentelemetry/core": "1.30.1",
- "@opentelemetry/semantic-conventions": "1.28.0"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": ">=1.0.0 <1.10.0"
- }
- },
- "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/semantic-conventions": {
- "version": "1.28.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz",
- "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==",
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/@opentelemetry/sdk-trace-base": {
- "version": "1.30.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.1.tgz",
- "integrity": "sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==",
- "dependencies": {
- "@opentelemetry/core": "1.30.1",
- "@opentelemetry/resources": "1.30.1",
- "@opentelemetry/semantic-conventions": "1.28.0"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": ">=1.0.0 <1.10.0"
- }
- },
- "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/semantic-conventions": {
- "version": "1.28.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz",
- "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==",
- "engines": {
- "node": ">=14"
- }
- },
"node_modules/@opentelemetry/semantic-conventions": {
- "version": "1.40.0",
- "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.40.0.tgz",
- "integrity": "sha512-cifvXDhcqMwwTlTK04GBNeIe7yyo28Mfby85QXFe1Yk8nmi36Ab/5UQwptOx84SsoGNRg+EVSjwzfSZMy6pmlw==",
+ "version": "1.43.0",
+ "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.43.0.tgz",
+ "integrity": "sha512-eSYWTm620tTk45EKSedaUL8MFYI8hW164hIXsgIHyxu3VobUB3fFCu5t0hQby6OoWRPsG1KkKUG2M5UadiLiVg==",
+ "license": "Apache-2.0",
"engines": {
"node": ">=14"
}
},
- "node_modules/@opentelemetry/sql-common": {
- "version": "0.40.1",
- "resolved": "https://registry.npmjs.org/@opentelemetry/sql-common/-/sql-common-0.40.1.tgz",
- "integrity": "sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==",
- "dependencies": {
- "@opentelemetry/core": "^1.1.0"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.1.0"
- }
- },
- "node_modules/@paddle/paddle-js": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/@paddle/paddle-js/-/paddle-js-1.6.2.tgz",
- "integrity": "sha512-nx1NXCzwWUWjf0iaRDiXZlfWgFjNZ6996RFcTDk0G0ggzrh514Zsc6jGTPOUGdLB1sYJXVQiKKoNLoKoXhH+sA=="
- },
"node_modules/@peculiar/asn1-android": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@peculiar/asn1-android/-/asn1-android-2.6.0.tgz",
- "integrity": "sha512-cBRCKtYPF7vJGN76/yG8VbxRcHLPF3HnkoHhKOZeHpoVtbMYfY9ROKtH3DtYUY9m8uI1Mh47PRhHf2hSK3xcSQ==",
- "peer": true,
+ "version": "2.9.4",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-android/-/asn1-android-2.9.4.tgz",
+ "integrity": "sha512-SYHm4SoWSI0nRCoos6jpGusIqhPH9bbGBqv7ohlZ+H6BunrDzzQPk2ePgDuEUzV82OdvbLgtW4twUDwhU9P3YQ==",
+ "license": "MIT",
"dependencies": {
- "@peculiar/asn1-schema": "^2.6.0",
- "asn1js": "^3.0.6",
+ "@peculiar/asn1-schema": "^2.9.4",
+ "asn1js": "^3.0.10",
"tslib": "^2.8.1"
+ },
+ "engines": {
+ "node": ">=14"
}
},
"node_modules/@peculiar/asn1-cms": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/@peculiar/asn1-cms/-/asn1-cms-2.6.1.tgz",
- "integrity": "sha512-vdG4fBF6Lkirkcl53q6eOdn3XYKt+kJTG59edgRZORlg/3atWWEReRCx5rYE1ZzTTX6vLK5zDMjHh7vbrcXGtw==",
- "peer": true,
+ "version": "2.9.4",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-cms/-/asn1-cms-2.9.4.tgz",
+ "integrity": "sha512-cben7oxmQsUGZqotus7yt0srYdncOT6RNWcTQ77T2RFOXejYVYkXadrfePdRcrVpO9K95IRLKKglG2k38jKXuw==",
+ "license": "MIT",
"dependencies": {
- "@peculiar/asn1-schema": "^2.6.0",
- "@peculiar/asn1-x509": "^2.6.1",
- "@peculiar/asn1-x509-attr": "^2.6.1",
- "asn1js": "^3.0.6",
+ "@peculiar/asn1-schema": "^2.9.4",
+ "@peculiar/asn1-x509": "^2.9.4",
+ "@peculiar/asn1-x509-attr": "^2.9.4",
+ "asn1js": "^3.0.10",
"tslib": "^2.8.1"
+ },
+ "engines": {
+ "node": ">=14"
}
},
"node_modules/@peculiar/asn1-csr": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/@peculiar/asn1-csr/-/asn1-csr-2.6.1.tgz",
- "integrity": "sha512-WRWnKfIocHyzFYQTka8O/tXCiBquAPSrRjXbOkHbO4qdmS6loffCEGs+rby6WxxGdJCuunnhS2duHURhjyio6w==",
- "peer": true,
+ "version": "2.9.4",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-csr/-/asn1-csr-2.9.4.tgz",
+ "integrity": "sha512-xd4YN4vpRjkDAQWVfZZkeu12IEND7DOpkqaHSIHxZl1uggUNa9Ju0QxY2jHvDAS9pP0zhRBytg8ifsnGo3V0jw==",
+ "license": "MIT",
"dependencies": {
- "@peculiar/asn1-schema": "^2.6.0",
- "@peculiar/asn1-x509": "^2.6.1",
- "asn1js": "^3.0.6",
+ "@peculiar/asn1-schema": "^2.9.4",
+ "@peculiar/asn1-x509": "^2.9.4",
+ "asn1js": "^3.0.10",
"tslib": "^2.8.1"
+ },
+ "engines": {
+ "node": ">=14"
}
},
"node_modules/@peculiar/asn1-ecc": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.6.1.tgz",
- "integrity": "sha512-+Vqw8WFxrtDIN5ehUdvlN2m73exS2JVG0UAyfVB31gIfor3zWEAQPD+K9ydCxaj3MLen9k0JhKpu9LqviuCE1g==",
- "peer": true,
+ "version": "2.9.4",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.9.4.tgz",
+ "integrity": "sha512-JJXefFshRAuVAjWQo/39bkg1ywc1VaiO44S8RRC+Ykvf/u2KDmYffoDb0ZBPCR5uJy4AGKQhl8mX+Q8ShcWaXQ==",
+ "license": "MIT",
"dependencies": {
- "@peculiar/asn1-schema": "^2.6.0",
- "@peculiar/asn1-x509": "^2.6.1",
- "asn1js": "^3.0.6",
+ "@peculiar/asn1-schema": "^2.9.4",
+ "@peculiar/asn1-x509": "^2.9.4",
+ "asn1js": "^3.0.10",
"tslib": "^2.8.1"
+ },
+ "engines": {
+ "node": ">=14"
}
},
"node_modules/@peculiar/asn1-pfx": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/@peculiar/asn1-pfx/-/asn1-pfx-2.6.1.tgz",
- "integrity": "sha512-nB5jVQy3MAAWvq0KY0R2JUZG8bO/bTLpnwyOzXyEh/e54ynGTatAR+csOnXkkVD9AFZ2uL8Z7EV918+qB1qDvw==",
- "peer": true,
+ "version": "2.9.4",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-pfx/-/asn1-pfx-2.9.4.tgz",
+ "integrity": "sha512-khuGzHTzNzk4GDlIBEILyIs6Lce0yn0ZBdoI9v93kmNncfZRhD+AQ5ODFqdhvoE8cMJF/JMTQ8yA+t1D14kqCw==",
+ "license": "MIT",
"dependencies": {
- "@peculiar/asn1-cms": "^2.6.1",
- "@peculiar/asn1-pkcs8": "^2.6.1",
- "@peculiar/asn1-rsa": "^2.6.1",
- "@peculiar/asn1-schema": "^2.6.0",
- "asn1js": "^3.0.6",
+ "@peculiar/asn1-cms": "^2.9.4",
+ "@peculiar/asn1-pkcs8": "^2.9.4",
+ "@peculiar/asn1-rsa": "^2.9.4",
+ "@peculiar/asn1-schema": "^2.9.4",
+ "asn1js": "^3.0.10",
"tslib": "^2.8.1"
+ },
+ "engines": {
+ "node": ">=14"
}
},
"node_modules/@peculiar/asn1-pkcs8": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.6.1.tgz",
- "integrity": "sha512-JB5iQ9Izn5yGMw3ZG4Nw3Xn/hb/G38GYF3lf7WmJb8JZUydhVGEjK/ZlFSWhnlB7K/4oqEs8HnfFIKklhR58Tw==",
- "peer": true,
+ "version": "2.9.4",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.9.4.tgz",
+ "integrity": "sha512-duRdotlUx9eDZe6QrQpQKl61RbWykCHBCkKayP8V8XdEFwlKHZ8qGGDMyS6Pye7OX7nLFttTTpRkJeet78ckwQ==",
+ "license": "MIT",
"dependencies": {
- "@peculiar/asn1-schema": "^2.6.0",
- "@peculiar/asn1-x509": "^2.6.1",
- "asn1js": "^3.0.6",
+ "@peculiar/asn1-schema": "^2.9.4",
+ "@peculiar/asn1-x509": "^2.9.4",
+ "asn1js": "^3.0.10",
"tslib": "^2.8.1"
+ },
+ "engines": {
+ "node": ">=14"
}
},
"node_modules/@peculiar/asn1-pkcs9": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.6.1.tgz",
- "integrity": "sha512-5EV8nZoMSxeWmcxWmmcolg22ojZRgJg+Y9MX2fnE2bGRo5KQLqV5IL9kdSQDZxlHz95tHvIq9F//bvL1OeNILw==",
- "peer": true,
+ "version": "2.9.4",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.9.4.tgz",
+ "integrity": "sha512-kaL4cNxBpdQE2dKlyZBqz4ygCrwffO+8wfoxTEqM1Z8RadvCeELBRzcv0dzM8aY9azHMwODO5nxU65zXmhToOQ==",
+ "license": "MIT",
"dependencies": {
- "@peculiar/asn1-cms": "^2.6.1",
- "@peculiar/asn1-pfx": "^2.6.1",
- "@peculiar/asn1-pkcs8": "^2.6.1",
- "@peculiar/asn1-schema": "^2.6.0",
- "@peculiar/asn1-x509": "^2.6.1",
- "@peculiar/asn1-x509-attr": "^2.6.1",
- "asn1js": "^3.0.6",
+ "@peculiar/asn1-cms": "^2.9.4",
+ "@peculiar/asn1-pfx": "^2.9.4",
+ "@peculiar/asn1-pkcs8": "^2.9.4",
+ "@peculiar/asn1-schema": "^2.9.4",
+ "@peculiar/asn1-x509": "^2.9.4",
+ "@peculiar/asn1-x509-attr": "^2.9.4",
+ "asn1js": "^3.0.10",
"tslib": "^2.8.1"
+ },
+ "engines": {
+ "node": ">=14"
}
},
"node_modules/@peculiar/asn1-rsa": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.6.1.tgz",
- "integrity": "sha512-1nVMEh46SElUt5CB3RUTV4EG/z7iYc7EoaDY5ECwganibQPkZ/Y2eMsTKB/LeyrUJ+W/tKoD9WUqIy8vB+CEdA==",
- "peer": true,
+ "version": "2.9.4",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.9.4.tgz",
+ "integrity": "sha512-pZ96eD1PptovcWQ/GSmuNFXd/7EQJNlKfDaNCyE2rx3W0v6QFelkzquVqRSRyyDXXCYD69ZXJDzZ8GhIiQzKoA==",
+ "license": "MIT",
"dependencies": {
- "@peculiar/asn1-schema": "^2.6.0",
- "@peculiar/asn1-x509": "^2.6.1",
- "asn1js": "^3.0.6",
+ "@peculiar/asn1-schema": "^2.9.4",
+ "@peculiar/asn1-x509": "^2.9.4",
+ "asn1js": "^3.0.10",
"tslib": "^2.8.1"
+ },
+ "engines": {
+ "node": ">=14"
}
},
"node_modules/@peculiar/asn1-schema": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.6.0.tgz",
- "integrity": "sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg==",
- "peer": true,
+ "version": "2.9.4",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.9.4.tgz",
+ "integrity": "sha512-GjzePcT9Iw8NzeOPf73iNS9xM+TBhd/FilAfP+RQGkTMQJTVWtytN3JHJACCjf/ABNau5S7mS3g+DcuxmRgYEg==",
+ "license": "MIT",
"dependencies": {
- "asn1js": "^3.0.6",
- "pvtsutils": "^1.3.6",
+ "@peculiar/utils": "^2.0.2",
+ "asn1js": "^3.0.10",
"tslib": "^2.8.1"
+ },
+ "engines": {
+ "node": ">=14"
}
},
"node_modules/@peculiar/asn1-x509": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.6.1.tgz",
- "integrity": "sha512-O9jT5F1A2+t3r7C4VT7LYGXqkGLK7Kj1xFpz7U0isPrubwU5PbDoyYtx6MiGst29yq7pXN5vZbQFKRCP+lLZlA==",
- "peer": true,
+ "version": "2.9.4",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.9.4.tgz",
+ "integrity": "sha512-CxhBo/RdEbMMob7T31ZdQjGuoyRFLVwrDzTn25bihzBasRg9kRm/0IxIPvhgQtcK/9dNcO1XQL2fuPugwELL0Q==",
+ "license": "MIT",
"dependencies": {
- "@peculiar/asn1-schema": "^2.6.0",
- "asn1js": "^3.0.6",
- "pvtsutils": "^1.3.6",
+ "@peculiar/asn1-schema": "^2.9.4",
+ "@peculiar/utils": "^2.0.2",
+ "asn1js": "^3.0.10",
"tslib": "^2.8.1"
+ },
+ "engines": {
+ "node": ">=14"
}
},
"node_modules/@peculiar/asn1-x509-attr": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.6.1.tgz",
- "integrity": "sha512-tlW6cxoHwgcQghnJwv3YS+9OO1737zgPogZ+CgWRUK4roEwIPzRH4JEiG770xe5HX2ATfCpmX60gurfWIF9dcQ==",
- "peer": true,
+ "version": "2.9.4",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.9.4.tgz",
+ "integrity": "sha512-ehQXbpQaQYycgu8OrvigwSPTFfVRcu0ECNYCWw+yzBp02Lw5paRqzzhUpfOgO2K38+WfFZuEz/0RPtam5g0OMg==",
+ "license": "MIT",
+ "dependencies": {
+ "@peculiar/asn1-schema": "^2.9.4",
+ "@peculiar/asn1-x509": "^2.9.4",
+ "asn1js": "^3.0.10",
+ "tslib": "^2.8.1"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@peculiar/utils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@peculiar/utils/-/utils-2.0.3.tgz",
+ "integrity": "sha512-+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ==",
+ "license": "MIT",
"dependencies": {
- "@peculiar/asn1-schema": "^2.6.0",
- "@peculiar/asn1-x509": "^2.6.1",
- "asn1js": "^3.0.6",
"tslib": "^2.8.1"
}
},
@@ -2406,7 +2144,7 @@
"version": "1.14.3",
"resolved": "https://registry.npmjs.org/@peculiar/x509/-/x509-1.14.3.tgz",
"integrity": "sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==",
- "peer": true,
+ "license": "MIT",
"dependencies": {
"@peculiar/asn1-cms": "^2.6.0",
"@peculiar/asn1-csr": "^2.6.0",
@@ -2424,43 +2162,25 @@
"node": ">=20.0.0"
}
},
- "node_modules/@pgsql/types": {
- "version": "13.11.1",
- "resolved": "https://registry.npmjs.org/@pgsql/types/-/types-13.11.1.tgz",
- "integrity": "sha512-5JeN7DZYCVbxPPFI47Z370Jzr3eHZpqgwCdutYWV8e8XtuhxF7UuvWvOsx2oPJe9KnQen0vzJWnVq/61bRvxmw=="
- },
- "node_modules/@pinojs/redact": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/@pinojs/redact/-/redact-0.4.0.tgz",
- "integrity": "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg=="
- },
- "node_modules/@prisma/instrumentation": {
- "version": "6.11.1",
- "resolved": "https://registry.npmjs.org/@prisma/instrumentation/-/instrumentation-6.11.1.tgz",
- "integrity": "sha512-mrZOev24EDhnefmnZX7WVVT7v+r9LttPRqf54ONvj6re4XMF7wFTpK2tLJi4XHB7fFp/6xhYbgRel8YV7gQiyA==",
- "dependencies": {
- "@opentelemetry/instrumentation": "^0.52.0 || ^0.53.0 || ^0.54.0 || ^0.55.0 || ^0.56.0 || ^0.57.0"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.8"
- }
- },
"node_modules/@radix-ui/number": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz",
- "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g=="
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.3.tgz",
+ "integrity": "sha512-Road2bidD0uu/1BGDOWNdPI06g0lIRy6IF9GZcIrDK2KGItfor8IQwQa+yM2ERgHM1MmHxaxpTzk0/Jp42lNfA==",
+ "license": "MIT"
},
"node_modules/@radix-ui/primitive": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz",
- "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg=="
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.7.tgz",
+ "integrity": "sha512-rqWnm76nYT8HoNNqEjpgJ7Pw/DrBj5iBTrmEPo6HTX5+VJyBNOqTdv4g89G63HuR5g0AaENoAcH7Is5fF2kZ8Q==",
+ "license": "MIT"
},
"node_modules/@radix-ui/react-arrow": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz",
- "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==",
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.15.tgz",
+ "integrity": "sha512-v4zggRcjadnI+ClKDuijlQEW4tw3NoaeHc/PwpKnLoLLKNUG4InLegkstooLcRIUWCs+8L22dGURCVuFfOKfnA==",
+ "license": "MIT",
"dependencies": {
- "@radix-ui/react-primitive": "2.1.3"
+ "@radix-ui/react-primitive": "2.1.10"
},
"peerDependencies": {
"@types/react": "*",
@@ -2477,55 +2197,18 @@
}
}
},
- "node_modules/@radix-ui/react-arrow/node_modules/@radix-ui/react-primitive": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz",
- "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==",
- "dependencies": {
- "@radix-ui/react-slot": "1.2.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-arrow/node_modules/@radix-ui/react-slot": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz",
- "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==",
- "dependencies": {
- "@radix-ui/react-compose-refs": "1.1.2"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
"node_modules/@radix-ui/react-avatar": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.1.11.tgz",
- "integrity": "sha512-0Qk603AHGV28BOBO34p7IgD5m+V5Sg/YovfayABkoDDBM5d3NCx0Mp4gGrjzLGes1jV5eNOE1r3itqOR33VC6Q==",
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.2.6.tgz",
+ "integrity": "sha512-4ULOTJ/mqy2hT9GlWa/MFHxHSvH3nJzHnZM1waNsc5Bonv7i70aNenghXmD97S6OJ81ekXONGGt4nT1r0PfEdA==",
+ "license": "MIT",
"dependencies": {
- "@radix-ui/react-context": "1.1.3",
- "@radix-ui/react-primitive": "2.1.4",
- "@radix-ui/react-use-callback-ref": "1.1.1",
- "@radix-ui/react-use-is-hydrated": "0.1.0",
- "@radix-ui/react-use-layout-effect": "1.1.1"
+ "@radix-ui/primitive": "1.1.7",
+ "@radix-ui/react-context": "1.2.2",
+ "@radix-ui/react-primitive": "2.1.10",
+ "@radix-ui/react-use-callback-ref": "1.1.4",
+ "@radix-ui/react-use-is-hydrated": "0.1.3",
+ "@radix-ui/react-use-layout-effect": "1.1.4"
},
"peerDependencies": {
"@types/react": "*",
@@ -2543,18 +2226,18 @@
}
},
"node_modules/@radix-ui/react-checkbox": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.3.3.tgz",
- "integrity": "sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==",
+ "version": "1.3.11",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.3.11.tgz",
+ "integrity": "sha512-Gnptr9pDDQxD3hgq2dtPbtrp/c2qH1mBwIzw3X/ivrMb2e1t0jMTi606fVEqFPaQR1ggXIVQWKj3P2WW9v7zGQ==",
+ "license": "MIT",
"dependencies": {
- "@radix-ui/primitive": "1.1.3",
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-presence": "1.1.5",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-use-controllable-state": "1.2.2",
- "@radix-ui/react-use-previous": "1.1.1",
- "@radix-ui/react-use-size": "1.1.1"
+ "@radix-ui/primitive": "1.1.7",
+ "@radix-ui/react-compose-refs": "1.1.5",
+ "@radix-ui/react-context": "1.2.2",
+ "@radix-ui/react-presence": "1.1.10",
+ "@radix-ui/react-primitive": "2.1.10",
+ "@radix-ui/react-use-controllable-state": "1.2.6",
+ "@radix-ui/react-use-size": "1.1.4"
},
"peerDependencies": {
"@types/react": "*",
@@ -2571,68 +2254,16 @@
}
}
},
- "node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-context": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz",
- "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==",
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-primitive": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz",
- "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==",
- "dependencies": {
- "@radix-ui/react-slot": "1.2.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-slot": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz",
- "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==",
- "dependencies": {
- "@radix-ui/react-compose-refs": "1.1.2"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
"node_modules/@radix-ui/react-collection": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz",
- "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==",
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.15.tgz",
+ "integrity": "sha512-9W+B9NPF0NaaPh/1NJd3+KqsnlLqU9H7T2rvww+fp+T/evVXdNAyYcnfRQZFOjkR1ajQp3yORlqnI8soawLvNA==",
+ "license": "MIT",
"dependencies": {
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-slot": "1.2.3"
+ "@radix-ui/react-compose-refs": "1.1.5",
+ "@radix-ui/react-context": "1.2.2",
+ "@radix-ui/react-primitive": "2.1.10",
+ "@radix-ui/react-slot": "1.3.3"
},
"peerDependencies": {
"@types/react": "*",
@@ -2649,63 +2280,11 @@
}
}
},
- "node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-context": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz",
- "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==",
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-primitive": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz",
- "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==",
- "dependencies": {
- "@radix-ui/react-slot": "1.2.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz",
- "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==",
- "dependencies": {
- "@radix-ui/react-compose-refs": "1.1.2"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
"node_modules/@radix-ui/react-compose-refs": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz",
- "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.5.tgz",
+ "integrity": "sha512-+48PbAAbq3didjJxa+OaWY2ZwgAKsNiRGyeHKszblZMQ+kcpd9pAaT11cMkGEie0vsOi3QdeTE6d5Fe3Gn61kA==",
+ "license": "MIT",
"peerDependencies": {
"@types/react": "*",
"react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
@@ -2717,9 +2296,10 @@
}
},
"node_modules/@radix-ui/react-context": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.3.tgz",
- "integrity": "sha512-ieIFACdMpYfMEjF0rEf5KLvfVyIkOz6PDGyNnP+u+4xQ6jny3VCgA4OgXOwNx2aUkxn8zx9fiVcM8CfFYv9Lxw==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.2.2.tgz",
+ "integrity": "sha512-RHCUGwKHDr0hDGg4X7ma4JG4/+12qxw8rkh5QKdDldlCvtja6nUx1Ef/8HVrJze81lEsgLQlqjzjGNHantgnQA==",
+ "license": "MIT",
"peerDependencies": {
"@types/react": "*",
"react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
@@ -2731,24 +2311,26 @@
}
},
"node_modules/@radix-ui/react-dialog": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz",
- "integrity": "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==",
+ "version": "1.1.23",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.23.tgz",
+ "integrity": "sha512-Ksw4WeROkO4rC9k/onilX/Ao2Cr1ku1unMNH+XSCcP4jSXYu7HDsg9n4ojMjVb22XpYjAQ9qfrFlVbru1vXDUA==",
+ "license": "MIT",
"dependencies": {
- "@radix-ui/primitive": "1.1.3",
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-dismissable-layer": "1.1.11",
- "@radix-ui/react-focus-guards": "1.1.3",
- "@radix-ui/react-focus-scope": "1.1.7",
- "@radix-ui/react-id": "1.1.1",
- "@radix-ui/react-portal": "1.1.9",
- "@radix-ui/react-presence": "1.1.5",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-slot": "1.2.3",
- "@radix-ui/react-use-controllable-state": "1.2.2",
+ "@radix-ui/primitive": "1.1.7",
+ "@radix-ui/react-compose-refs": "1.1.5",
+ "@radix-ui/react-context": "1.2.2",
+ "@radix-ui/react-dismissable-layer": "1.1.19",
+ "@radix-ui/react-focus-guards": "1.1.6",
+ "@radix-ui/react-focus-scope": "1.1.16",
+ "@radix-ui/react-id": "1.1.4",
+ "@radix-ui/react-portal": "1.1.17",
+ "@radix-ui/react-presence": "1.1.10",
+ "@radix-ui/react-primitive": "2.1.10",
+ "@radix-ui/react-slot": "1.3.3",
+ "@radix-ui/react-use-controllable-state": "1.2.6",
+ "@radix-ui/react-use-layout-effect": "1.1.4",
"aria-hidden": "^1.2.4",
- "react-remove-scroll": "^2.6.3"
+ "react-remove-scroll": "^2.7.2"
},
"peerDependencies": {
"@types/react": "*",
@@ -2765,63 +2347,11 @@
}
}
},
- "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-context": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz",
- "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==",
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-primitive": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz",
- "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==",
- "dependencies": {
- "@radix-ui/react-slot": "1.2.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-slot": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz",
- "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==",
- "dependencies": {
- "@radix-ui/react-compose-refs": "1.1.2"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
"node_modules/@radix-ui/react-direction": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz",
- "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.4.tgz",
+ "integrity": "sha512-5pzg4FGQNpExhnhT2zlrP1wZFaYCd1K0nYWoFAdcYoYK868IEigqMX3B3f8yIoRlAhAeDWciLI6ZdCKHF9P4Vg==",
+ "license": "MIT",
"peerDependencies": {
"@types/react": "*",
"react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
@@ -2833,15 +2363,16 @@
}
},
"node_modules/@radix-ui/react-dismissable-layer": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz",
- "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==",
+ "version": "1.1.19",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.19.tgz",
+ "integrity": "sha512-8g4pfOL9HoKKLWGiypT+dphVqjFfmcXO5GBnhsG6zI+lxAx/8feQpr+1LSN8Re3hiZ+XkLNS4O9ztK11/LzQ6w==",
+ "license": "MIT",
"dependencies": {
- "@radix-ui/primitive": "1.1.3",
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-use-callback-ref": "1.1.1",
- "@radix-ui/react-use-escape-keydown": "1.1.1"
+ "@radix-ui/primitive": "1.1.7",
+ "@radix-ui/react-compose-refs": "1.1.5",
+ "@radix-ui/react-primitive": "2.1.10",
+ "@radix-ui/react-use-callback-ref": "1.1.4",
+ "@radix-ui/react-use-effect-event": "0.0.5"
},
"peerDependencies": {
"@types/react": "*",
@@ -2858,57 +2389,19 @@
}
}
},
- "node_modules/@radix-ui/react-dismissable-layer/node_modules/@radix-ui/react-primitive": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz",
- "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==",
- "dependencies": {
- "@radix-ui/react-slot": "1.2.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-dismissable-layer/node_modules/@radix-ui/react-slot": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz",
- "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==",
- "dependencies": {
- "@radix-ui/react-compose-refs": "1.1.2"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
"node_modules/@radix-ui/react-dropdown-menu": {
- "version": "2.1.16",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.16.tgz",
- "integrity": "sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==",
+ "version": "2.1.24",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.24.tgz",
+ "integrity": "sha512-geq8l2rJkxvkXsT9RMgtUE3P8pITFpTsvYpbySi1IH4fZEABD/Gp85myayFgxk0ktljGMJnCbeFkyTusvSvv7g==",
+ "license": "MIT",
"dependencies": {
- "@radix-ui/primitive": "1.1.3",
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-id": "1.1.1",
- "@radix-ui/react-menu": "2.1.16",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-use-controllable-state": "1.2.2"
+ "@radix-ui/primitive": "1.1.7",
+ "@radix-ui/react-compose-refs": "1.1.5",
+ "@radix-ui/react-context": "1.2.2",
+ "@radix-ui/react-id": "1.1.4",
+ "@radix-ui/react-menu": "2.1.24",
+ "@radix-ui/react-primitive": "2.1.10",
+ "@radix-ui/react-use-controllable-state": "1.2.6"
},
"peerDependencies": {
"@types/react": "*",
@@ -2925,63 +2418,11 @@
}
}
},
- "node_modules/@radix-ui/react-dropdown-menu/node_modules/@radix-ui/react-context": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz",
- "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==",
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-dropdown-menu/node_modules/@radix-ui/react-primitive": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz",
- "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==",
- "dependencies": {
- "@radix-ui/react-slot": "1.2.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-dropdown-menu/node_modules/@radix-ui/react-slot": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz",
- "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==",
- "dependencies": {
- "@radix-ui/react-compose-refs": "1.1.2"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
"node_modules/@radix-ui/react-focus-guards": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz",
- "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==",
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.6.tgz",
+ "integrity": "sha512-RNOJjfZMTyBM6xYmV3IVGXkPjIhcBAuv48POevAXwrGJhkWZ9p1rFoIS1JFooPuT193AZmRsCPhpoVJxx6OPoQ==",
+ "license": "MIT",
"peerDependencies": {
"@types/react": "*",
"react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
@@ -2993,13 +2434,14 @@
}
},
"node_modules/@radix-ui/react-focus-scope": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz",
- "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==",
+ "version": "1.1.16",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.16.tgz",
+ "integrity": "sha512-wmRZ2WWLvmt6KHy2rNPOdPUjwq5xOHY02+m+udwJTn0aNIox/rkskAvJTyTLGhPK6KgrUjlJUJpgmx/+wFiFIQ==",
+ "license": "MIT",
"dependencies": {
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-use-callback-ref": "1.1.1"
+ "@radix-ui/react-compose-refs": "1.1.5",
+ "@radix-ui/react-primitive": "2.1.10",
+ "@radix-ui/react-use-callback-ref": "1.1.4"
},
"peerDependencies": {
"@types/react": "*",
@@ -3016,51 +2458,13 @@
}
}
},
- "node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-primitive": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz",
- "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==",
- "dependencies": {
- "@radix-ui/react-slot": "1.2.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-slot": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz",
- "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==",
- "dependencies": {
- "@radix-ui/react-compose-refs": "1.1.2"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
"node_modules/@radix-ui/react-id": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz",
- "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.4.tgz",
+ "integrity": "sha512-TMQp2llA+RYn7JcjnrMnz7wN4pcVttPZnRZo52PLQsoLVKzNlVwUeHmfePgTgRluXFvlD3GD5g5MOVVTJCO0qA==",
+ "license": "MIT",
"dependencies": {
- "@radix-ui/react-use-layout-effect": "1.1.1"
+ "@radix-ui/react-use-layout-effect": "1.1.4"
},
"peerDependencies": {
"@types/react": "*",
@@ -3073,11 +2477,12 @@
}
},
"node_modules/@radix-ui/react-label": {
- "version": "2.1.8",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.8.tgz",
- "integrity": "sha512-FmXs37I6hSBVDlO4y764TNz1rLgKwjJMQ0EGte6F3Cb3f4bIuHB/iLa/8I9VKkmOy+gNHq8rql3j686ACVV21A==",
+ "version": "2.1.15",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.15.tgz",
+ "integrity": "sha512-o/rdYEwZTTo5tjknnPeyQFU45kUC4i/XyeDPP+HGyi6XqpOP6Zf5Ya5vh/Yfe9Id5JiuWnnAx2XqIeD3UYZt0g==",
+ "license": "MIT",
"dependencies": {
- "@radix-ui/react-primitive": "2.1.4"
+ "@radix-ui/react-primitive": "2.1.10"
},
"peerDependencies": {
"@types/react": "*",
@@ -3095,28 +2500,29 @@
}
},
"node_modules/@radix-ui/react-menu": {
- "version": "2.1.16",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.16.tgz",
- "integrity": "sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==",
+ "version": "2.1.24",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.24.tgz",
+ "integrity": "sha512-uW7RVuU6Lp/ZtfeY4b3kL32zccgEWvPv1+cf17ubYzHa9cL8AHokmk36cG/XEiH/smbQvumnieXX9j/e9RqJWA==",
+ "license": "MIT",
"dependencies": {
- "@radix-ui/primitive": "1.1.3",
- "@radix-ui/react-collection": "1.1.7",
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-direction": "1.1.1",
- "@radix-ui/react-dismissable-layer": "1.1.11",
- "@radix-ui/react-focus-guards": "1.1.3",
- "@radix-ui/react-focus-scope": "1.1.7",
- "@radix-ui/react-id": "1.1.1",
- "@radix-ui/react-popper": "1.2.8",
- "@radix-ui/react-portal": "1.1.9",
- "@radix-ui/react-presence": "1.1.5",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-roving-focus": "1.1.11",
- "@radix-ui/react-slot": "1.2.3",
- "@radix-ui/react-use-callback-ref": "1.1.1",
+ "@radix-ui/primitive": "1.1.7",
+ "@radix-ui/react-collection": "1.1.15",
+ "@radix-ui/react-compose-refs": "1.1.5",
+ "@radix-ui/react-context": "1.2.2",
+ "@radix-ui/react-direction": "1.1.4",
+ "@radix-ui/react-dismissable-layer": "1.1.19",
+ "@radix-ui/react-focus-guards": "1.1.6",
+ "@radix-ui/react-focus-scope": "1.1.16",
+ "@radix-ui/react-id": "1.1.4",
+ "@radix-ui/react-popper": "1.3.7",
+ "@radix-ui/react-portal": "1.1.17",
+ "@radix-ui/react-presence": "1.1.10",
+ "@radix-ui/react-primitive": "2.1.10",
+ "@radix-ui/react-roving-focus": "1.1.19",
+ "@radix-ui/react-slot": "1.3.3",
+ "@radix-ui/react-use-callback-ref": "1.1.4",
"aria-hidden": "^1.2.4",
- "react-remove-scroll": "^2.6.3"
+ "react-remove-scroll": "^2.7.2"
},
"peerDependencies": {
"@types/react": "*",
@@ -3133,74 +2539,22 @@
}
}
},
- "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-context": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz",
- "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==",
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-primitive": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz",
- "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==",
- "dependencies": {
- "@radix-ui/react-slot": "1.2.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-slot": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz",
- "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==",
- "dependencies": {
- "@radix-ui/react-compose-refs": "1.1.2"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
"node_modules/@radix-ui/react-popper": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz",
- "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==",
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.3.7.tgz",
+ "integrity": "sha512-UsJrrd7w4wuKKTdvd/DNERVlwSlUcyXzjhyDwBk+3aPOsCjOY6ZSbxuw8E6lZTjjfP8Cpd0J8VVkrYUWyGYXyg==",
+ "license": "MIT",
"dependencies": {
"@floating-ui/react-dom": "^2.0.0",
- "@radix-ui/react-arrow": "1.1.7",
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-use-callback-ref": "1.1.1",
- "@radix-ui/react-use-layout-effect": "1.1.1",
- "@radix-ui/react-use-rect": "1.1.1",
- "@radix-ui/react-use-size": "1.1.1",
- "@radix-ui/rect": "1.1.1"
+ "@radix-ui/react-arrow": "1.1.15",
+ "@radix-ui/react-compose-refs": "1.1.5",
+ "@radix-ui/react-context": "1.2.2",
+ "@radix-ui/react-primitive": "2.1.10",
+ "@radix-ui/react-use-callback-ref": "1.1.4",
+ "@radix-ui/react-use-layout-effect": "1.1.4",
+ "@radix-ui/react-use-rect": "1.1.4",
+ "@radix-ui/react-use-size": "1.1.4",
+ "@radix-ui/rect": "1.1.3"
},
"peerDependencies": {
"@types/react": "*",
@@ -3217,66 +2571,14 @@
}
}
},
- "node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-context": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz",
- "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==",
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-primitive": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz",
- "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==",
- "dependencies": {
- "@radix-ui/react-slot": "1.2.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-slot": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz",
- "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==",
- "dependencies": {
- "@radix-ui/react-compose-refs": "1.1.2"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
"node_modules/@radix-ui/react-portal": {
- "version": "1.1.9",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz",
- "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==",
+ "version": "1.1.17",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.17.tgz",
+ "integrity": "sha512-vKQLcWypUnwZVvfV7UkGahH2g6ySe8M8R+zYBwPrv5byZ9QAW6cQVvNKo7GgmD+p8aYb6D9JBuvy8/WhOno2wQ==",
+ "license": "MIT",
"dependencies": {
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-use-layout-effect": "1.1.1"
+ "@radix-ui/react-primitive": "2.1.10",
+ "@radix-ui/react-use-layout-effect": "1.1.4"
},
"peerDependencies": {
"@types/react": "*",
@@ -3293,52 +2595,13 @@
}
}
},
- "node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-primitive": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz",
- "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==",
- "dependencies": {
- "@radix-ui/react-slot": "1.2.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-slot": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz",
- "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==",
- "dependencies": {
- "@radix-ui/react-compose-refs": "1.1.2"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
"node_modules/@radix-ui/react-presence": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz",
- "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==",
+ "version": "1.1.10",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.10.tgz",
+ "integrity": "sha512-3wyzCQ6+ubRA+D4uv9m95JYLXxmOHp05qjrkjeA7uKHHtjpPggQzc6DAb0URl7j67oR0K2foO4ip27TiX037Bw==",
+ "license": "MIT",
"dependencies": {
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-use-layout-effect": "1.1.1"
+ "@radix-ui/react-use-layout-effect": "1.1.4"
},
"peerDependencies": {
"@types/react": "*",
@@ -3356,11 +2619,12 @@
}
},
"node_modules/@radix-ui/react-primitive": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz",
- "integrity": "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==",
+ "version": "2.1.10",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.10.tgz",
+ "integrity": "sha512-MucOnzh6hR5mid6VpkbglRAMYMjKLqRnGBbjXkzjK52fuQDd1qbkx78a5P40mkcnVXJdEVxm26E9OPAiUq7nBg==",
+ "license": "MIT",
"dependencies": {
- "@radix-ui/react-slot": "1.2.4"
+ "@radix-ui/react-slot": "1.3.3"
},
"peerDependencies": {
"@types/react": "*",
@@ -3378,19 +2642,22 @@
}
},
"node_modules/@radix-ui/react-roving-focus": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz",
- "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==",
+ "version": "1.1.19",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.19.tgz",
+ "integrity": "sha512-V9jI6hDjT7l3jsCQD9bLNvDLM3tH/gdbOTp7Tefp3hbbgCGQoK7tUvrWiRlcoBHIZ809ElXwNQwVo0B98LuTXQ==",
+ "license": "MIT",
"dependencies": {
- "@radix-ui/primitive": "1.1.3",
- "@radix-ui/react-collection": "1.1.7",
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-direction": "1.1.1",
- "@radix-ui/react-id": "1.1.1",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-use-callback-ref": "1.1.1",
- "@radix-ui/react-use-controllable-state": "1.2.2"
+ "@radix-ui/primitive": "1.1.7",
+ "@radix-ui/react-collection": "1.1.15",
+ "@radix-ui/react-compose-refs": "1.1.5",
+ "@radix-ui/react-context": "1.2.2",
+ "@radix-ui/react-direction": "1.1.4",
+ "@radix-ui/react-id": "1.1.4",
+ "@radix-ui/react-primitive": "2.1.10",
+ "@radix-ui/react-use-callback-ref": "1.1.4",
+ "@radix-ui/react-use-controllable-state": "1.2.6",
+ "@radix-ui/react-use-is-hydrated": "0.1.3",
+ "@radix-ui/react-use-layout-effect": "1.1.4"
},
"peerDependencies": {
"@types/react": "*",
@@ -3407,85 +2674,34 @@
}
}
},
- "node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-context": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz",
- "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==",
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-primitive": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz",
- "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==",
- "dependencies": {
- "@radix-ui/react-slot": "1.2.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-slot": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz",
- "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==",
- "dependencies": {
- "@radix-ui/react-compose-refs": "1.1.2"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
"node_modules/@radix-ui/react-select": {
- "version": "2.2.6",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.2.6.tgz",
- "integrity": "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==",
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.3.7.tgz",
+ "integrity": "sha512-WFGImkmbzcfxeIwq/+4HvRN0pizBwbwQUED4I13ezQsDdfl38ZntN6TmR8XaSzPBqoCToe8rF75j6NPNDSzhbg==",
+ "license": "MIT",
"dependencies": {
- "@radix-ui/number": "1.1.1",
- "@radix-ui/primitive": "1.1.3",
- "@radix-ui/react-collection": "1.1.7",
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-direction": "1.1.1",
- "@radix-ui/react-dismissable-layer": "1.1.11",
- "@radix-ui/react-focus-guards": "1.1.3",
- "@radix-ui/react-focus-scope": "1.1.7",
- "@radix-ui/react-id": "1.1.1",
- "@radix-ui/react-popper": "1.2.8",
- "@radix-ui/react-portal": "1.1.9",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-slot": "1.2.3",
- "@radix-ui/react-use-callback-ref": "1.1.1",
- "@radix-ui/react-use-controllable-state": "1.2.2",
- "@radix-ui/react-use-layout-effect": "1.1.1",
- "@radix-ui/react-use-previous": "1.1.1",
- "@radix-ui/react-visually-hidden": "1.2.3",
+ "@radix-ui/number": "1.1.3",
+ "@radix-ui/primitive": "1.1.7",
+ "@radix-ui/react-collection": "1.1.15",
+ "@radix-ui/react-compose-refs": "1.1.5",
+ "@radix-ui/react-context": "1.2.2",
+ "@radix-ui/react-direction": "1.1.4",
+ "@radix-ui/react-dismissable-layer": "1.1.19",
+ "@radix-ui/react-focus-guards": "1.1.6",
+ "@radix-ui/react-focus-scope": "1.1.16",
+ "@radix-ui/react-id": "1.1.4",
+ "@radix-ui/react-popper": "1.3.7",
+ "@radix-ui/react-portal": "1.1.17",
+ "@radix-ui/react-presence": "1.1.10",
+ "@radix-ui/react-primitive": "2.1.10",
+ "@radix-ui/react-slot": "1.3.3",
+ "@radix-ui/react-use-callback-ref": "1.1.4",
+ "@radix-ui/react-use-controllable-state": "1.2.6",
+ "@radix-ui/react-use-layout-effect": "1.1.4",
+ "@radix-ui/react-use-previous": "1.1.4",
+ "@radix-ui/react-visually-hidden": "1.2.11",
"aria-hidden": "^1.2.4",
- "react-remove-scroll": "^2.6.3"
+ "react-remove-scroll": "^2.7.2"
},
"peerDependencies": {
"@types/react": "*",
@@ -3502,65 +2718,13 @@
}
}
},
- "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-context": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz",
- "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==",
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-primitive": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz",
- "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==",
- "dependencies": {
- "@radix-ui/react-slot": "1.2.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-slot": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz",
- "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==",
- "dependencies": {
- "@radix-ui/react-compose-refs": "1.1.2"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
"node_modules/@radix-ui/react-separator": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.8.tgz",
- "integrity": "sha512-sDvqVY4itsKwwSMEe0jtKgfTh+72Sy3gPmQpjqcQneqQ4PFmr/1I0YA+2/puilhggCe2gJcx5EBAYFkWkdpa5g==",
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.15.tgz",
+ "integrity": "sha512-jOLO4lssEzWpoDu7G+Ze4VjwMRUBt291pnZD0gmalREZipnTX3wadQo7Fy48GCTfe14/YRN6rw/rOJqrE85Wxw==",
+ "license": "MIT",
"dependencies": {
- "@radix-ui/react-primitive": "2.1.4"
+ "@radix-ui/react-primitive": "2.1.10"
},
"peerDependencies": {
"@types/react": "*",
@@ -3578,11 +2742,12 @@
}
},
"node_modules/@radix-ui/react-slot": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.4.tgz",
- "integrity": "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==",
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.3.3.tgz",
+ "integrity": "sha512-qx7oqnYbxnK9kYI9m317qmFmEgo6ywqWvbTogdj7cL9p3/yx4M48p7Rnw5z3H890cL/ow/EeWJsuTykeZVXP5Q==",
+ "license": "MIT",
"dependencies": {
- "@radix-ui/react-compose-refs": "1.1.2"
+ "@radix-ui/react-compose-refs": "1.1.5"
},
"peerDependencies": {
"@types/react": "*",
@@ -3595,18 +2760,19 @@
}
},
"node_modules/@radix-ui/react-tabs": {
- "version": "1.1.13",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.13.tgz",
- "integrity": "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==",
+ "version": "1.1.21",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.21.tgz",
+ "integrity": "sha512-UKxJlZid7FVtsk/WTxj4i4uSEgj2Au+KBbS7SQyTlzMhhn+86Cz3tISZdTa87bfEfcuvZezf2ZsxD4xuEKtkog==",
+ "license": "MIT",
"dependencies": {
- "@radix-ui/primitive": "1.1.3",
- "@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-direction": "1.1.1",
- "@radix-ui/react-id": "1.1.1",
- "@radix-ui/react-presence": "1.1.5",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-roving-focus": "1.1.11",
- "@radix-ui/react-use-controllable-state": "1.2.2"
+ "@radix-ui/primitive": "1.1.7",
+ "@radix-ui/react-context": "1.2.2",
+ "@radix-ui/react-direction": "1.1.4",
+ "@radix-ui/react-id": "1.1.4",
+ "@radix-ui/react-presence": "1.1.10",
+ "@radix-ui/react-primitive": "2.1.10",
+ "@radix-ui/react-roving-focus": "1.1.19",
+ "@radix-ui/react-use-controllable-state": "1.2.6"
},
"peerDependencies": {
"@types/react": "*",
@@ -3623,26 +2789,26 @@
}
}
},
- "node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-context": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz",
- "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==",
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-primitive": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz",
- "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==",
+ "node_modules/@radix-ui/react-tooltip": {
+ "version": "1.2.16",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.16.tgz",
+ "integrity": "sha512-6EamKFRRnlpdadndbZ6LMwycfwkwPte1B42hs6QA0gYhjaOKqW4PZ4pjaW9UrlDX5eVt/OjncE7BFTPL5nmZhg==",
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "@radix-ui/react-slot": "1.2.3"
+ "@radix-ui/primitive": "1.1.7",
+ "@radix-ui/react-compose-refs": "1.1.5",
+ "@radix-ui/react-context": "1.2.2",
+ "@radix-ui/react-dismissable-layer": "1.1.19",
+ "@radix-ui/react-id": "1.1.4",
+ "@radix-ui/react-popper": "1.3.7",
+ "@radix-ui/react-portal": "1.1.17",
+ "@radix-ui/react-presence": "1.1.10",
+ "@radix-ui/react-primitive": "2.1.10",
+ "@radix-ui/react-slot": "1.3.3",
+ "@radix-ui/react-use-controllable-state": "1.2.6",
+ "@radix-ui/react-use-layout-effect": "1.1.4",
+ "@radix-ui/react-visually-hidden": "1.2.11"
},
"peerDependencies": {
"@types/react": "*",
@@ -3659,27 +2825,11 @@
}
}
},
- "node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-slot": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz",
- "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==",
- "dependencies": {
- "@radix-ui/react-compose-refs": "1.1.2"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
"node_modules/@radix-ui/react-use-callback-ref": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz",
- "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.4.tgz",
+ "integrity": "sha512-R6OUY2e2fA6Yn6s+VSx5KBV6Nx8LQEhu+cz7LCej18rQ1HLyg9PSC9jP/ZNx0o6FAIK9c0F1kHylzSxKsdlkrQ==",
+ "license": "MIT",
"peerDependencies": {
"@types/react": "*",
"react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
@@ -3691,12 +2841,14 @@
}
},
"node_modules/@radix-ui/react-use-controllable-state": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz",
- "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==",
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.6.tgz",
+ "integrity": "sha512-uEQJGT97ZA/TgP/Hydw47lHu+/vQj6z/0jA+WeTbK1o9Rx45GImjpD0tc3W5ad3D6XTSR6e1yEO0FvGq6WQfVQ==",
+ "license": "MIT",
"dependencies": {
- "@radix-ui/react-use-effect-event": "0.0.2",
- "@radix-ui/react-use-layout-effect": "1.1.1"
+ "@radix-ui/primitive": "1.1.7",
+ "@radix-ui/react-use-effect-event": "0.0.5",
+ "@radix-ui/react-use-layout-effect": "1.1.4"
},
"peerDependencies": {
"@types/react": "*",
@@ -3709,28 +2861,12 @@
}
},
"node_modules/@radix-ui/react-use-effect-event": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz",
- "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==",
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.5.tgz",
+ "integrity": "sha512-7cshFL8HGS/7HEiHH+9kL9HBwp2sa9yX18Knwek6KYWmXwM7pegMgta2AXMQKI+rq3JnfSj9x8wYqFMTdG1Jgg==",
+ "license": "MIT",
"dependencies": {
- "@radix-ui/react-use-layout-effect": "1.1.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-use-escape-keydown": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz",
- "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==",
- "dependencies": {
- "@radix-ui/react-use-callback-ref": "1.1.1"
+ "@radix-ui/react-use-layout-effect": "1.1.4"
},
"peerDependencies": {
"@types/react": "*",
@@ -3743,12 +2879,10 @@
}
},
"node_modules/@radix-ui/react-use-is-hydrated": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-is-hydrated/-/react-use-is-hydrated-0.1.0.tgz",
- "integrity": "sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA==",
- "dependencies": {
- "use-sync-external-store": "^1.5.0"
- },
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-is-hydrated/-/react-use-is-hydrated-0.1.3.tgz",
+ "integrity": "sha512-umO/aJ+82CpOnhDZUTbILCQf7kU/g0iv+oGs/Q8jw7IkhWBzaEP4sA268PhFAJTFetbwp3ICc6ktpI4TqtxcIw==",
+ "license": "MIT",
"peerDependencies": {
"@types/react": "*",
"react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
@@ -3760,9 +2894,10 @@
}
},
"node_modules/@radix-ui/react-use-layout-effect": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz",
- "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.4.tgz",
+ "integrity": "sha512-K20DkRkUwDnxEYMBPcg3Y6voLkEy5p5QQmszZgLngKKiC7dzBR/aEuK3w1qlx2JWDUNH6FluahYdgR3BP+QbYw==",
+ "license": "MIT",
"peerDependencies": {
"@types/react": "*",
"react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
@@ -3774,9 +2909,10 @@
}
},
"node_modules/@radix-ui/react-use-previous": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz",
- "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.4.tgz",
+ "integrity": "sha512-XoSLhbRbqxFtgJoi2fNHA3C6pDlY34x508vUpUGoFZfvePfHXHbE1lC4FYFMnJWgiCRroSTw6fOsXQoVS9RwZg==",
+ "license": "MIT",
"peerDependencies": {
"@types/react": "*",
"react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
@@ -3788,11 +2924,12 @@
}
},
"node_modules/@radix-ui/react-use-rect": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz",
- "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.4.tgz",
+ "integrity": "sha512-cSOCh6JlkmfjLyNcLiu2nB4v+nm+dkZ+Q5KHWk/soo4U7ZLiEQFKHK9/YmtBHjfCEaU43IBKQOc4/uJmCaiCTQ==",
+ "license": "MIT",
"dependencies": {
- "@radix-ui/rect": "1.1.1"
+ "@radix-ui/rect": "1.1.3"
},
"peerDependencies": {
"@types/react": "*",
@@ -3805,11 +2942,12 @@
}
},
"node_modules/@radix-ui/react-use-size": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz",
- "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.4.tgz",
+ "integrity": "sha512-D3anSY15EJoxrihpsXI6SMrmmonnQtR2ni7arO+Lfdg3O95b9hNXxONk8jA5C8ANdF/h5HMAxejgs8PWJ6rlhw==",
+ "license": "MIT",
"dependencies": {
- "@radix-ui/react-use-layout-effect": "1.1.1"
+ "@radix-ui/react-use-layout-effect": "1.1.4"
},
"peerDependencies": {
"@types/react": "*",
@@ -3822,11 +2960,12 @@
}
},
"node_modules/@radix-ui/react-visually-hidden": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz",
- "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==",
+ "version": "1.2.11",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.11.tgz",
+ "integrity": "sha512-NFS86RYYZb4/exihaESBGOpMJFz8MGLAfu3mOBSGByVnVPC9JPASfYubxd/8KbkQK0sYAv8lVQDEQukDX/qXvQ==",
+ "license": "MIT",
"dependencies": {
- "@radix-ui/react-primitive": "2.1.3"
+ "@radix-ui/react-primitive": "2.1.10"
},
"peerDependencies": {
"@types/react": "*",
@@ -3843,54 +2982,18 @@
}
}
},
- "node_modules/@radix-ui/react-visually-hidden/node_modules/@radix-ui/react-primitive": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz",
- "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==",
- "dependencies": {
- "@radix-ui/react-slot": "1.2.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-visually-hidden/node_modules/@radix-ui/react-slot": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz",
- "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==",
- "dependencies": {
- "@radix-ui/react-compose-refs": "1.1.2"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
"node_modules/@radix-ui/rect": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz",
- "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw=="
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.3.tgz",
+ "integrity": "sha512-JtyZR+mqgBibTo8xea3B6ZRmzZiM/YeVBtUkas6zMuXjAlfIFIW2FgqeM9eLyvEaYX66vr6DJMK+4U6LV0KhNw==",
+ "license": "MIT"
},
"node_modules/@react-email/body": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/@react-email/body/-/body-0.3.0.tgz",
"integrity": "sha512-uGo0BOOzjbMUo3lu+BIDWayvn5o6Xyfmnlla5VGf05n8gHMvO1ll7U4FtzWe3hxMLwt53pmc4iE0M+B5slG+Ug==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
"engines": {
"node": ">=20.0.0"
},
@@ -3902,6 +3005,8 @@
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@react-email/button/-/button-0.2.1.tgz",
"integrity": "sha512-qXyj7RZLE7POy9BMKSoqQ00tOXThjOZSUnI2Yu9i29IHngPlmrNayIWBoVKtElES7OWwypUcpiajwi1mUWx6/A==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
"engines": {
"node": ">=20.0.0"
},
@@ -3913,6 +3018,8 @@
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@react-email/code-block/-/code-block-0.2.1.tgz",
"integrity": "sha512-M3B7JpVH4ytgn83/ujRR1k1DQHvTeABiDM61OvAbjLRPhC/5KLHU5KkzIbbuGIrjWwxAbL1kSQzU8MhLEtSxyw==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
"dependencies": {
"prismjs": "^1.30.0"
},
@@ -3927,6 +3034,8 @@
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/@react-email/code-inline/-/code-inline-0.0.6.tgz",
"integrity": "sha512-jfhebvv3dVsp3OdPgKXnk8+e2pBiDVZejDOBFzBa/IblrAJ9cQDkN6rBD5IyEg8hTOxwbw3iaI/yZFmDmIguIA==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
"engines": {
"node": ">=20.0.0"
},
@@ -3938,6 +3047,8 @@
"version": "0.0.14",
"resolved": "https://registry.npmjs.org/@react-email/column/-/column-0.0.14.tgz",
"integrity": "sha512-f+W+Bk2AjNO77zynE33rHuQhyqVICx4RYtGX9NKsGUg0wWjdGP0qAuIkhx9Rnmk4/hFMo1fUrtYNqca9fwJdHg==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
"engines": {
"node": ">=20.0.0"
},
@@ -3949,6 +3060,8 @@
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/@react-email/components/-/components-1.0.12.tgz",
"integrity": "sha512-tH18JhPDWgE+3jnYkzyB6ZrZdfNnEsFe4PwmuXmlOw4NGIysP8wPY5aXZg++pTG9qUabXg1nzX/FGHGkObH8xQ==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
"dependencies": {
"@react-email/body": "0.3.0",
"@react-email/button": "0.2.1",
@@ -3982,6 +3095,8 @@
"version": "0.0.16",
"resolved": "https://registry.npmjs.org/@react-email/container/-/container-0.0.16.tgz",
"integrity": "sha512-QWBB56RkkU0AJ9h+qy33gfT5iuZknPC7Un/IjZv9B0QmMIK+WWacc0cH6y2SV5Cv/b99hU94fjEMOOO4enpkbQ==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
"engines": {
"node": ">=20.0.0"
},
@@ -3993,6 +3108,8 @@
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/@react-email/font/-/font-0.0.10.tgz",
"integrity": "sha512-0urVSgCmQIfx5r7Xc586miBnQUVnGp3OTYUm8m5pwtQRdTRO5XrTtEfNJ3JhYhSOruV0nD8fd+dXtKXobum6tA==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
"engines": {
"node": ">=20.0.0"
},
@@ -4004,6 +3121,8 @@
"version": "0.0.13",
"resolved": "https://registry.npmjs.org/@react-email/head/-/head-0.0.13.tgz",
"integrity": "sha512-AJg6le/08Gz4tm+6MtKXqtNNyKHzmooOCdmtqmWxD7FxoAdU1eVcizhtQ0gcnVaY6ethEyE/hnEzQxt1zu5Kog==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
"engines": {
"node": ">=20.0.0"
},
@@ -4015,6 +3134,8 @@
"version": "0.0.16",
"resolved": "https://registry.npmjs.org/@react-email/heading/-/heading-0.0.16.tgz",
"integrity": "sha512-jmsKnQm1ykpBzw4hCYHwBkt5pW2jScXffPeEH5ZRF5tZeF5b1pvlFTO9han7C0pCkZYo1kEvWiRtx69yfCIwuw==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
"engines": {
"node": ">=20.0.0"
},
@@ -4026,6 +3147,8 @@
"version": "0.0.12",
"resolved": "https://registry.npmjs.org/@react-email/hr/-/hr-0.0.12.tgz",
"integrity": "sha512-TwmOmBDibavUQpXBxpmZYi2Iks/yeZOzFYh+di9EltMSnEabH8dMZXrl+pxNXzCgZ2XE8HY7VmUL65Lenfu5PA==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
"engines": {
"node": ">=20.0.0"
},
@@ -4037,6 +3160,8 @@
"version": "0.0.12",
"resolved": "https://registry.npmjs.org/@react-email/html/-/html-0.0.12.tgz",
"integrity": "sha512-KTShZesan+UsreU7PDUV90afrZwU5TLwYlALuCSU0OT+/U8lULNNbAUekg+tGwCnOfIKYtpDPKkAMRdYlqUznw==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
"engines": {
"node": ">=20.0.0"
},
@@ -4048,6 +3173,8 @@
"version": "0.0.12",
"resolved": "https://registry.npmjs.org/@react-email/img/-/img-0.0.12.tgz",
"integrity": "sha512-sRCpEARNVTf3FQhZOC+JTvu5r6ubiYWkT0ucYXg8ctkyi4G8QG+jgYPiNUqVeTLA2STOfmPM/nrk1nb84y6CPQ==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
"engines": {
"node": ">=20.0.0"
},
@@ -4059,6 +3186,8 @@
"version": "0.0.13",
"resolved": "https://registry.npmjs.org/@react-email/link/-/link-0.0.13.tgz",
"integrity": "sha512-lkWc/NjOcefRZMkQoSDDbuKBEBDES9aXnFEOuPH845wD3TxPwh+QTf0fStuzjoRLUZWpHnio4z7qGGRYusn/sw==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
"engines": {
"node": ">=20.0.0"
},
@@ -4070,6 +3199,8 @@
"version": "0.0.18",
"resolved": "https://registry.npmjs.org/@react-email/markdown/-/markdown-0.0.18.tgz",
"integrity": "sha512-gSuYK5fsMbGk87jDebqQ6fa2fKcWlkf2Dkva8kMONqLgGCq8/0d+ZQYMEJsdidIeBo3kmsnHZPrwdFB4HgjUXg==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
"dependencies": {
"marked": "^15.0.12"
},
@@ -4084,6 +3215,8 @@
"version": "0.0.14",
"resolved": "https://registry.npmjs.org/@react-email/preview/-/preview-0.0.14.tgz",
"integrity": "sha512-aYK8q0IPkBXyMsbpMXgxazwHxYJxTrXrV95GFuu2HbEiIToMwSyUgb8HDFYwPqqfV03/jbwqlsXmFxsOd+VNaw==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
"engines": {
"node": ">=20.0.0"
},
@@ -4095,6 +3228,7 @@
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/@react-email/render/-/render-2.0.6.tgz",
"integrity": "sha512-xOzaYkH3jLZKqN5MqrTXYnmqBYUnZSVbkxdb5PGGmDcK6sKDVMliaDiSwfXajRC9JtSHTcGc2tmGLHWuCgVpog==",
+ "license": "MIT",
"dependencies": {
"html-to-text": "^9.0.5",
"prettier": "^3.5.3"
@@ -4111,6 +3245,8 @@
"version": "0.0.13",
"resolved": "https://registry.npmjs.org/@react-email/row/-/row-0.0.13.tgz",
"integrity": "sha512-bYnOac40vIKCId7IkwuLAAsa3fKfSfqCvv6epJKmPE0JBuu5qI4FHFCl9o9dVpIIS08s/ub+Y/txoMt0dYziGw==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
"engines": {
"node": ">=20.0.0"
},
@@ -4122,6 +3258,8 @@
"version": "0.0.17",
"resolved": "https://registry.npmjs.org/@react-email/section/-/section-0.0.17.tgz",
"integrity": "sha512-qNl65ye3W0Rd5udhdORzTV9ezjb+GFqQQSae03NDzXtmJq6sqVXNWNiVolAjvJNypim+zGXmv6J9TcV5aNtE/w==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
"engines": {
"node": ">=20.0.0"
},
@@ -4133,6 +3271,8 @@
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/@react-email/tailwind/-/tailwind-2.0.7.tgz",
"integrity": "sha512-kGw80weVFXikcnCXbigTGXGWQ0MRCSYNCudcdkWxebkWYd0FG6/NPoN3V1p/u68/4+NxZwYPVi2fhnp0x23HdA==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
"dependencies": {
"tailwindcss": "^4.1.18"
},
@@ -4187,14 +3327,17 @@
}
},
"node_modules/@react-email/tailwind/node_modules/tailwindcss": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.2.2.tgz",
- "integrity": "sha512-KWBIxs1Xb6NoLdMVqhbhgwZf2PGBpPEiwOqgI4pFIYbNTfBXiKYyWoTsXgBQ9WFg/OlhnvHaY+AEpW7wSmFo2Q=="
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.3.tgz",
+ "integrity": "sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ==",
+ "license": "MIT"
},
"node_modules/@react-email/text": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/@react-email/text/-/text-0.1.6.tgz",
"integrity": "sha512-TYqkioRS45wTR5il3dYk/SbUjjEdhSwh9BtRNB99qNH1pXAwA45H7rAuxehiu8iJQJH0IyIr+6n62gBz9ezmsw==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
+ "license": "MIT",
"engines": {
"node": ">=20.0.0"
},
@@ -4225,17 +3368,18 @@
"dev": true
},
"node_modules/@redocly/openapi-core": {
- "version": "1.34.11",
- "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.34.11.tgz",
- "integrity": "sha512-V09ayfnb5GyysmvARbt+voFZAjGcf7hSYxOYxSkCc4fbH/DTfq5YWoec8cflvmHHqyIFbqvmGKmYFzqhr9zxDg==",
+ "version": "1.34.20",
+ "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.34.20.tgz",
+ "integrity": "sha512-ypeBZ/6BKXR9+7/TtbKhbl4UgD7raHhPS12oknlKno2A8+lnFkxIwiE/Aklu6L2cd/ioH+fCWuMxi9/p3EyAPw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@redocly/ajv": "8.11.2",
"@redocly/config": "0.22.0",
"colorette": "1.4.0",
"https-proxy-agent": "7.0.6",
"js-levenshtein": "1.1.6",
- "js-yaml": "4.1.1",
+ "js-yaml": "4.3.2",
"minimatch": "5.1.9",
"pluralize": "8.0.0",
"yaml-ast-parser": "0.0.43"
@@ -4586,6 +3730,7 @@
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.11.0.tgz",
"integrity": "sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==",
+ "license": "MIT",
"dependencies": {
"domhandler": "^5.0.3",
"selderee": "^0.11.0"
@@ -4636,19 +3781,6 @@
"node": ">=18"
}
},
- "node_modules/@sentry-internal/node-cpu-profiler": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@sentry-internal/node-cpu-profiler/-/node-cpu-profiler-2.2.0.tgz",
- "integrity": "sha512-oLHVYurqZfADPh5hvmQYS5qx8t0UZzT2u6+/68VXsFruQEOnYJTODKgU3BVLmemRs3WE6kCJjPeFdHVYOQGSzQ==",
- "hasInstallScript": true,
- "dependencies": {
- "detect-libc": "^2.0.3",
- "node-abi": "^3.73.0"
- },
- "engines": {
- "node": ">=18"
- }
- },
"node_modules/@sentry-internal/replay": {
"version": "10.52.0",
"resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-10.52.0.tgz",
@@ -4718,115 +3850,6 @@
"node": ">=18"
}
},
- "node_modules/@sentry/core": {
- "version": "9.47.1",
- "resolved": "https://registry.npmjs.org/@sentry/core/-/core-9.47.1.tgz",
- "integrity": "sha512-KX62+qIt4xgy8eHKHiikfhz2p5fOciXd0Cl+dNzhgPFq8klq4MGMNaf148GB3M/vBqP4nw/eFvRMAayFCgdRQw==",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@sentry/node": {
- "version": "9.47.1",
- "resolved": "https://registry.npmjs.org/@sentry/node/-/node-9.47.1.tgz",
- "integrity": "sha512-CDbkasBz3fnWRKSFs6mmaRepM2pa+tbZkrqhPWifFfIkJDidtVW40p6OnquTvPXyPAszCnDZRnZT14xyvNmKPQ==",
- "dependencies": {
- "@opentelemetry/api": "^1.9.0",
- "@opentelemetry/context-async-hooks": "^1.30.1",
- "@opentelemetry/core": "^1.30.1",
- "@opentelemetry/instrumentation": "^0.57.2",
- "@opentelemetry/instrumentation-amqplib": "^0.46.1",
- "@opentelemetry/instrumentation-connect": "0.43.1",
- "@opentelemetry/instrumentation-dataloader": "0.16.1",
- "@opentelemetry/instrumentation-express": "0.47.1",
- "@opentelemetry/instrumentation-fs": "0.19.1",
- "@opentelemetry/instrumentation-generic-pool": "0.43.1",
- "@opentelemetry/instrumentation-graphql": "0.47.1",
- "@opentelemetry/instrumentation-hapi": "0.45.2",
- "@opentelemetry/instrumentation-http": "0.57.2",
- "@opentelemetry/instrumentation-ioredis": "0.47.1",
- "@opentelemetry/instrumentation-kafkajs": "0.7.1",
- "@opentelemetry/instrumentation-knex": "0.44.1",
- "@opentelemetry/instrumentation-koa": "0.47.1",
- "@opentelemetry/instrumentation-lru-memoizer": "0.44.1",
- "@opentelemetry/instrumentation-mongodb": "0.52.0",
- "@opentelemetry/instrumentation-mongoose": "0.46.1",
- "@opentelemetry/instrumentation-mysql": "0.45.1",
- "@opentelemetry/instrumentation-mysql2": "0.45.2",
- "@opentelemetry/instrumentation-pg": "0.51.1",
- "@opentelemetry/instrumentation-redis-4": "0.46.1",
- "@opentelemetry/instrumentation-tedious": "0.18.1",
- "@opentelemetry/instrumentation-undici": "0.10.1",
- "@opentelemetry/resources": "^1.30.1",
- "@opentelemetry/sdk-trace-base": "^1.30.1",
- "@opentelemetry/semantic-conventions": "^1.34.0",
- "@prisma/instrumentation": "6.11.1",
- "@sentry/core": "9.47.1",
- "@sentry/node-core": "9.47.1",
- "@sentry/opentelemetry": "9.47.1",
- "import-in-the-middle": "^1.14.2",
- "minimatch": "^9.0.0"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@sentry/node-core": {
- "version": "9.47.1",
- "resolved": "https://registry.npmjs.org/@sentry/node-core/-/node-core-9.47.1.tgz",
- "integrity": "sha512-7TEOiCGkyShJ8CKtsri9lbgMCbB+qNts2Xq37itiMPN2m+lIukK3OX//L8DC5nfKYZlgikrefS63/vJtm669hQ==",
- "dependencies": {
- "@sentry/core": "9.47.1",
- "@sentry/opentelemetry": "9.47.1",
- "import-in-the-middle": "^1.14.2"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.9.0",
- "@opentelemetry/context-async-hooks": "^1.30.1 || ^2.0.0",
- "@opentelemetry/core": "^1.30.1 || ^2.0.0",
- "@opentelemetry/instrumentation": ">=0.57.1 <1",
- "@opentelemetry/resources": "^1.30.1 || ^2.0.0",
- "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.0.0",
- "@opentelemetry/semantic-conventions": "^1.34.0"
- }
- },
- "node_modules/@sentry/opentelemetry": {
- "version": "9.47.1",
- "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-9.47.1.tgz",
- "integrity": "sha512-STtFpjF7lwzeoedDJV+5XA6P89BfmFwFftmHSGSe3UTI8z8IoiR5yB6X2vCjSPvXlfeOs13qCNNCEZyznxM8Xw==",
- "dependencies": {
- "@sentry/core": "9.47.1"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@opentelemetry/api": "^1.9.0",
- "@opentelemetry/context-async-hooks": "^1.30.1 || ^2.0.0",
- "@opentelemetry/core": "^1.30.1 || ^2.0.0",
- "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.0.0",
- "@opentelemetry/semantic-conventions": "^1.34.0"
- }
- },
- "node_modules/@sentry/profiling-node": {
- "version": "9.47.1",
- "resolved": "https://registry.npmjs.org/@sentry/profiling-node/-/profiling-node-9.47.1.tgz",
- "integrity": "sha512-4Llq0it2nL/1iJcEEm3JwdRyvRAjYuoS0MB9+9eKRaCJBIj//3fOcyjw75BbhdSFBhkDMRv2W5b3gn9oPrJAHA==",
- "dependencies": {
- "@sentry-internal/node-cpu-profiler": "^2.2.0",
- "@sentry/core": "9.47.1",
- "@sentry/node": "9.47.1"
- },
- "bin": {
- "sentry-prune-profiler-binaries": "scripts/prune-profiler-binaries.js"
- },
- "engines": {
- "node": ">=18"
- }
- },
"node_modules/@sentry/react": {
"version": "10.52.0",
"resolved": "https://registry.npmjs.org/@sentry/react/-/react-10.52.0.tgz",
@@ -4856,13 +3879,13 @@
"version": "13.3.0",
"resolved": "https://registry.npmjs.org/@simplewebauthn/browser/-/browser-13.3.0.tgz",
"integrity": "sha512-BE/UWv6FOToAdVk0EokzkqQQDOWtNydYlY6+OrmiZ5SCNmb41VehttboTetUM3T/fr6EAFYVXjz4My2wg230rQ==",
- "peer": true
+ "license": "MIT"
},
"node_modules/@simplewebauthn/server": {
- "version": "13.3.0",
- "resolved": "https://registry.npmjs.org/@simplewebauthn/server/-/server-13.3.0.tgz",
- "integrity": "sha512-MLHYFrYG8/wK2i+86XMhiecK72nMaHKKt4bo+7Q1TbuG9iGjlSdfkPWKO5ZFE/BX+ygCJ7pr8H/AJeyAj1EaTQ==",
- "peer": true,
+ "version": "13.3.3",
+ "resolved": "https://registry.npmjs.org/@simplewebauthn/server/-/server-13.3.3.tgz",
+ "integrity": "sha512-LelX/lcy5cjc15A86i/aNxHhB5eU7dd20QsbP0VLAf9e38+SLlsnqCCyecx3xqfGofhmX05h1J9fKRYWxw+luA==",
+ "license": "MIT",
"dependencies": {
"@hexagon/base64": "^1.1.27",
"@levischuck/tiny-cbor": "^0.2.2",
@@ -4877,11 +3900,6 @@
"node": ">=20.0.0"
}
},
- "node_modules/@sinclair/typebox": {
- "version": "0.31.28",
- "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.31.28.tgz",
- "integrity": "sha512-/s55Jujywdw/Jpan+vsy6JZs1z2ZTGxTmbZTPiuSL2wz9mfzA2gN1zzaqmvfi4pq+uOt7Du85fkiwv5ymW84aQ=="
- },
"node_modules/@solidjs/router": {
"version": "0.15.4",
"resolved": "https://registry.npmjs.org/@solidjs/router/-/router-0.15.4.tgz",
@@ -4893,17 +3911,20 @@
"node_modules/@standard-schema/spec": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz",
- "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="
+ "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==",
+ "license": "MIT"
},
"node_modules/@standard-schema/utils": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz",
- "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g=="
+ "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==",
+ "license": "MIT"
},
"node_modules/@supabase/auth-js": {
"version": "2.79.0",
"resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.79.0.tgz",
"integrity": "sha512-p2GKvdbF9d/6C+dtS6iNcSicPr6eUfkvovD60HWlWsD+oOjC483DzFWrzGjNpBwnswhfMRP8Qn3rYA0VWaOfjw==",
+ "license": "MIT",
"dependencies": {
"tslib": "2.8.1"
},
@@ -4911,40 +3932,11 @@
"node": ">=20.0.0"
}
},
- "node_modules/@supabase/postgres-meta": {
- "version": "0.93.1",
- "resolved": "https://registry.npmjs.org/@supabase/postgres-meta/-/postgres-meta-0.93.1.tgz",
- "integrity": "sha512-cTKLFPqtaMHAUaiHfWj28xEv6tqb5ffsMByZprgJFDCqTBflIftsDp4mYelK5Kdra7OWy1XgLacsMjQ3FbxFSQ==",
- "dependencies": {
- "@fastify/cors": "^9.0.1",
- "@fastify/swagger": "^8.2.1",
- "@fastify/type-provider-typebox": "^3.5.0",
- "@sentry/node": "^9.12.0",
- "@sentry/profiling-node": "^9.12.0",
- "@sinclair/typebox": "^0.31.25",
- "close-with-grace": "^2.1.0",
- "crypto-js": "^4.0.0",
- "fastify": "^4.24.3",
- "fastify-metrics": "^10.0.0",
- "pg": "npm:@supabase/pg@0.0.3",
- "pg-connection-string": "^2.7.0",
- "pg-format": "^1.0.4",
- "pg-protocol": "npm:@supabase/pg-protocol@0.0.2",
- "pgsql-parser": "^13.16.0",
- "pino": "^9.5.0",
- "postgres-array": "^3.0.1",
- "prettier": "^3.3.3",
- "prettier-plugin-sql": "0.17.1"
- },
- "engines": {
- "node": ">=20",
- "npm": ">=9"
- }
- },
"node_modules/@supabase/postgrest-js": {
"version": "2.79.0",
"resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-2.79.0.tgz",
"integrity": "sha512-2i8EFm3/49ecjt6dk/TGVROBbtOmhryiC4NL3u0FBIrm2hqj+FvbELv1jjM6r+a6abnh+uzIV/bFsWHAa/k3/w==",
+ "license": "MIT",
"dependencies": {
"tslib": "2.8.1"
},
@@ -4953,9 +3945,10 @@
}
},
"node_modules/@tanstack/query-core": {
- "version": "5.97.0",
- "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.97.0.tgz",
- "integrity": "sha512-QdpLP5VzVMgo4VtaPppRA2W04UFjIqX+bxke/ZJhE5cfd5UPkRzqIAJQt9uXkQJjqE8LBOMbKv7f8HCsZltXlg==",
+ "version": "5.102.8",
+ "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.102.8.tgz",
+ "integrity": "sha512-ZNjkJ33CqvPNec/6lZBnHqLc3EVGPZ9ySLhYahU9TcuRFdmwXewuj0c4hwSWcGHqEUwcSrKeZ+oGcvPBqXcQcg==",
+ "license": "MIT",
"peer": true,
"funding": {
"type": "github",
@@ -4963,12 +3956,13 @@
}
},
"node_modules/@tanstack/react-query": {
- "version": "5.97.0",
- "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.97.0.tgz",
- "integrity": "sha512-y4So4eGcQoK2WVMAcDNZE9ofB/p5v1OlKvtc1F3uqHwrtifobT7q+ZnXk2mRkc8E84HKYSlAE9z6HXl2V0+ySQ==",
+ "version": "5.102.8",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.102.8.tgz",
+ "integrity": "sha512-TYBea4OuXWD7MhaSHq069TWbFe7rcwWN6kzT7JF0OKi1K6c1gTv2IzD6A6ExJsCMozdkqBWeuIUZmu4KQg0O5A==",
+ "license": "MIT",
"peer": true,
"dependencies": {
- "@tanstack/query-core": "5.97.0"
+ "@tanstack/query-core": "5.102.8"
},
"funding": {
"type": "github",
@@ -4982,6 +3976,7 @@
"version": "1.0.50",
"resolved": "https://registry.npmjs.org/@triplit/client/-/client-1.0.50.tgz",
"integrity": "sha512-3vjXTSdDQ3fzLDrewCK7elkAQc7CiDg0eZEOZInQbVMFRiakdieO5C2voSnNjSepIYHxDxFSBllgg32QsNpL9Q==",
+ "license": "AGPL-3.0-only",
"peer": true,
"dependencies": {
"@triplit/db": "^1.1.10",
@@ -5027,24 +4022,6 @@
}
}
},
- "node_modules/@triplit/db/node_modules/nanoid": {
- "version": "5.1.7",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.7.tgz",
- "integrity": "sha512-ua3NDgISf6jdwezAheMOk4mbE1LXjm1DfMUDMuJf4AqxLFK3ccGpgWizwa5YV7Yz9EpXwEaWoRXSb/BnV0t5dQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "peer": true,
- "bin": {
- "nanoid": "bin/nanoid.js"
- },
- "engines": {
- "node": "^18 || >=20"
- }
- },
"node_modules/@triplit/logger": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/@triplit/logger/-/logger-0.0.3.tgz",
@@ -5107,71 +4084,26 @@
"@babel/types": "^7.28.2"
}
},
- "node_modules/@types/connect": {
- "version": "3.4.38",
- "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
- "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
- "dependencies": {
- "@types/node": "*"
- }
- },
"node_modules/@types/estree": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
"integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
"dev": true
},
- "node_modules/@types/mysql": {
- "version": "2.15.26",
- "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.26.tgz",
- "integrity": "sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==",
- "dependencies": {
- "@types/node": "*"
- }
- },
"node_modules/@types/node": {
"version": "24.12.2",
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.2.tgz",
"integrity": "sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==",
+ "dev": true,
"dependencies": {
"undici-types": "~7.16.0"
}
},
- "node_modules/@types/pg": {
- "version": "8.6.1",
- "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.1.tgz",
- "integrity": "sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==",
- "dependencies": {
- "@types/node": "*",
- "pg-protocol": "*",
- "pg-types": "^2.2.0"
- }
- },
- "node_modules/@types/pg-pool": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@types/pg-pool/-/pg-pool-2.0.6.tgz",
- "integrity": "sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==",
- "dependencies": {
- "@types/pg": "*"
- }
- },
- "node_modules/@types/shimmer": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.2.0.tgz",
- "integrity": "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg=="
- },
- "node_modules/@types/tedious": {
- "version": "4.0.14",
- "resolved": "https://registry.npmjs.org/@types/tedious/-/tedious-4.0.14.tgz",
- "integrity": "sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==",
- "dependencies": {
- "@types/node": "*"
- }
- },
"node_modules/@wojtekmaj/react-recaptcha-v3": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/@wojtekmaj/react-recaptcha-v3/-/react-recaptcha-v3-0.1.4.tgz",
"integrity": "sha512-zszMOdgI+y1Dz3496pRFr3t68n9+OmX/puLQNnOBDC7WrjM+nOKGyjIMCTe+3J14KDvzcxETeiglyDMGl0Yh/Q==",
+ "license": "MIT",
"dependencies": {
"warning": "^4.0.0"
},
@@ -5189,30 +4121,6 @@
}
}
},
- "node_modules/abstract-logging": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz",
- "integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA=="
- },
- "node_modules/acorn": {
- "version": "8.16.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
- "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/acorn-import-attributes": {
- "version": "1.9.5",
- "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
- "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
- "peerDependencies": {
- "acorn": "^8"
- }
- },
"node_modules/agent-base": {
"version": "7.1.4",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
@@ -5222,52 +4130,6 @@
"node": ">= 14"
}
},
- "node_modules/ajv": {
- "version": "8.18.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
- "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
- "dependencies": {
- "fast-deep-equal": "^3.1.3",
- "fast-uri": "^3.0.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/ajv-formats": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
- "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
- "dependencies": {
- "ajv": "^8.0.0"
- },
- "peerDependencies": {
- "ajv": "^8.0.0"
- },
- "peerDependenciesMeta": {
- "ajv": {
- "optional": true
- }
- }
- },
- "node_modules/ajv/node_modules/fast-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz",
- "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fastify"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/fastify"
- }
- ]
- },
"node_modules/ansi-colors": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
@@ -5305,12 +4167,14 @@
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
},
"node_modules/aria-hidden": {
"version": "1.2.6",
"resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz",
"integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==",
+ "license": "MIT",
"dependencies": {
"tslib": "^2.0.0"
},
@@ -5319,27 +4183,19 @@
}
},
"node_modules/asn1js": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.7.tgz",
- "integrity": "sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ==",
- "peer": true,
+ "version": "3.0.10",
+ "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.10.tgz",
+ "integrity": "sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==",
+ "license": "BSD-3-Clause",
"dependencies": {
"pvtsutils": "^1.3.6",
- "pvutils": "^1.1.3",
+ "pvutils": "^1.1.5",
"tslib": "^2.8.1"
},
"engines": {
"node": ">=12.0.0"
}
},
- "node_modules/atomic-sleep": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz",
- "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==",
- "engines": {
- "node": ">=8.0.0"
- }
- },
"node_modules/autoprefixer": {
"version": "10.4.27",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.27.tgz",
@@ -5376,15 +4232,6 @@
"postcss": "^8.1.0"
}
},
- "node_modules/avvio": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/avvio/-/avvio-8.4.0.tgz",
- "integrity": "sha512-CDSwaxINFy59iNwhYnkvALBwZiTydGkOecZyPkqBpABYR1KqGEsET0VOOYDwtleZSUIdeY36DC2bSZ24CO1igA==",
- "dependencies": {
- "@fastify/error": "^3.3.0",
- "fastq": "^1.17.1"
- }
- },
"node_modules/babel-plugin-jsx-dom-expressions": {
"version": "0.40.6",
"resolved": "https://registry.npmjs.org/babel-plugin-jsx-dom-expressions/-/babel-plugin-jsx-dom-expressions-0.40.6.tgz",
@@ -5434,13 +4281,15 @@
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
},
"node_modules/baseline-browser-mapping": {
- "version": "2.10.17",
- "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.17.tgz",
- "integrity": "sha512-HdrkN8eVG2CXxeifv/VdJ4A4RSra1DTW8dc/hdxzhGHN8QePs6gKaWM9pHPcpCoxYZJuOZ8drHmbdpLHjCYjLA==",
+ "version": "2.11.22",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.22.tgz",
+ "integrity": "sha512-pWc4w51fBFd7mav43/zKRC+RI6f4yfzQoVlfvE8dECePyfkn1bzLp01Fj0QACcyCZyFhiEMyD2qScfKRWgWibA==",
"dev": true,
+ "license": "Apache-2.0",
"bin": {
"baseline-browser-mapping": "dist/cli.cjs"
},
@@ -5448,12 +4297,24 @@
"node": ">=6.0.0"
}
},
- "node_modules/big-integer": {
- "version": "1.6.52",
- "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz",
- "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==",
- "engines": {
- "node": ">=0.6"
+ "node_modules/better-call": {
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/better-call/-/better-call-1.3.7.tgz",
+ "integrity": "sha512-Al51/hjp2SSp6CRTa3F2ptcx4yQVS1xWKoY6jcVXqNYOap6mHFP2jUBn5EwIL4iIed1/Sq4hlQ+Umm6EflZG+w==",
+ "license": "MIT",
+ "dependencies": {
+ "@better-auth/utils": "^0.4.0",
+ "@better-fetch/fetch": "^1.1.21",
+ "rou3": "^0.7.12",
+ "set-cookie-parser": "^3.0.1"
+ },
+ "peerDependencies": {
+ "zod": "^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "zod": {
+ "optional": true
+ }
}
},
"node_modules/binary-extensions": {
@@ -5468,15 +4329,18 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/bintrees": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz",
- "integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw=="
+ "node_modules/bowser": {
+ "version": "2.14.1",
+ "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.14.1.tgz",
+ "integrity": "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==",
+ "license": "MIT"
},
"node_modules/brace-expansion": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz",
- "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==",
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz",
+ "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
}
@@ -5494,9 +4358,9 @@
}
},
"node_modules/browserslist": {
- "version": "4.28.2",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz",
- "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==",
+ "version": "4.28.9",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.9.tgz",
+ "integrity": "sha512-EWazOblFYUvlGZcfGhPUPmYh3nikUxBVb+y9MJun5f3hBi812X+8MSQTujLBtgK3cf51fJWbWfOjyeO954d+Eg==",
"dev": true,
"funding": [
{
@@ -5512,12 +4376,13 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"dependencies": {
- "baseline-browser-mapping": "^2.10.12",
- "caniuse-lite": "^1.0.30001782",
- "electron-to-chromium": "^1.5.328",
- "node-releases": "^2.0.36",
- "update-browserslist-db": "^1.2.3"
+ "baseline-browser-mapping": "^2.11.20",
+ "caniuse-lite": "^1.0.30001810",
+ "electron-to-chromium": "^1.5.420",
+ "node-releases": "^2.0.54",
+ "update-browserslist-db": "^1.3.2"
},
"bin": {
"browserslist": "cli.js"
@@ -5536,9 +4401,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001787",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001787.tgz",
- "integrity": "sha512-mNcrMN9KeI68u7muanUpEejSLghOKlVhRqS/Za2IeyGllJ9I9otGpR9g3nsw7n4W378TE/LyIteA0+/FOZm4Kg==",
+ "version": "1.0.30001810",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001810.tgz",
+ "integrity": "sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==",
"dev": true,
"funding": [
{
@@ -5553,7 +4418,8 @@
"type": "github",
"url": "https://github.com/sponsors/ai"
}
- ]
+ ],
+ "license": "CC-BY-4.0"
},
"node_modules/change-case": {
"version": "5.4.4",
@@ -5597,15 +4463,11 @@
"node": ">= 6"
}
},
- "node_modules/cjs-module-lexer": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz",
- "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q=="
- },
"node_modules/class-variance-authority": {
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz",
"integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==",
+ "license": "Apache-2.0",
"dependencies": {
"clsx": "^2.1.1"
},
@@ -5613,15 +4475,11 @@
"url": "https://polar.sh/cva"
}
},
- "node_modules/close-with-grace": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/close-with-grace/-/close-with-grace-2.5.0.tgz",
- "integrity": "sha512-MewUtZQU6N4YVHIne63zGtjIQzTINgr6lQp2Y0CutaCw2FsdYahW57dH1Wdz+aV5ipbBzEBZD5znwX2NooS+IA=="
- },
"node_modules/clsx": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
"integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -5636,46 +4494,20 @@
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/comlink/-/comlink-4.4.2.tgz",
"integrity": "sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==",
+ "license": "Apache-2.0",
"peer": true
},
- "node_modules/commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
- },
"node_modules/convert-source-map": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
"dev": true
},
- "node_modules/cookie": {
- "version": "0.7.2",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
- "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/copy-anything": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-4.0.5.tgz",
- "integrity": "sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==",
- "peer": true,
- "dependencies": {
- "is-what": "^5.2.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/mesqueeb"
- }
- },
- "node_modules/copy-anything/node_modules/is-what": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/is-what/-/is-what-5.5.0.tgz",
- "integrity": "sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-4.1.0.tgz",
+ "integrity": "sha512-ufbM3smX/Jbnpk5wcQjzd1MgBpzmqfNETUAyZNrGwU9foRlyHoGzMMBBCRzEhQLBjZfFDE1W2ufPXX2vdWkV8Q==",
+ "license": "MIT",
"peer": true,
"engines": {
"node": ">=18"
@@ -5685,21 +4517,20 @@
}
},
"node_modules/core-js": {
- "version": "3.49.0",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.49.0.tgz",
- "integrity": "sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==",
+ "version": "3.50.0",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.50.0.tgz",
+ "integrity": "sha512-BRWgOLKkFeCgRudR6zrs8p9XJZcE14grzKMMssoYrk6krtuEZ7MTKPIY5RzOnqsEKIR9kst7wNzphttraT+Yqw==",
"hasInstallScript": true,
+ "license": "MIT",
"peer": true,
+ "engines": {
+ "node": "*"
+ },
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/core-js"
}
},
- "node_modules/crypto-js": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz",
- "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
- },
"node_modules/cssesc": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
@@ -5721,6 +4552,7 @@
"version": "4.4.3",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
"integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "dev": true,
"dependencies": {
"ms": "^2.1.3"
},
@@ -5737,6 +4569,7 @@
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
"integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -5744,7 +4577,8 @@
"node_modules/defu": {
"version": "6.1.7",
"resolved": "https://registry.npmjs.org/defu/-/defu-6.1.7.tgz",
- "integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ=="
+ "integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==",
+ "license": "MIT"
},
"node_modules/detect-europe-js": {
"version": "0.1.2",
@@ -5763,20 +4597,14 @@
"type": "paypal",
"url": "https://paypal.me/faisalman"
}
- ]
- },
- "node_modules/detect-libc": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
- "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
- "engines": {
- "node": ">=8"
- }
+ ],
+ "license": "MIT"
},
"node_modules/detect-node-es": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz",
- "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="
+ "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==",
+ "license": "MIT"
},
"node_modules/didyoumean": {
"version": "1.2.2",
@@ -5784,11 +4612,6 @@
"integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
"dev": true
},
- "node_modules/discontinuous-range": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz",
- "integrity": "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ=="
- },
"node_modules/dlv": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
@@ -5799,6 +4622,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
"integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "license": "MIT",
"dependencies": {
"domelementtype": "^2.3.0",
"domhandler": "^5.0.2",
@@ -5812,6 +4636,7 @@
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=0.12"
},
@@ -5828,12 +4653,14 @@
"type": "github",
"url": "https://github.com/sponsors/fb55"
}
- ]
+ ],
+ "license": "BSD-2-Clause"
},
"node_modules/domhandler": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
"integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "license": "BSD-2-Clause",
"dependencies": {
"domelementtype": "^2.3.0"
},
@@ -5848,6 +4675,7 @@
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
"integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
+ "license": "BSD-2-Clause",
"dependencies": {
"dom-serializer": "^2.0.0",
"domelementtype": "^2.3.0",
@@ -5858,15 +4686,17 @@
}
},
"node_modules/electron-to-chromium": {
- "version": "1.5.334",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.334.tgz",
- "integrity": "sha512-mgjZAz7Jyx1SRCwEpy9wefDS7GvNPazLthHg8eQMJ76wBdGQQDW33TCrUTvQ4wzpmOrv2zrFoD3oNufMdyMpog==",
- "dev": true
+ "version": "1.5.427",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.427.tgz",
+ "integrity": "sha512-n14zb3FdsChZ2BNobqNHAJMcP3ifFv4paox2LvCrfVAQcqGiSURgbJl+PfMpHVCNFkStnNc+RRVtPBTVW5PDgw==",
+ "dev": true,
+ "license": "ISC"
},
"node_modules/elen": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/elen/-/elen-1.0.10.tgz",
"integrity": "sha512-ZL799/V/kzxYJ6Wlfktreq6qQWfGc3VkGUQJW5lZQ8/MhsQiKTAwERPfhEwIsV2movRGe2DfV7H2MjRw76Z7Wg==",
+ "license": "MIT",
"peer": true
},
"node_modules/entities": {
@@ -5882,11 +4712,12 @@
}
},
"node_modules/esbuild": {
- "version": "0.27.7",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz",
- "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.2.tgz",
+ "integrity": "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==",
"dev": true,
"hasInstallScript": true,
+ "license": "MIT",
"bin": {
"esbuild": "bin/esbuild"
},
@@ -5894,32 +4725,32 @@
"node": ">=18"
},
"optionalDependencies": {
- "@esbuild/aix-ppc64": "0.27.7",
- "@esbuild/android-arm": "0.27.7",
- "@esbuild/android-arm64": "0.27.7",
- "@esbuild/android-x64": "0.27.7",
- "@esbuild/darwin-arm64": "0.27.7",
- "@esbuild/darwin-x64": "0.27.7",
- "@esbuild/freebsd-arm64": "0.27.7",
- "@esbuild/freebsd-x64": "0.27.7",
- "@esbuild/linux-arm": "0.27.7",
- "@esbuild/linux-arm64": "0.27.7",
- "@esbuild/linux-ia32": "0.27.7",
- "@esbuild/linux-loong64": "0.27.7",
- "@esbuild/linux-mips64el": "0.27.7",
- "@esbuild/linux-ppc64": "0.27.7",
- "@esbuild/linux-riscv64": "0.27.7",
- "@esbuild/linux-s390x": "0.27.7",
- "@esbuild/linux-x64": "0.27.7",
- "@esbuild/netbsd-arm64": "0.27.7",
- "@esbuild/netbsd-x64": "0.27.7",
- "@esbuild/openbsd-arm64": "0.27.7",
- "@esbuild/openbsd-x64": "0.27.7",
- "@esbuild/openharmony-arm64": "0.27.7",
- "@esbuild/sunos-x64": "0.27.7",
- "@esbuild/win32-arm64": "0.27.7",
- "@esbuild/win32-ia32": "0.27.7",
- "@esbuild/win32-x64": "0.27.7"
+ "@esbuild/aix-ppc64": "0.28.2",
+ "@esbuild/android-arm": "0.28.2",
+ "@esbuild/android-arm64": "0.28.2",
+ "@esbuild/android-x64": "0.28.2",
+ "@esbuild/darwin-arm64": "0.28.2",
+ "@esbuild/darwin-x64": "0.28.2",
+ "@esbuild/freebsd-arm64": "0.28.2",
+ "@esbuild/freebsd-x64": "0.28.2",
+ "@esbuild/linux-arm": "0.28.2",
+ "@esbuild/linux-arm64": "0.28.2",
+ "@esbuild/linux-ia32": "0.28.2",
+ "@esbuild/linux-loong64": "0.28.2",
+ "@esbuild/linux-mips64el": "0.28.2",
+ "@esbuild/linux-ppc64": "0.28.2",
+ "@esbuild/linux-riscv64": "0.28.2",
+ "@esbuild/linux-s390x": "0.28.2",
+ "@esbuild/linux-x64": "0.28.2",
+ "@esbuild/netbsd-arm64": "0.28.2",
+ "@esbuild/netbsd-x64": "0.28.2",
+ "@esbuild/openbsd-arm64": "0.28.2",
+ "@esbuild/openbsd-x64": "0.28.2",
+ "@esbuild/openharmony-arm64": "0.28.2",
+ "@esbuild/sunos-x64": "0.28.2",
+ "@esbuild/win32-arm64": "0.28.2",
+ "@esbuild/win32-ia32": "0.28.2",
+ "@esbuild/win32-x64": "0.28.2"
}
},
"node_modules/escalade": {
@@ -5927,14 +4758,16 @@
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
"integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/eventsource": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-4.1.0.tgz",
- "integrity": "sha512-2GuF51iuHX6A9xdTccMTsNb7VO0lHZihApxhvQzJB5A03DvHDd2FQepodbMaztPBmBcE/ox7o2gqaxGhYB9LhQ==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-4.1.1.tgz",
+ "integrity": "sha512-D6bTRWh6KahHTK/m4WnjPQyEinNPf9eFLEZSEoj7d6fTibspnAVYfzHvirL7u/aoX5d9YYfIkBVAhmigUELk9w==",
+ "license": "MIT",
"peer": true,
"dependencies": {
"eventsource-parser": "^3.0.1"
@@ -5944,28 +4777,20 @@
}
},
"node_modules/eventsource-parser": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz",
- "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.1.1.tgz",
+ "integrity": "sha512-EKN1vKAMcZ8MlYMpaNuxN6R9yakzH6uajHcHVTqWJzvu5pWw9DyhbP35HH8MVBQ+dZjAfDxk+A8NiR9KWaXiyQ==",
+ "license": "MIT",
"peer": true,
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/fast-content-type-parse": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-1.1.0.tgz",
- "integrity": "sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ=="
- },
- "node_modules/fast-decode-uri-component": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz",
- "integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg=="
- },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
},
"node_modules/fast-glob": {
"version": "3.3.3",
@@ -5995,103 +4820,11 @@
"node": ">= 6"
}
},
- "node_modules/fast-json-stringify": {
- "version": "5.16.1",
- "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.16.1.tgz",
- "integrity": "sha512-KAdnLvy1yu/XrRtP+LJnxbBGrhN+xXu+gt3EUvZhYGKCr3lFHq/7UFJHHFgmJKoqlh6B40bZLEv7w46B0mqn1g==",
- "dependencies": {
- "@fastify/merge-json-schemas": "^0.1.0",
- "ajv": "^8.10.0",
- "ajv-formats": "^3.0.1",
- "fast-deep-equal": "^3.1.3",
- "fast-uri": "^2.1.0",
- "json-schema-ref-resolver": "^1.0.1",
- "rfdc": "^1.2.0"
- }
- },
- "node_modules/fast-json-stringify/node_modules/ajv-formats": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz",
- "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==",
- "dependencies": {
- "ajv": "^8.0.0"
- },
- "peerDependencies": {
- "ajv": "^8.0.0"
- },
- "peerDependenciesMeta": {
- "ajv": {
- "optional": true
- }
- }
- },
- "node_modules/fast-querystring": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz",
- "integrity": "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==",
- "dependencies": {
- "fast-decode-uri-component": "^1.0.1"
- }
- },
- "node_modules/fast-uri": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.4.0.tgz",
- "integrity": "sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA=="
- },
- "node_modules/fastify": {
- "version": "4.29.1",
- "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.29.1.tgz",
- "integrity": "sha512-m2kMNHIG92tSNWv+Z3UeTR9AWLLuo7KctC7mlFPtMEVrfjIhmQhkQnT9v15qA/BfVq3vvj134Y0jl9SBje3jXQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fastify"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/fastify"
- }
- ],
- "dependencies": {
- "@fastify/ajv-compiler": "^3.5.0",
- "@fastify/error": "^3.4.0",
- "@fastify/fast-json-stringify-compiler": "^4.3.0",
- "abstract-logging": "^2.0.1",
- "avvio": "^8.3.0",
- "fast-content-type-parse": "^1.1.0",
- "fast-json-stringify": "^5.8.0",
- "find-my-way": "^8.0.0",
- "light-my-request": "^5.11.0",
- "pino": "^9.0.0",
- "process-warning": "^3.0.0",
- "proxy-addr": "^2.0.7",
- "rfdc": "^1.3.0",
- "secure-json-parse": "^2.7.0",
- "semver": "^7.5.4",
- "toad-cache": "^3.3.0"
- }
- },
- "node_modules/fastify-metrics": {
- "version": "10.6.0",
- "resolved": "https://registry.npmjs.org/fastify-metrics/-/fastify-metrics-10.6.0.tgz",
- "integrity": "sha512-QIPncCnwBOEObMn+VaRhsBC1ox8qEsaiYF2sV/A1UbXj7ic70W8/HNn/hlEC2W8JQbBeZMx++o1um2fPfhsFDQ==",
- "dependencies": {
- "fastify-plugin": "^4.3.0",
- "prom-client": "^14.2.0"
- },
- "peerDependencies": {
- "fastify": ">=4"
- }
- },
- "node_modules/fastify-plugin": {
- "version": "4.5.1",
- "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-4.5.1.tgz",
- "integrity": "sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ=="
- },
"node_modules/fastq": {
"version": "1.20.1",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
"integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
+ "dev": true,
"dependencies": {
"reusify": "^1.0.4"
}
@@ -6108,32 +4841,6 @@
"node": ">=8"
}
},
- "node_modules/find-my-way": {
- "version": "8.2.2",
- "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-8.2.2.tgz",
- "integrity": "sha512-Dobi7gcTEq8yszimcfp/R7+owiT4WncAJ7VTTgFH1jYJ5GaG1FbhjwDG820hptN0QDFvzVY3RfCzdInvGPGzjA==",
- "dependencies": {
- "fast-deep-equal": "^3.1.3",
- "fast-querystring": "^1.0.0",
- "safe-regex2": "^3.1.0"
- },
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/forwarded": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
- "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/forwarded-parse": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/forwarded-parse/-/forwarded-parse-2.1.2.tgz",
- "integrity": "sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw=="
- },
"node_modules/fraction.js": {
"version": "5.3.4",
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz",
@@ -6165,6 +4872,7 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -6182,21 +4890,11 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz",
"integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==",
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
- "node_modules/get-stdin": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz",
- "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/glob-parent": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
@@ -6213,6 +4911,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
"dependencies": {
"function-bind": "^1.1.2"
},
@@ -6224,6 +4923,7 @@
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
"integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "license": "BSD-3-Clause",
"dependencies": {
"react-is": "^16.7.0"
}
@@ -6238,6 +4938,7 @@
"version": "9.0.5",
"resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-9.0.5.tgz",
"integrity": "sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==",
+ "license": "MIT",
"dependencies": {
"@selderee/plugin-htmlparser2": "^0.11.0",
"deepmerge": "^4.3.1",
@@ -6260,6 +4961,7 @@
"url": "https://github.com/sponsors/fb55"
}
],
+ "license": "MIT",
"dependencies": {
"domelementtype": "^2.3.0",
"domhandler": "^5.0.3",
@@ -6271,6 +4973,7 @@
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=0.12"
},
@@ -6291,17 +4994,6 @@
"node": ">= 14"
}
},
- "node_modules/import-in-the-middle": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.15.0.tgz",
- "integrity": "sha512-bpQy+CrsRmYmoPMAE/0G33iwRqwW4ouqdRg8jgbH3aKuCtOc8lxgmYXg2dMM92CRiGP660EtBcymH/eVUpCSaA==",
- "dependencies": {
- "acorn": "^8.14.0",
- "acorn-import-attributes": "^1.9.5",
- "cjs-module-lexer": "^1.2.2",
- "module-details-from-path": "^1.0.3"
- }
- },
"node_modules/index-to-position": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.2.0.tgz",
@@ -6315,22 +5007,15 @@
}
},
"node_modules/input-otp": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/input-otp/-/input-otp-1.4.2.tgz",
- "integrity": "sha512-l3jWwYNvrEa6NTCt7BECfCm48GvwuZzkoeG3gBL2w4CHeOXW3eKFmf9UNYkNfYc3mxMrthMnxjIE07MT0zLBQA==",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/input-otp/-/input-otp-1.5.0.tgz",
+ "integrity": "sha512-3AcfdW1sNG0FmSA5hHMBXG7jNW5CdcdKs8ln8JOmn6S2SRkoXoJx+2UwC+ZvjflfnOdHJx0SfQ9/YjlxVYLtGQ==",
+ "license": "MIT",
"peerDependencies": {
"react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc",
"react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc"
}
},
- "node_modules/ipaddr.js": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
- "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
- "engines": {
- "node": ">= 0.10"
- }
- },
"node_modules/is-binary-path": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
@@ -6347,6 +5032,7 @@
"version": "2.16.1",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
"integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
+ "dev": true,
"dependencies": {
"hasown": "^2.0.2"
},
@@ -6404,7 +5090,8 @@
"type": "paypal",
"url": "https://paypal.me/faisalman"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/is-what": {
"version": "4.1.16",
@@ -6428,9 +5115,10 @@
}
},
"node_modules/jose": {
- "version": "6.1.2",
- "resolved": "https://registry.npmjs.org/jose/-/jose-6.1.2.tgz",
- "integrity": "sha512-MpcPtHLE5EmztuFIqB0vzHAWJPpmN1E6L4oo+kze56LIs3MyXIj9ZHMDxqOvkP38gBR7K1v3jqd4WU2+nrfONQ==",
+ "version": "6.2.5",
+ "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.5.tgz",
+ "integrity": "sha512-2E5L2yRp03FnwreJLJX8/r7mHiZICCf8kG7fAsTWkSQTDAcc46NIZoQLKy+EJ8sPoJlxyS4OQR5H70LjIZZlIQ==",
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/panva"
}
@@ -6450,10 +5138,21 @@
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
},
"node_modules/js-yaml": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
- "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz",
+ "integrity": "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==",
"dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/puzrin"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/nodeca"
+ }
+ ],
+ "license": "MIT",
"dependencies": {
"argparse": "^2.0.1"
},
@@ -6473,34 +5172,11 @@
"node": ">=6"
}
},
- "node_modules/json-schema-ref-resolver": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-1.0.1.tgz",
- "integrity": "sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==",
- "dependencies": {
- "fast-deep-equal": "^3.1.3"
- }
- },
- "node_modules/json-schema-resolver": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-resolver/-/json-schema-resolver-2.0.0.tgz",
- "integrity": "sha512-pJ4XLQP4Q9HTxl6RVDLJ8Cyh1uitSs0CzDBAz1uoJ4sRD/Bk7cFSXL1FUXDW3zJ7YnfliJx6eu8Jn283bpZ4Yg==",
- "dependencies": {
- "debug": "^4.1.1",
- "rfdc": "^1.1.4",
- "uri-js": "^4.2.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/Eomm/json-schema-resolver?sponsor=1"
- }
- },
"node_modules/json-schema-traverse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
},
"node_modules/json5": {
"version": "2.2.3",
@@ -6514,48 +5190,24 @@
"node": ">=6"
}
},
- "node_modules/jsox": {
- "version": "1.2.125",
- "resolved": "https://registry.npmjs.org/jsox/-/jsox-1.2.125.tgz",
- "integrity": "sha512-HIf1uwublnXZsy7p3yHTrhzMzrLO6xKnqXytT9pEil5QxaXi8eyer7Is4luF5hYSV4kD3v03Y32FWoAeVYTghQ==",
- "bin": {
- "jsox": "lib/cli.js"
- }
- },
"node_modules/kysely": {
- "version": "0.28.15",
- "resolved": "https://registry.npmjs.org/kysely/-/kysely-0.28.15.tgz",
- "integrity": "sha512-r2clcf7HLWvDXaVUEvQymXJY4i3bSOIV3xsL/Upy3ZfSv5HeKsk9tsqbBptLvth5qHEIhxeHTA2jNLyQABkLBA==",
+ "version": "0.29.5",
+ "resolved": "https://registry.npmjs.org/kysely/-/kysely-0.29.5.tgz",
+ "integrity": "sha512-ooa+eSbBNPTo3MycPEuW5jdrxQdQwdtB3LC3h43FiXQbIry5tR0C5lDG7eealK0E4D7XjrnOP5DIUg/LyjRMYQ==",
+ "license": "MIT",
"engines": {
- "node": ">=20.0.0"
+ "node": ">=22.0.0"
}
},
"node_modules/leac": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/leac/-/leac-0.6.0.tgz",
"integrity": "sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==",
+ "license": "MIT",
"funding": {
"url": "https://ko-fi.com/killymxi"
}
},
- "node_modules/libpg-query": {
- "version": "13.6.0",
- "resolved": "https://registry.npmjs.org/libpg-query/-/libpg-query-13.6.0.tgz",
- "integrity": "sha512-zaCGweMgNiPRGRfNVR8wO+XNCl2jZOx8eOXTbaIPgkePI6UJ2FKbHrRSHO5qJSvLxGm5j/5ry7uAdFw3lCn7gw==",
- "dependencies": {
- "@pgsql/types": "^13.11.0"
- }
- },
- "node_modules/light-my-request": {
- "version": "5.14.0",
- "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.14.0.tgz",
- "integrity": "sha512-aORPWntbpH5esaYpGOOmri0OHDOe3wC5M2MQxZ9dvMLZm6DnaAn0kJlcbU9hwsQgLzmZyReKwFwwPkR+nHu5kA==",
- "dependencies": {
- "cookie": "^0.7.0",
- "process-warning": "^3.0.0",
- "set-cookie-parser": "^2.4.1"
- }
- },
"node_modules/lilconfig": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
@@ -6578,6 +5230,7 @@
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "license": "MIT",
"dependencies": {
"js-tokens": "^3.0.0 || ^4.0.0"
},
@@ -6590,6 +5243,7 @@
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"yallist": "^3.0.2"
}
@@ -6598,6 +5252,7 @@
"version": "0.555.0",
"resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.555.0.tgz",
"integrity": "sha512-D8FvHUGbxWBRQM90NZeIyhAvkFfsh3u9ekrMvJ30Z6gnpBHS6HC6ldLg7tL45hwiIz/u66eKDtdA23gwwGsAHA==",
+ "license": "ISC",
"peerDependencies": {
"react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
}
@@ -6606,6 +5261,7 @@
"version": "15.0.12",
"resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz",
"integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==",
+ "license": "MIT",
"bin": {
"marked": "bin/marked.js"
},
@@ -6661,47 +5317,17 @@
"node": ">=8.6"
}
},
- "node_modules/minimatch": {
- "version": "9.0.9",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
- "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
- "dependencies": {
- "brace-expansion": "^2.0.2"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/mnemonist": {
- "version": "0.39.6",
- "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.39.6.tgz",
- "integrity": "sha512-A/0v5Z59y63US00cRSLiloEIw3t5G+MiKz4BhX21FI+YBJXBOGW0ohFxTxO08dsOYlzxo87T7vGfZKYp2bcAWA==",
- "dependencies": {
- "obliterator": "^2.0.1"
- }
- },
- "node_modules/module-details-from-path": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.4.tgz",
- "integrity": "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w=="
- },
- "node_modules/moo": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.3.tgz",
- "integrity": "sha512-m2fmM2dDm7GZQsY7KK2cme8agi+AAljILjQnof7p1ZMDe6dQ4bdnSMx0cPppudoeNv5hEFQirN6u+O4fDE0IWA=="
- },
"node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
},
"node_modules/mutative": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/mutative/-/mutative-1.3.0.tgz",
"integrity": "sha512-8MJj6URmOZAV70dpFe1YnSppRTKC4DsMkXQiBDFayLcDI4ljGokHxmpqaBQuDWa4iAxWaJJ1PS8vAmbntjjKmQ==",
+ "license": "MIT",
"peer": true,
"engines": {
"node": ">=14.0"
@@ -6719,93 +5345,57 @@
}
},
"node_modules/nanoid": {
- "version": "3.3.11",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
- "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
- "dev": true,
+ "version": "5.1.16",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.16.tgz",
+ "integrity": "sha512-kVrnsrJqMR8+oLJnGEmSWw9BivK5mt7H3FZatVRjrc5wGqFYuBxX1yG7+A7Gi5AefkX6t/oCkizcQgpu0cY1dQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
+ "peer": true,
"bin": {
- "nanoid": "bin/nanoid.cjs"
+ "nanoid": "bin/nanoid.js"
},
"engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ "node": "^18 || >=20"
}
},
"node_modules/nanostores": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/nanostores/-/nanostores-1.2.0.tgz",
- "integrity": "sha512-F0wCzbsH80G7XXo0Jd9/AVQC7ouWY6idUCTnMwW5t/Rv9W8qmO6endavDwg7TNp5GbugwSukFMVZqzPSrSMndg==",
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/nanostores/-/nanostores-1.5.3.tgz",
+ "integrity": "sha512-rQLB6eV4f2AW/n3L0JmwCROpaisYy9EDEADvEFSd1C/qG8hB6O5TPlh9A791JRbJr4CnMQBzptDcvD9OR1+6WA==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"engines": {
"node": "^20.0.0 || >=22.0.0"
}
},
- "node_modules/nearley": {
- "version": "2.20.1",
- "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz",
- "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==",
- "dependencies": {
- "commander": "^2.19.0",
- "moo": "^0.5.0",
- "railroad-diagrams": "^1.0.0",
- "randexp": "0.4.6"
- },
- "bin": {
- "nearley-railroad": "bin/nearley-railroad.js",
- "nearley-test": "bin/nearley-test.js",
- "nearley-unparse": "bin/nearley-unparse.js",
- "nearleyc": "bin/nearleyc.js"
- },
- "funding": {
- "type": "individual",
- "url": "https://nearley.js.org/#give-to-nearley"
- }
- },
"node_modules/next-themes": {
"version": "0.4.6",
"resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.6.tgz",
"integrity": "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==",
+ "license": "MIT",
"peerDependencies": {
"react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc",
"react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc"
}
},
- "node_modules/node-abi": {
- "version": "3.89.0",
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.89.0.tgz",
- "integrity": "sha512-6u9UwL0HlAl21+agMN3YAMXcKByMqwGx+pq+P76vii5f7hTPtKDp08/H9py6DY+cfDw7kQNTGEj/rly3IgbNQA==",
- "dependencies": {
- "semver": "^7.3.5"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/node-releases": {
- "version": "2.0.37",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz",
- "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==",
- "dev": true
- },
- "node_modules/node-sql-parser": {
- "version": "4.18.0",
- "resolved": "https://registry.npmjs.org/node-sql-parser/-/node-sql-parser-4.18.0.tgz",
- "integrity": "sha512-2YEOR5qlI1zUFbGMLKNfsrR5JUvFg9LxIRVE+xJe962pfVLH0rnItqLzv96XVs1Y1UIR8FxsXAuvX/lYAWZ2BQ==",
- "dependencies": {
- "big-integer": "^1.6.48"
- },
+ "version": "2.0.55",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.55.tgz",
+ "integrity": "sha512-mIrE/Cw9y+9Au6dS5vDKDhQza9YvG6w+ZrS6X+ZzA7yFW/soAeaups4Qzn1bL6g5FVy8WtP79+0j82oPIbqRjQ==",
+ "dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=18"
}
},
"node_modules/normalize-path": {
@@ -6834,19 +5424,6 @@
"node": ">= 6"
}
},
- "node_modules/obliterator": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.5.tgz",
- "integrity": "sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw=="
- },
- "node_modules/on-exit-leak-free": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz",
- "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==",
- "engines": {
- "node": ">=14.0.0"
- }
- },
"node_modules/openapi-fetch": {
"version": "0.13.8",
"resolved": "https://registry.npmjs.org/openapi-fetch/-/openapi-fetch-0.13.8.tgz",
@@ -6855,11 +5432,6 @@
"openapi-typescript-helpers": "^0.0.15"
}
},
- "node_modules/openapi-types": {
- "version": "12.1.3",
- "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz",
- "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw=="
- },
"node_modules/openapi-typescript": {
"version": "7.13.0",
"resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-7.13.0.tgz",
@@ -6918,6 +5490,7 @@
"version": "0.12.1",
"resolved": "https://registry.npmjs.org/parseley/-/parseley-0.12.1.tgz",
"integrity": "sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==",
+ "license": "MIT",
"dependencies": {
"leac": "^0.6.0",
"peberminta": "^0.9.0"
@@ -6929,33 +5502,35 @@
"node_modules/path-parse": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
},
"node_modules/peberminta": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/peberminta/-/peberminta-0.9.0.tgz",
"integrity": "sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==",
+ "license": "MIT",
"funding": {
"url": "https://ko-fi.com/killymxi"
}
},
"node_modules/pg": {
- "name": "@supabase/pg",
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/@supabase/pg/-/pg-0.0.3.tgz",
- "integrity": "sha512-WW4VdNYQocmcg7dZYk92vHY2nhhMhxoJhZ20m7PzuKe8p4vSdkv2tSM8HUCpZDiLxC6djfVeMk39ukcwEpFdzg==",
+ "version": "8.23.0",
+ "resolved": "https://registry.npmjs.org/pg/-/pg-8.23.0.tgz",
+ "integrity": "sha512-Ip2EQCngowJLGOfCwkFhPXU7/ljlhn6Rxlmy4XYfL2Y+vyRM59+8uR2xqRWKdYmbXmxCFOAmKxBuSUCdF34qLg==",
+ "license": "MIT",
"dependencies": {
- "pg-connection-string": "^2.7.0",
- "pg-pool": "^3.8.0",
- "pg-protocol": "npm:@supabase/pg-protocol@^0.0.2",
- "pg-types": "^2.1.0",
- "pgpass": "1.x"
+ "pg-connection-string": "^2.14.0",
+ "pg-pool": "^3.14.0",
+ "pg-protocol": "^1.16.0",
+ "pg-types": "2.2.0",
+ "pgpass": "1.0.5"
},
"engines": {
- "node": ">= 8.0.0"
+ "node": ">= 16.0.0"
},
"optionalDependencies": {
- "pg-cloudflare": "^1.1.1"
+ "pg-cloudflare": "^1.4.0"
},
"peerDependencies": {
"pg-native": ">=3.0.1"
@@ -6967,20 +5542,23 @@
}
},
"node_modules/pg-cloudflare": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.3.0.tgz",
- "integrity": "sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.4.0.tgz",
+ "integrity": "sha512-Vo7z/6rrQYxpNRylp4Tlob2elzbh+N/MOQbxFVWCxS7oEx6jF53GTJFxK2WWpKuBRkmiin4Mt+xofFDjx09R0A==",
+ "license": "MIT",
"optional": true
},
"node_modules/pg-connection-string": {
- "version": "2.12.0",
- "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.12.0.tgz",
- "integrity": "sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ=="
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.14.0.tgz",
+ "integrity": "sha512-XwWDGcLRGCXAR8F/AM5bG7Q+A3Wm2s6QeEjlOKZLlH3UYcguiqCWKyWXVag5TLTIjR7oOJUY8kcADaZgWPyLeg==",
+ "license": "MIT"
},
"node_modules/pg-format": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/pg-format/-/pg-format-1.0.4.tgz",
"integrity": "sha512-YyKEF78pEA6wwTAqOUaHIN/rWpfzzIuMh9KdAhc3rSLQ/7zkRFcCgYBAEGatDstLyZw4g0s9SNICmaTGnBVeyw==",
+ "license": "MIT",
"engines": {
"node": ">=4.0"
}
@@ -6989,20 +5567,31 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz",
"integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==",
+ "license": "ISC",
"engines": {
"node": ">=4.0.0"
}
},
+ "node_modules/pg-pool": {
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.14.0.tgz",
+ "integrity": "sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "pg": ">=8.0"
+ }
+ },
"node_modules/pg-protocol": {
- "name": "@supabase/pg-protocol",
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/@supabase/pg-protocol/-/pg-protocol-0.0.2.tgz",
- "integrity": "sha512-OLp5LeWRmfJy4vwV753hsCE90vzNSTSAwhsbinCIeoT455DHBufrkktVc4YvPXYEFj+EzpVKw/N0piX+AvBMBg=="
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.16.0.tgz",
+ "integrity": "sha512-sILXutLVjCLjcDuOmvhX5e2Z4cS5qG/6Bu3VkpFwdf/633ElGLpEh9bgmuI5I4sqKqkifQiGyiCcx1HdtrK7tg==",
+ "license": "MIT"
},
"node_modules/pg-types": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz",
"integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==",
+ "license": "MIT",
"dependencies": {
"pg-int8": "1.0.1",
"postgres-array": "~2.0.0",
@@ -7018,77 +5607,20 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz",
"integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==",
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
- "node_modules/pg/node_modules/pg": {
- "version": "8.20.0",
- "resolved": "https://registry.npmjs.org/pg/-/pg-8.20.0.tgz",
- "integrity": "sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==",
- "peer": true,
- "dependencies": {
- "pg-connection-string": "^2.12.0",
- "pg-pool": "^3.13.0",
- "pg-protocol": "^1.13.0",
- "pg-types": "2.2.0",
- "pgpass": "1.0.5"
- },
- "engines": {
- "node": ">= 16.0.0"
- },
- "optionalDependencies": {
- "pg-cloudflare": "^1.3.0"
- },
- "peerDependencies": {
- "pg-native": ">=3.0.1"
- },
- "peerDependenciesMeta": {
- "pg-native": {
- "optional": true
- }
- }
- },
- "node_modules/pg/node_modules/pg-pool": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.13.0.tgz",
- "integrity": "sha512-gB+R+Xud1gLFuRD/QgOIgGOBE2KCQPaPwkzBBGC9oG69pHTkhQeIuejVIk3/cnDyX39av2AxomQiyPT13WKHQA==",
- "peerDependencies": {
- "pg": ">=8.0"
- }
- },
- "node_modules/pg/node_modules/pg/node_modules/pg-protocol": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.13.0.tgz",
- "integrity": "sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==",
- "peer": true
- },
"node_modules/pgpass": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz",
"integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==",
+ "license": "MIT",
"dependencies": {
"split2": "^4.1.0"
}
},
- "node_modules/pgsql-deparser": {
- "version": "13.19.1",
- "resolved": "https://registry.npmjs.org/pgsql-deparser/-/pgsql-deparser-13.19.1.tgz",
- "integrity": "sha512-iCkE5h6wrXtRjT8ygdj7YktDVE3TwTYOLDmpEGT+8WWY47722584Zcr8kN/mk+2nA8mMVqH1Wwzwuu+aAdvjpQ==",
- "dependencies": {
- "@pgsql/types": "^13.11.1"
- }
- },
- "node_modules/pgsql-parser": {
- "version": "13.19.1",
- "resolved": "https://registry.npmjs.org/pgsql-parser/-/pgsql-parser-13.19.1.tgz",
- "integrity": "sha512-px+T9MY97vMzJWupiKSBXONJuQXtP6ix63RDH0xkZWG+Nv0qw45CnfMZrySmNp21YEOXVvlZTNTYN1MxulC6iQ==",
- "dependencies": {
- "@pgsql/types": "13.11.1",
- "libpg-query": "13.6.0",
- "pgsql-deparser": "13.19.1"
- }
- },
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
@@ -7116,55 +5648,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/pino": {
- "version": "9.14.0",
- "resolved": "https://registry.npmjs.org/pino/-/pino-9.14.0.tgz",
- "integrity": "sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w==",
- "dependencies": {
- "@pinojs/redact": "^0.4.0",
- "atomic-sleep": "^1.0.0",
- "on-exit-leak-free": "^2.1.0",
- "pino-abstract-transport": "^2.0.0",
- "pino-std-serializers": "^7.0.0",
- "process-warning": "^5.0.0",
- "quick-format-unescaped": "^4.0.3",
- "real-require": "^0.2.0",
- "safe-stable-stringify": "^2.3.1",
- "sonic-boom": "^4.0.1",
- "thread-stream": "^3.0.0"
- },
- "bin": {
- "pino": "bin.js"
- }
- },
- "node_modules/pino-abstract-transport": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz",
- "integrity": "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==",
- "dependencies": {
- "split2": "^4.0.0"
- }
- },
- "node_modules/pino-std-serializers": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.1.0.tgz",
- "integrity": "sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw=="
- },
- "node_modules/pino/node_modules/process-warning": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz",
- "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fastify"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/fastify"
- }
- ]
- },
"node_modules/pirates": {
"version": "4.0.7",
"resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz",
@@ -7184,9 +5667,9 @@
}
},
"node_modules/postcss": {
- "version": "8.5.9",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.9.tgz",
- "integrity": "sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw==",
+ "version": "8.5.28",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.28.tgz",
+ "integrity": "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==",
"dev": true,
"funding": [
{
@@ -7202,8 +5685,9 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"dependencies": {
- "nanoid": "^3.3.11",
+ "nanoid": "^3.3.18",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
},
@@ -7321,10 +5805,11 @@
}
},
"node_modules/postcss-selector-parser": {
- "version": "6.1.2",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
- "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.4.tgz",
+ "integrity": "sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -7339,10 +5824,30 @@
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
"dev": true
},
+ "node_modules/postcss/node_modules/nanoid": {
+ "version": "3.3.19",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.19.tgz",
+ "integrity": "sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
"node_modules/postgres-array": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-3.0.4.tgz",
"integrity": "sha512-nAUSGfSDGOaOAEGwqsRY27GPOea7CNipJPOA7lPbdEpx5Kg3qzdP0AaWC5MlhTWV9s4hFX39nomVZ+C4tnGOJQ==",
+ "license": "MIT",
"engines": {
"node": ">=12"
}
@@ -7351,6 +5856,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.1.tgz",
"integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -7359,6 +5865,7 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz",
"integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -7367,6 +5874,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz",
"integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==",
+ "license": "MIT",
"dependencies": {
"xtend": "^4.0.0"
},
@@ -7375,9 +5883,10 @@
}
},
"node_modules/prettier": {
- "version": "3.8.2",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.2.tgz",
- "integrity": "sha512-8c3mgTe0ASwWAJK+78dpviD+A8EqhndQPUBpNUIPt6+xWlIigCwfN01lWr9MAede4uqXGTEKeQWTvzb3vjia0Q==",
+ "version": "3.8.1",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz",
+ "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==",
+ "license": "MIT",
"bin": {
"prettier": "bin/prettier.cjs"
},
@@ -7388,102 +5897,49 @@
"url": "https://github.com/prettier/prettier?sponsor=1"
}
},
- "node_modules/prettier-plugin-sql": {
- "version": "0.17.1",
- "resolved": "https://registry.npmjs.org/prettier-plugin-sql/-/prettier-plugin-sql-0.17.1.tgz",
- "integrity": "sha512-CR9UpTkUSC/f69AV597hnYcBo77iUhsBPkUER7BUa4YHRRtRUJGfL5LDoHAlUHWGTZNiJdHHELlzK6I3R9XuAw==",
- "dependencies": {
- "jsox": "^1.2.118",
- "node-sql-parser": "^4.11.0",
- "sql-formatter": "^14.0.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": "^14.18.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/unts"
- },
- "peerDependencies": {
- "prettier": "^3.0.3"
- }
- },
"node_modules/prismjs": {
"version": "1.30.0",
"resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz",
"integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==",
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
- "node_modules/process-warning": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz",
- "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ=="
- },
- "node_modules/prom-client": {
- "version": "14.2.0",
- "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-14.2.0.tgz",
- "integrity": "sha512-sF308EhTenb/pDRPakm+WgiN+VdM/T1RaHj1x+MvAuT8UiQP8JmOEbxVqtkbfR4LrvOg5n7ic01kRBDGXjYikA==",
- "dependencies": {
- "tdigest": "^0.1.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/prop-types": {
"version": "15.8.1",
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
"integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
+ "license": "MIT",
"dependencies": {
"loose-envify": "^1.4.0",
"object-assign": "^4.1.1",
"react-is": "^16.13.1"
}
},
- "node_modules/proxy-addr": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
- "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
- "dependencies": {
- "forwarded": "0.2.0",
- "ipaddr.js": "1.9.1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/punycode": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
- "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/pvtsutils": {
"version": "1.3.6",
"resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz",
"integrity": "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==",
- "peer": true,
+ "license": "MIT",
"dependencies": {
"tslib": "^2.8.1"
}
},
"node_modules/pvutils": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.5.tgz",
- "integrity": "sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==",
- "peer": true,
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.2.0.tgz",
+ "integrity": "sha512-BbubeCEyTuQjVMakvJQ/Sxbc93F2pwmbsxONT/ZRrwU7Ua38d8unYTwXpTVLAKJ4BDuH9IGztCjQcd/N/39Dvg==",
+ "license": "MIT",
"engines": {
"node": ">=16.0.0"
}
},
- "node_modules/qr.js": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/qr.js/-/qr.js-0.0.0.tgz",
- "integrity": "sha512-c4iYnWb+k2E+vYpRimHqSu575b1/wKl4XFeJGpFmrJQz5I88v9aY2czh7s0w36srfCM1sXgC/xpoJz5dJfq+OQ=="
+ "node_modules/qrcode-generator": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/qrcode-generator/-/qrcode-generator-2.0.4.tgz",
+ "integrity": "sha512-mZSiP6RnbHl4xL2Ap5HfkjLnmxfKcPWpWe/c+5XxCuetEenqmNFf1FH/ftXPCtFG5/TDobjsjz6sSNL0Sr8Z9g==",
+ "license": "MIT"
},
"node_modules/queue-microtask": {
"version": "1.2.3",
@@ -7505,40 +5961,11 @@
}
]
},
- "node_modules/quick-format-unescaped": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz",
- "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg=="
- },
- "node_modules/railroad-diagrams": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz",
- "integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A=="
- },
- "node_modules/randexp": {
- "version": "0.4.6",
- "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz",
- "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==",
- "dependencies": {
- "discontinuous-range": "1.0.0",
- "ret": "~0.1.10"
- },
- "engines": {
- "node": ">=0.12"
- }
- },
- "node_modules/randexp/node_modules/ret": {
- "version": "0.1.15",
- "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
- "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
- "engines": {
- "node": ">=0.12"
- }
- },
"node_modules/react": {
- "version": "19.2.5",
- "resolved": "https://registry.npmjs.org/react/-/react-19.2.5.tgz",
- "integrity": "sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==",
+ "version": "19.3.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-19.3.0.tgz",
+ "integrity": "sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==",
+ "license": "MIT",
"peer": true,
"engines": {
"node": ">=0.10.0"
@@ -7548,6 +5975,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/react-async-script/-/react-async-script-1.2.0.tgz",
"integrity": "sha512-bCpkbm9JiAuMGhkqoAiC0lLkb40DJ0HOEJIku+9JDjxX3Rcs+ztEOG13wbrOskt3n2DTrjshhaQ/iay+SnGg5Q==",
+ "license": "MIT",
"dependencies": {
"hoist-non-react-statics": "^3.3.0",
"prop-types": "^15.5.0"
@@ -7557,21 +5985,23 @@
}
},
"node_modules/react-dom": {
- "version": "19.2.5",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.5.tgz",
- "integrity": "sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==",
+ "version": "19.3.0",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.3.0.tgz",
+ "integrity": "sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==",
+ "license": "MIT",
"peer": true,
"dependencies": {
- "scheduler": "^0.27.0"
+ "scheduler": "^0.28.0"
},
"peerDependencies": {
- "react": "^19.2.5"
+ "react": "^19.3.0"
}
},
"node_modules/react-google-recaptcha": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/react-google-recaptcha/-/react-google-recaptcha-3.1.0.tgz",
"integrity": "sha512-cYW2/DWas8nEKZGD7SCu9BSuVz8iOcOLHChHyi7upUuVhkpkhYG/6N3KDiTQ3XAiZ2UAZkfvYKMfAHOzBOcGEg==",
+ "license": "MIT",
"dependencies": {
"prop-types": "^15.5.0",
"react-async-script": "^1.2.0"
@@ -7581,9 +6011,10 @@
}
},
"node_modules/react-hook-form": {
- "version": "7.72.1",
- "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.72.1.tgz",
- "integrity": "sha512-RhwBoy2ygeVZje+C+bwJ8g0NjTdBmDlJvAUHTxRjTmSUKPYsKfMphkS2sgEMotsY03bP358yEYlnUeZy//D9Ig==",
+ "version": "7.87.0",
+ "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.87.0.tgz",
+ "integrity": "sha512-zhFzWvLxNHH+8839OnZcUxgMZw88ah2jZWDWvKWgF3Tpbnd0vKL+dlcuU3nZVWESZQjd81EW8K+wU+cYfYAc0w==",
+ "license": "MIT",
"engines": {
"node": ">=18.0.0"
},
@@ -7598,15 +6029,17 @@
"node_modules/react-is": {
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+ "license": "MIT"
},
"node_modules/react-qr-code": {
- "version": "2.0.18",
- "resolved": "https://registry.npmjs.org/react-qr-code/-/react-qr-code-2.0.18.tgz",
- "integrity": "sha512-v1Jqz7urLMhkO6jkgJuBYhnqvXagzceg3qJUWayuCK/c6LTIonpWbwxR1f1APGd4xrW/QcQEovNrAojbUz65Tg==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/react-qr-code/-/react-qr-code-2.2.0.tgz",
+ "integrity": "sha512-e5nS0UUN22K3Nf8KBRUzemfdJ6OmnN5w+kbnj1lvJaol9RyVRFeGl05bCkxSN2ZegbLxjjYjX1+mmAoX9+fAhw==",
+ "license": "MIT",
"dependencies": {
"prop-types": "^15.8.1",
- "qr.js": "0.0.0"
+ "qrcode-generator": "^2.0.4"
},
"peerDependencies": {
"react": "*"
@@ -7616,6 +6049,7 @@
"version": "2.7.2",
"resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.2.tgz",
"integrity": "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==",
+ "license": "MIT",
"dependencies": {
"react-remove-scroll-bar": "^2.3.7",
"react-style-singleton": "^2.2.3",
@@ -7640,6 +6074,7 @@
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz",
"integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==",
+ "license": "MIT",
"dependencies": {
"react-style-singleton": "^2.2.2",
"tslib": "^2.0.0"
@@ -7661,6 +6096,7 @@
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz",
"integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==",
+ "license": "MIT",
"dependencies": {
"get-nonce": "^1.0.0",
"tslib": "^2.0.0"
@@ -7699,45 +6135,26 @@
"node": ">=8.10.0"
}
},
- "node_modules/real-require": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz",
- "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==",
- "engines": {
- "node": ">= 12.13.0"
- }
- },
"node_modules/reflect-metadata": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz",
"integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==",
- "peer": true
+ "license": "Apache-2.0"
},
"node_modules/require-from-string": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "dev": true,
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/require-in-the-middle": {
- "version": "7.5.2",
- "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.5.2.tgz",
- "integrity": "sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==",
- "dependencies": {
- "debug": "^4.3.5",
- "module-details-from-path": "^1.0.3",
- "resolve": "^1.22.8"
- },
- "engines": {
- "node": ">=8.6.0"
- }
- },
"node_modules/resolve": {
"version": "1.22.11",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz",
"integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==",
+ "dev": true,
"dependencies": {
"is-core-module": "^2.16.1",
"path-parse": "^1.0.7",
@@ -7753,28 +6170,16 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/ret": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/ret/-/ret-0.4.3.tgz",
- "integrity": "sha512-0f4Memo5QP7WQyUEAYUO3esD/XjOc3Zjjg5CPsAq1p8sIu0XPeMbHJemKA0BO7tV0X7+A0FoEpbmHXWxPyD3wQ==",
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/reusify": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
"integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
+ "dev": true,
"engines": {
"iojs": ">=1.0.0",
"node": ">=0.10.0"
}
},
- "node_modules/rfdc": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz",
- "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="
- },
"node_modules/rollup": {
"version": "4.60.1",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.1.tgz",
@@ -7822,7 +6227,8 @@
"node_modules/rou3": {
"version": "0.7.12",
"resolved": "https://registry.npmjs.org/rou3/-/rou3-0.7.12.tgz",
- "integrity": "sha512-iFE4hLDuloSWcD7mjdCDhx2bKcIsYbtOTpfH5MHHLSKMOUyjqQXTeZVa289uuwEGEKFoE/BAPbhaU4B774nceg=="
+ "integrity": "sha512-iFE4hLDuloSWcD7mjdCDhx2bKcIsYbtOTpfH5MHHLSKMOUyjqQXTeZVa289uuwEGEKFoE/BAPbhaU4B774nceg==",
+ "license": "MIT"
},
"node_modules/run-parallel": {
"version": "1.2.0",
@@ -7847,37 +6253,18 @@
"queue-microtask": "^1.2.2"
}
},
- "node_modules/safe-regex2": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-3.1.0.tgz",
- "integrity": "sha512-RAAZAGbap2kBfbVhvmnTFv73NWLMvDGOITFYTZBAaY8eR+Ir4ef7Up/e7amo+y1+AH+3PtLkrt9mvcTsG9LXug==",
- "dependencies": {
- "ret": "~0.4.0"
- }
- },
- "node_modules/safe-stable-stringify": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz",
- "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==",
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/scheduler": {
- "version": "0.27.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
- "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==",
+ "version": "0.28.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.28.0.tgz",
+ "integrity": "sha512-juorfCmIkIw8tT+p5BXSm6PJjQF/ycEYmKyzURCIt/RaZIhL+PulbQ9Yu2z1HdOJDdqDTlxA1+xKBmHXJsczAw==",
+ "license": "MIT",
"peer": true
},
- "node_modules/secure-json-parse": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz",
- "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw=="
- },
"node_modules/selderee": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/selderee/-/selderee-0.11.0.tgz",
"integrity": "sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==",
+ "license": "MIT",
"dependencies": {
"parseley": "^0.12.0"
},
@@ -7885,21 +6272,11 @@
"url": "https://ko-fi.com/killymxi"
}
},
- "node_modules/semver": {
- "version": "7.7.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
- "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/seroval": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/seroval/-/seroval-1.5.2.tgz",
- "integrity": "sha512-xcRN39BdsnO9Tf+VzsE7b3JyTJASItIV1FVFewJKCFcW4s4haIKS3e6vj8PGB9qBwC7tnuOywQMdv5N4qkzi7Q==",
+ "version": "1.5.6",
+ "resolved": "https://registry.npmjs.org/seroval/-/seroval-1.5.6.tgz",
+ "integrity": "sha512-rVQVWjjSvlINzaQPZH5JFqsqEsIWdTxY3iJZCnTL/5gQbXIRooVZKI60tVCkOVfzcRPejboxO2t0P89dg5mQaA==",
+ "license": "MIT",
"engines": {
"node": ">=10"
}
@@ -7916,14 +6293,10 @@
}
},
"node_modules/set-cookie-parser": {
- "version": "2.7.2",
- "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz",
- "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw=="
- },
- "node_modules/shimmer": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz",
- "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw=="
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-3.1.2.tgz",
+ "integrity": "sha512-5/r/lTwbJ3zQ+qwdUFZYeRNqda7P5HD8zQKqlSjdGt1/S0cjLAphHusj4Y58ahDtWn/g32xrIS58/ikOvwl0Lw==",
+ "license": "MIT"
},
"node_modules/solid-js": {
"version": "1.9.12",
@@ -7949,27 +6322,27 @@
"solid-js": "^1.3"
}
},
- "node_modules/sonic-boom": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.1.tgz",
- "integrity": "sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==",
- "dependencies": {
- "atomic-sleep": "^1.0.0"
- }
- },
"node_modules/sonner": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/sonner/-/sonner-2.0.7.tgz",
- "integrity": "sha512-W6ZN4p58k8aDKA4XPcx2hpIQXBRAgyiWVkYhT7CvK6D3iAu7xjvVyhQHg2/iaKJZ1XVJ4r7XuwGL+WGEK37i9w==",
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/sonner/-/sonner-2.0.8.tgz",
+ "integrity": "sha512-UM/ByIoFra8yzV75n1o0Puu0bw5U/9UNnDacrJNspekBewIfsQ3D6ez1nvlWpt7aTsO6rujQtifBpycwIivqlg==",
+ "license": "MIT",
"peerDependencies": {
+ "@types/react": "^18.0.0 || ^19.0.0",
"react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc",
"react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
"node_modules/sorted-btree": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/sorted-btree/-/sorted-btree-1.8.1.tgz",
"integrity": "sha512-395+XIP+wqNn3USkFSrNz7G3Ss/MXlZEqesxvzCRFwL14h6e8LukDHdLBePn5pwbm5OQ9vGu8mDyz2lLDIqamQ==",
+ "license": "MIT",
"peer": true
},
"node_modules/source-map-js": {
@@ -7985,23 +6358,11 @@
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
"integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
+ "license": "ISC",
"engines": {
"node": ">= 10.x"
}
},
- "node_modules/sql-formatter": {
- "version": "14.0.0",
- "resolved": "https://registry.npmjs.org/sql-formatter/-/sql-formatter-14.0.0.tgz",
- "integrity": "sha512-VcHYMRvZqg3RNjjxNB/puT9O1hR5QLXTvgTaBtxXcvmRQwSnH9M+oW2Ti+uFuVVU8HoNlOjU2uKHv8c0FQNsdQ==",
- "dependencies": {
- "argparse": "^2.0.1",
- "get-stdin": "=8.0.0",
- "nearley": "^2.20.1"
- },
- "bin": {
- "sql-formatter": "bin/sql-formatter-cli.cjs"
- }
- },
"node_modules/sucrase": {
"version": "3.35.1",
"resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz",
@@ -8037,6 +6398,7 @@
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.6.tgz",
"integrity": "sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==",
+ "license": "MIT",
"peer": true,
"dependencies": {
"copy-anything": "^4"
@@ -8061,6 +6423,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
"engines": {
"node": ">= 0.4"
},
@@ -8069,9 +6432,10 @@
}
},
"node_modules/tailwind-merge": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.5.0.tgz",
- "integrity": "sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A==",
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.6.0.tgz",
+ "integrity": "sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w==",
+ "license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/dcastil"
@@ -8114,14 +6478,6 @@
"node": ">=14.0.0"
}
},
- "node_modules/tdigest": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/tdigest/-/tdigest-0.1.2.tgz",
- "integrity": "sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==",
- "dependencies": {
- "bintrees": "1.0.2"
- }
- },
"node_modules/thenify": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
@@ -8143,14 +6499,6 @@
"node": ">=0.8"
}
},
- "node_modules/thread-stream": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz",
- "integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==",
- "dependencies": {
- "real-require": "^0.2.0"
- }
- },
"node_modules/tinyglobby": {
"version": "0.2.16",
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz",
@@ -8208,14 +6556,6 @@
"node": ">=8.0"
}
},
- "node_modules/toad-cache": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/toad-cache/-/toad-cache-3.7.0.tgz",
- "integrity": "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==",
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/ts-interface-checker": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
@@ -8225,13 +6565,14 @@
"node_modules/tslib": {
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
- "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "license": "0BSD"
},
"node_modules/tsyringe": {
"version": "4.10.0",
"resolved": "https://registry.npmjs.org/tsyringe/-/tsyringe-4.10.0.tgz",
"integrity": "sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==",
- "peer": true,
+ "license": "MIT",
"dependencies": {
"tslib": "^1.9.3"
},
@@ -8243,12 +6584,13 @@
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "peer": true
+ "license": "0BSD"
},
"node_modules/tw-animate-css": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/tw-animate-css/-/tw-animate-css-1.4.0.tgz",
"integrity": "sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==",
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/Wombosvideo"
}
@@ -8294,12 +6636,13 @@
"type": "paypal",
"url": "https://paypal.me/faisalman"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/ua-parser-js": {
- "version": "2.0.9",
- "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-2.0.9.tgz",
- "integrity": "sha512-OsqGhxyo/wGdLSXMSJxuMGN6H4gDnKz6Fb3IBm4bxZFMnyy0sdf6MN96Ie8tC6z/btdO+Bsy8guxlvLdwT076w==",
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-2.0.10.tgz",
+ "integrity": "sha512-t+3Ktbq0Ies2vaSezfOaWiolH4OigQIO1dk+1xDpOydB1COVPocVYOrEV5rqZ0kFY9XYG1v9LutCyMgYBpABcw==",
"funding": [
{
"type": "opencollective",
@@ -8314,6 +6657,7 @@
"url": "https://github.com/sponsors/faisalman"
}
],
+ "license": "AGPL-3.0-or-later",
"dependencies": {
"detect-europe-js": "^0.1.2",
"is-standalone-pwa": "^0.1.1",
@@ -8329,12 +6673,13 @@
"node_modules/undici-types": {
"version": "7.16.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz",
- "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="
+ "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==",
+ "dev": true
},
"node_modules/update-browserslist-db": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
- "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.3.tgz",
+ "integrity": "sha512-pJ2sYawQS0R/WI928Gj5GlPhTGzbMelq0+4INtSYNDV9ErKJcX6xjGWkoG/VnB3dpUm00zALaqkrUD77pO5TDQ==",
"dev": true,
"funding": [
{
@@ -8350,6 +6695,7 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"dependencies": {
"escalade": "^3.2.0",
"picocolors": "^1.1.1"
@@ -8361,14 +6707,6 @@
"browserslist": ">= 4.21.0"
}
},
- "node_modules/uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
"node_modules/uri-js-replace": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/uri-js-replace/-/uri-js-replace-1.0.1.tgz",
@@ -8379,6 +6717,7 @@
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz",
"integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==",
+ "license": "MIT",
"dependencies": {
"tslib": "^2.0.0"
},
@@ -8399,6 +6738,7 @@
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz",
"integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==",
+ "license": "MIT",
"dependencies": {
"detect-node-es": "^1.1.0",
"tslib": "^2.0.0"
@@ -8416,14 +6756,6 @@
}
}
},
- "node_modules/use-sync-external-store": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz",
- "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==",
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
- }
- },
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -8431,13 +6763,14 @@
"dev": true
},
"node_modules/uuid": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz",
- "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==",
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.1.tgz",
+ "integrity": "sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==",
"funding": [
"https://github.com/sponsors/broofa",
"https://github.com/sponsors/ctavan"
],
+ "license": "MIT",
"peer": true,
"bin": {
"uuid": "dist/esm/bin/uuid"
@@ -8447,6 +6780,7 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vaul/-/vaul-1.1.2.tgz",
"integrity": "sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA==",
+ "license": "MIT",
"dependencies": {
"@radix-ui/react-dialog": "^1.1.1"
},
@@ -8456,12 +6790,13 @@
}
},
"node_modules/vite": {
- "version": "7.3.2",
- "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.2.tgz",
- "integrity": "sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==",
+ "version": "7.3.6",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.6.tgz",
+ "integrity": "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "esbuild": "^0.27.0",
+ "esbuild": "^0.27.0 || ^0.28.0",
"fdir": "^6.5.0",
"picomatch": "^4.0.3",
"postcss": "^8.5.6",
@@ -8600,6 +6935,7 @@
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
"integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
+ "license": "MIT",
"dependencies": {
"loose-envify": "^1.0.0"
}
@@ -8608,12 +6944,14 @@
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.5.0.tgz",
"integrity": "sha512-RiMReJrTAiA+mBjGONMnjVDP2u3p9R1vkcGz6gDIrOMT3oGuYwX2WRMYI9ipkphSuE5XKEhydbhNEJh4NY9mlw==",
+ "license": "Apache-2.0",
"peer": true
},
"node_modules/xtend": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "license": "MIT",
"engines": {
"node": ">=0.4"
}
@@ -8622,21 +6960,8 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true
- },
- "node_modules/yaml": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz",
- "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==",
- "bin": {
- "yaml": "bin.mjs"
- },
- "engines": {
- "node": ">= 14.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/eemeli"
- }
+ "dev": true,
+ "license": "ISC"
},
"node_modules/yaml-ast-parser": {
"version": "0.0.43",
@@ -8657,6 +6982,7 @@
"version": "4.1.12",
"resolved": "https://registry.npmjs.org/zod/-/zod-4.1.12.tgz",
"integrity": "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==",
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
diff --git a/package.json b/package.json
index 6e032b6..9cb82ad 100644
--- a/package.json
+++ b/package.json
@@ -15,7 +15,6 @@
"build:backend": "cd apps/backend && go build ./...",
"test:backend": "cd apps/backend && go test ./...",
"test": "npm run test:backend",
- "db:generate": "cd apps/backend && go run github.com/sqlc-dev/sqlc/cmd/sqlc@v1.30.0 generate -f sqlc.yaml",
"db:migrate:up": "cd apps/backend && go run github.com/pressly/goose/v3/cmd/goose@v3.24.1 -dir migrations postgres \"$BOOKRA_DATABASE_DIRECT_URL\" up",
"db:migrate:status": "cd apps/backend && go run github.com/pressly/goose/v3/cmd/goose@v3.24.1 -dir migrations postgres \"$BOOKRA_DATABASE_DIRECT_URL\" status",
"lint:frontend": "npm run lint --workspace @bookra/frontend",
diff --git a/packages/api-client/src/generated/types.ts b/packages/api-client/src/generated/types.ts
index b0b658a..9bf5dd2 100644
--- a/packages/api-client/src/generated/types.ts
+++ b/packages/api-client/src/generated/types.ts
@@ -15,6 +15,166 @@ export interface paths {
patch?: never;
trace?: never;
};
+ "/v1/admin/stats": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["getAdminStats"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v1/admin/tenants": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["listAdminTenants"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v1/admin/trigger-trial-emails": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["triggerTrialEmails"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v1/admin/users": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["listAdminUsers"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v1/admin/users/{userID}/role": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put: operations["updateUserRole"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v1/auth/login": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["login"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v1/auth/magic-link": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["requestMagicLink"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v1/auth/refresh": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["refreshTokens"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v1/auth/register": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["register"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v1/auth/verify": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["verifyMagicLink"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
"/v1/billing/checkout": {
parameters: {
query?: never;
@@ -79,6 +239,150 @@ export interface paths {
patch?: never;
trace?: never;
};
+ "/v1/catalog/blocked-days": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["listBlockedDays"];
+ put?: never;
+ post: operations["createBlockedDay"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v1/catalog/blocked-days/{blockedDayID}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put: operations["updateBlockedDay"];
+ post?: never;
+ delete: operations["deleteBlockedDay"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v1/catalog/bookings": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["createDashboardBooking"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v1/catalog/customers": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["listCustomers"];
+ put?: never;
+ post: operations["createCustomer"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v1/catalog/customers/{customerID}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put: operations["updateCustomer"];
+ post?: never;
+ delete: operations["deleteCustomer"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v1/catalog/locations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["listLocations"];
+ put?: never;
+ post: operations["createLocation"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v1/catalog/locations/{locationID}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put: operations["updateLocation"];
+ post?: never;
+ delete: operations["deleteLocation"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v1/catalog/working-hours": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["listWorkingHours"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v1/catalog/working-hours/{dayOfWeek}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put: operations["updateWorkingHours"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
"/v1/dashboard/summary": {
parameters: {
query?: never;
@@ -111,6 +415,22 @@ export interface paths {
patch?: never;
trace?: never;
};
+ "/v1/internal/jobs/sms/invoices": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["generateSmsInvoices"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
"/v1/meta/config": {
parameters: {
query?: never;
@@ -143,6 +463,70 @@ export interface paths {
patch?: never;
trace?: never;
};
+ "/v1/public/bookings/{reference}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["getBookingByReference"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v1/public/bookings/{reference}/cancel": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["cancelBooking"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v1/public/bookings/{reference}/reschedule": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["rescheduleBooking"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v1/public/contact": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["submitContactForm"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
"/v1/public/tenants/{tenantSlug}/availability": {
parameters: {
query?: never;
@@ -159,6 +543,102 @@ export interface paths {
patch?: never;
trace?: never;
};
+ "/v1/public/widget.js": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["getWidgetScript"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v1/sms/history": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["getSmsHistory"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v1/sms/invoices": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["listSmsInvoices"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v1/sms/send": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["sendSms"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v1/sms/settings": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["getSmsSettings"];
+ put?: never;
+ post: operations["updateSmsSettings"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v1/sms/usage": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["getSmsUsage"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
"/v1/tenants/bootstrap": {
parameters: {
query?: never;
@@ -175,6 +655,54 @@ export interface paths {
patch?: never;
trace?: never;
};
+ "/v1/tenants/brand": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put: operations["updateTenantBrand"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v1/tenants/email-template": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put: operations["updateEmailTemplate"];
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/v1/tenants/email-templates": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["listEmailTemplates"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
"/v1/tenants/onboard": {
parameters: {
query?: never;
@@ -191,7 +719,7 @@ export interface paths {
patch?: never;
trace?: never;
};
- "/v1/webhooks/paddle": {
+ "/v1/webhooks/stripe": {
parameters: {
query?: never;
header?: never;
@@ -200,7 +728,7 @@ export interface paths {
};
get?: never;
put?: never;
- post: operations["handlePaddleWebhook"];
+ post: operations["handleStripeWebhook"];
delete?: never;
options?: never;
head?: never;
@@ -211,6 +739,16 @@ export interface paths {
export type webhooks = Record;
export interface components {
schemas: {
+ AuthResponse: {
+ accessToken: string;
+ expiresIn?: number;
+ refreshToken: string;
+ user?: {
+ email?: string;
+ id?: string;
+ name?: string;
+ };
+ };
AvailabilityBlockRequest: {
busy?: boolean;
dayOfWeek: number;
@@ -219,6 +757,15 @@ export interface components {
/** @example 09:00 */
startsLocal: string;
};
+ BlockedDay: {
+ /** Format: date-time */
+ date: string;
+ /** Format: uuid */
+ id: string;
+ reason?: string;
+ /** @enum {string} */
+ type: "closure" | "holiday" | "maintenance";
+ };
BookingDefaultsRequest: {
bufferAfterMinutes?: number;
bufferBeforeMinutes?: number;
@@ -232,11 +779,7 @@ export interface components {
primaryColor?: string;
siteUrl?: string;
};
- /**
- * @description Checkout launch response supporting both Stripe and Paddle providers.
- * For Stripe: checkoutUrl is returned (redirect-based checkout).
- * For Paddle: priceId, customerId, customerEmail, customData are returned (client-side checkout).
- */
+ /** @description Stripe checkout launch payload — redirect the user to checkoutUrl. */
CheckoutLaunchResponse: {
/**
* Format: uri
@@ -248,19 +791,6 @@ export interface components {
* @description Stripe checkout URL (redirect the user to this URL)
*/
checkoutUrl?: string;
- /** @description Custom metadata for Paddle checkout */
- customData?: {
- [key: string]: string;
- };
- /**
- * Format: email
- * @description Customer email for Paddle checkout
- */
- customerEmail?: string;
- /** @description Paddle customer ID */
- customerId?: string;
- /** @description Paddle price ID for client-side checkout */
- priceId?: string;
/**
* Format: uri
* @description URL to redirect after successful checkout
@@ -309,10 +839,37 @@ export interface components {
CreateBookingResponse: {
/** Format: uuid */
bookingId: string;
+ /** @description Token required to view/reschedule/cancel the booking */
+ manageToken?: string;
reference: string;
/** @enum {string} */
status: "confirmed" | "waitlisted";
};
+ Customer: {
+ bookingsCount?: number;
+ /** Format: email */
+ email: string;
+ /** Format: uuid */
+ id: string;
+ /** Format: date-time */
+ lastBookingAt?: string | null;
+ name: string;
+ notes?: string;
+ phone?: string;
+ };
+ DashboardBookingRequest: {
+ /** Format: email */
+ customerEmail: string;
+ customerName: string;
+ customerPhone?: string;
+ /** Format: uuid */
+ locationId?: string;
+ notes?: string;
+ /** Format: uuid */
+ serviceId?: string;
+ /** Format: date-time */
+ startsAt: string;
+ };
DashboardKPI: {
code: string;
label: string;
@@ -339,6 +896,13 @@ export interface components {
processedCount: number;
sentCount: number;
};
+ EmailTemplate: {
+ bodyText?: string;
+ isEnabled?: boolean;
+ subject?: string;
+ /** @enum {string} */
+ type?: "confirmation" | "reminder" | "reschedule" | "cancellation";
+ };
HealthResponse: {
databaseConfigured?: boolean;
/** @example staging */
@@ -346,6 +910,15 @@ export interface components {
/** @example ok */
status: string;
};
+ Location: {
+ address?: string;
+ capacity?: number;
+ /** Format: uuid */
+ id: string;
+ name: string;
+ /** @enum {string} */
+ type?: "room" | "private" | "hall";
+ };
OnboardTenantRequest: {
availabilityBlocks?: components["schemas"]["AvailabilityBlockRequest"][];
bookingDefaults?: components["schemas"]["BookingDefaultsRequest"];
@@ -379,6 +952,7 @@ export interface components {
PlanEntitlements: {
advancedReporting: boolean;
emailReminders: boolean;
+ maxBookingsMonth?: number;
maxLocations: number;
maxStaff: number;
umamiTracking: boolean;
@@ -421,7 +995,7 @@ export interface components {
planCode: string;
portalAvailable: boolean;
priceId: string;
- /** @example paddle */
+ /** @example stripe */
provider: string;
status: string;
subscriptionId: string;
@@ -483,19 +1057,77 @@ export interface components {
customerName?: string;
/** Format: date-time */
endsAt?: string;
+ /** Format: uuid */
+ id?: string;
label?: string;
+ location?: string;
+ notes?: string;
reference?: string;
+ service?: string;
/** Format: date-time */
startsAt?: string;
status?: string;
};
+ UpdateBrandRequest: {
+ logoUrl?: string;
+ name?: string;
+ primaryColor?: string;
+ siteUrl?: string;
+ };
+ UpdateEmailTemplateRequest: {
+ body?: string;
+ isEnabled?: boolean;
+ subject?: string;
+ /** @enum {string} */
+ type: "confirmation" | "reminder" | "reschedule" | "cancellation";
+ };
+ UpdateWorkingHoursRequest: {
+ /** @example 18:00 */
+ close?: string;
+ isOpen?: boolean;
+ /** @example 09:00 */
+ open?: string;
+ };
+ UpsertBlockedDayRequest: {
+ /** Format: date-time */
+ date: string;
+ reason?: string;
+ /** @enum {string} */
+ type: "closure" | "holiday" | "maintenance";
+ };
+ UpsertCustomerRequest: {
+ /** Format: email */
+ email: string;
+ name: string;
+ notes?: string;
+ phone?: string;
+ };
+ UpsertLocationRequest: {
+ address?: string;
+ capacity?: number;
+ name: string;
+ /** @enum {string} */
+ type?: "room" | "private" | "hall";
+ };
WidgetSnippet: {
code?: string;
kind?: string;
};
+ WorkingHours: {
+ /** @example 18:00 */
+ close?: string;
+ dayOfWeek?: number;
+ isOpen?: boolean;
+ /** @example 09:00 */
+ open?: string;
+ };
};
responses: never;
- parameters: never;
+ parameters: {
+ blockedDayID: string;
+ customerID: string;
+ locationID: string;
+ };
requestBodies: never;
headers: never;
pathItems: never;
@@ -522,6 +1154,309 @@ export interface operations {
};
};
};
+ getAdminStats: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Platform statistics */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ listAdminTenants: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description All tenants */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ triggerTrialEmails: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Trial emails triggered */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ listAdminUsers: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description All users */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ updateUserRole: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ userID: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @enum {string} */
+ role: "owner" | "staff" | "admin";
+ };
+ };
+ };
+ responses: {
+ /** @description Role updated */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Forbidden */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ login: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** Format: email */
+ email: string;
+ password: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Login succeeded */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["AuthResponse"];
+ };
+ };
+ /** @description Invalid credentials */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ requestMagicLink: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** Format: email */
+ email: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Magic link issued (always 200 to prevent enumeration) */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ refreshTokens: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ refreshToken: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Tokens rotated */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["AuthResponse"];
+ };
+ };
+ /** @description Invalid refresh token */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ register: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** Format: email */
+ email: string;
+ name?: string;
+ password: string;
+ };
+ };
+ };
+ responses: {
+ /** @description User created */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["AuthResponse"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Email already registered */
+ 409: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ verifyMagicLink: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ token: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Token verified */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["AuthResponse"];
+ };
+ };
+ /** @description Invalid or expired token */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
createBillingCheckout: {
parameters: {
query?: never;
@@ -535,7 +1470,7 @@ export interface operations {
};
};
responses: {
- /** @description Paddle checkout launch payload */
+ /** @description Stripe checkout session */
200: {
headers: {
[name: string]: unknown;
@@ -576,7 +1511,7 @@ export interface operations {
};
requestBody?: never;
responses: {
- /** @description Paddle customer portal session */
+ /** @description Stripe customer portal session */
200: {
headers: {
[name: string]: unknown;
@@ -669,6 +1604,431 @@ export interface operations {
};
};
};
+ listBlockedDays: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Blocked days */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BlockedDay"][];
+ };
+ };
+ };
+ };
+ createBlockedDay: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpsertBlockedDayRequest"];
+ };
+ };
+ responses: {
+ /** @description Blocked day created */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BlockedDay"];
+ };
+ };
+ };
+ };
+ updateBlockedDay: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ blockedDayID: components["parameters"]["blockedDayID"];
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpsertBlockedDayRequest"];
+ };
+ };
+ responses: {
+ /** @description Blocked day updated */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BlockedDay"];
+ };
+ };
+ /** @description Not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ deleteBlockedDay: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ blockedDayID: components["parameters"]["blockedDayID"];
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Blocked day deleted */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ createDashboardBooking: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["DashboardBookingRequest"];
+ };
+ };
+ responses: {
+ /** @description Booking created */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["UpcomingBooking"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Conflict with existing booking */
+ 409: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ listCustomers: {
+ parameters: {
+ query?: {
+ limit?: number;
+ query?: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Tenant customers */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Customer"][];
+ };
+ };
+ };
+ };
+ createCustomer: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpsertCustomerRequest"];
+ };
+ };
+ responses: {
+ /** @description Customer created */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Customer"];
+ };
+ };
+ };
+ };
+ updateCustomer: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ customerID: components["parameters"]["customerID"];
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpsertCustomerRequest"];
+ };
+ };
+ responses: {
+ /** @description Customer updated */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Customer"];
+ };
+ };
+ /** @description Not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ deleteCustomer: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ customerID: components["parameters"]["customerID"];
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Customer deleted */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ listLocations: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Tenant locations */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Location"][];
+ };
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ createLocation: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpsertLocationRequest"];
+ };
+ };
+ responses: {
+ /** @description Location created */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Location"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Plan limit reached */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ updateLocation: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ locationID: components["parameters"]["locationID"];
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpsertLocationRequest"];
+ };
+ };
+ responses: {
+ /** @description Location updated */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Location"];
+ };
+ };
+ /** @description Location not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ deleteLocation: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ locationID: components["parameters"]["locationID"];
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Location deleted */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Location not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ listWorkingHours: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Weekly working hours */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["WorkingHours"][];
+ };
+ };
+ };
+ };
+ updateWorkingHours: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ dayOfWeek: number;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateWorkingHoursRequest"];
+ };
+ };
+ responses: {
+ /** @description Working hours updated */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
getDashboardSummary: {
parameters: {
query?: never;
@@ -727,6 +2087,31 @@ export interface operations {
};
};
};
+ generateSmsInvoices: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Monthly SMS invoices generated */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
getPublicConfig: {
parameters: {
query?: never;
@@ -769,6 +2154,154 @@ export interface operations {
"application/json": components["schemas"]["CreateBookingResponse"];
};
};
+ /** @description Slot no longer available */
+ 409: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ getBookingByReference: {
+ parameters: {
+ query: {
+ /** @description Manage token issued at booking time */
+ token: string;
+ };
+ header?: never;
+ path: {
+ reference: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Booking details */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Invalid manage token */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Booking not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ cancelBooking: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ reference: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ token: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Booking cancelled */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Invalid manage token */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ rescheduleBooking: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ reference: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** Format: date-time */
+ endsAt?: string;
+ /** Format: date-time */
+ startsAt: string;
+ token: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Booking rescheduled */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Invalid manage token */
+ 403: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description New slot conflicts */
+ 409: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ submitContactForm: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ /** Format: email */
+ email: string;
+ message: string;
+ name: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Message accepted */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
};
getPublicAvailability: {
@@ -793,6 +2326,151 @@ export interface operations {
};
};
};
+ getWidgetScript: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Embeddable widget script */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/javascript": string;
+ };
+ };
+ };
+ };
+ getSmsHistory: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Recent SMS logs */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ listSmsInvoices: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Monthly invoice reports */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ sendSms: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ message: string;
+ to: string;
+ };
+ };
+ };
+ responses: {
+ /** @description SMS queued */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ getSmsSettings: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description SMS settings and current-month usage */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ updateSmsSettings: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ enabled?: boolean;
+ monthlyLimit?: number;
+ sender?: string;
+ };
+ };
+ };
+ responses: {
+ /** @description SMS settings saved */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ getSmsUsage: {
+ parameters: {
+ query?: {
+ month?: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Usage for the month */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
getTenantBootstrap: {
parameters: {
query?: never;
@@ -820,6 +2498,104 @@ export interface operations {
};
};
};
+ updateTenantBrand: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateBrandRequest"];
+ };
+ };
+ responses: {
+ /** @description Brand profile updated */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["BrandProfile"];
+ };
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ updateEmailTemplate: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": components["schemas"]["UpdateEmailTemplateRequest"];
+ };
+ };
+ responses: {
+ /** @description Template saved */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["EmailTemplate"];
+ };
+ };
+ /** @description Invalid request */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ listEmailTemplates: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Tenant email templates */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ templates: components["schemas"]["EmailTemplate"][];
+ };
+ };
+ };
+ /** @description Unauthorized */
+ 401: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
onboardTenant: {
parameters: {
query?: never;
@@ -865,7 +2641,7 @@ export interface operations {
};
};
};
- handlePaddleWebhook: {
+ handleStripeWebhook: {
parameters: {
query?: never;
header?: never;
@@ -885,6 +2661,13 @@ export interface operations {
};
content?: never;
};
+ /** @description Invalid signature or payload */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
};
}
diff --git a/project.md b/project.md
index 259b901..26c567c 100644
--- a/project.md
+++ b/project.md
@@ -21,11 +21,11 @@
- frontend dashboard now hydrates from API when a Neon Auth JWT is available
- frontend dashboard degrades to contract-shaped preview mode when auth is unavailable
- Neon Auth token acquisition remains adapter-isolated and still needs production validation against live Neon Auth
-- `[done/partial]` Milestone 4: Paddle subscription sync and entitlement baseline completed
+- `[done/partial]` Milestone 4: Stripe subscription sync and entitlement baseline completed
- normalized billing snapshot model added to backend and OpenAPI contract
- backend-owned subscription state now syncs through one overwrite path
- - Paddle checkout launch endpoint added
- - Paddle webhook endpoint added with signature verification and event filtering
+ - Stripe checkout launch endpoint added
+ - Stripe webhook endpoint added with signature verification and event filtering
- billing snapshot refresh endpoint added
- customer portal endpoint added
- plan entitlements now derive from normalized plan state
@@ -134,16 +134,16 @@ v1 reminder strategy:
- Czech-first provider support is preferred, with room for generic fallback providers later
## Billing
-Bookra uses Paddle for B2B SaaS subscription billing.
+Bookra uses Stripe for B2B SaaS subscription billing. (Migrated from Paddle; the Paddle integration was removed.)
-Paddle scope in v1:
+Stripe scope in v1:
- tenant subscription plans
- plan upgrades/downgrades
- add-ons such as SMS or expanded limits
- webhook-based subscription state sync
- customer self-serve billing portal
-Paddle is not used for end-customer booking checkout in v1.
+Stripe is not used for end-customer booking checkout in v1.
## Remote-First Architecture
Bookra follows the `tdvorak-fullstack` profile with remote deployment overrides.
@@ -151,7 +151,7 @@ Bookra follows the `tdvorak-fullstack` profile with remote deployment overrides.
### Stack
- Frontend: SolidJS + Vite + TypeScript + Tailwind
- Backend: Go + Gin
-- Database: Neon Postgres + sqlc + goose
+- Database: Neon Postgres + goose (handwritten pgx repositories; sqlc removed)
- Auth: Neon Auth
- API contract: OpenAPI as source of truth
- Frontend deployment: Vercel
@@ -245,21 +245,21 @@ Key entities:
- delivery logging now exists for reminder execution
### Phase 4
-- Paddle subscriptions
+- Stripe subscriptions
- SMS add-on support
- plan enforcement
- hardening, logging, and operational tooling
- status: in progress
- current implementation:
- billing snapshot persistence added
- - Paddle checkout route added
- - Paddle webhook route added
- - Paddle portal route added
+ - Stripe checkout route added (Checkout Sessions)
+ - Stripe webhook route added with signature verification
+ - Stripe portal route added (customer portal sessions)
- subscription refresh route added
- entitlement mapping is now available to the frontend
- API edge now includes security headers and public route rate limiting
- remote job-runner endpoint added for reminder execution
- - sqlc and goose commands are now wired into repeatable npm scripts
+ - goose commands are wired into repeatable npm scripts
## Current Implementation Notes
- Backend is no longer static-demo-only for booking flows.
@@ -276,7 +276,7 @@ Key entities:
- Billing now follows a backend-owned snapshot model rather than trusting incremental webhook payloads.
- `apps/auth-service` is now retired from active runtime and docs.
- Reminder delivery now has a working runtime path instead of just a queued schema.
-- sqlc generation and goose migration execution are now runnable through workspace scripts.
+- goose migration execution is runnable through workspace scripts.
- Protected backend requests now perform automatic app-side identity sync before tenant membership resolution.
- `/dashboard` now includes first-run onboarding instead of only a passive empty state for unassigned authenticated users.
@@ -284,14 +284,14 @@ Key entities:
- Neon Auth token extraction is wired structurally, but still needs live browser validation against a real Neon Auth environment.
- Tenant membership bootstrap now syncs identities structurally, but staging still needs seeded membership records and onboarding flows for first-time tenants.
- First-time onboarding exists, but there are still no CRUD screens for locations, staff, services, or schedules after workspace creation.
-- Paddle lifecycle sync is implemented structurally, but still needs live environment validation against real products, price IDs, client token, and webhook signatures.
+- Stripe lifecycle sync is implemented; still needs live environment validation against real products, price IDs, and webhook signatures.
- Real email/SMS provider integrations are not implemented yet; current delivery providers are safe noops.
- The internal reminder dispatch route exists, but Railway scheduling and secret rotation still need production setup.
## Next Build Targets
- replace preview-mode dashboard hydration with fully validated Neon Auth JWT flow
- sync Neon Auth identities into tenant membership records and onboarding bootstrap
-- validate Paddle checkout/webhooks/portal and reminder dispatch against live staging infrastructure
+- validate Stripe checkout/webhooks/portal and reminder dispatch against live staging infrastructure
- replace noop notification providers with the first production email transport and a gated SMS transport
- add real app management screens for services, staff, locations, and availability after onboarding
@@ -312,7 +312,7 @@ Bookra is successful when a small business can:
- send reminders reliably
- manage cancellations and waitlists
- view simple business health metrics
-- subscribe to a paid plan through Paddle
+- subscribe to a paid plan through Stripe
## Final Positioning
Bookra is not an ERP, not a medical system, and not a marketplace.
diff --git a/railway.env b/railway.env
deleted file mode 100644
index 3044774..0000000
--- a/railway.env
+++ /dev/null
@@ -1,60 +0,0 @@
-# Railway Backend Environment Variables
-# Deploy to: api.bookra.eu
-
-# App Configuration
-BOOKRA_APP_ENV=production
-BOOKRA_APP_URL=https://bookra.eu
-BOOKRA_API_URL=https://api.bookra.eu
-BOOKRA_FRONTEND_URL=https://bookra.eu
-
-# Neon Database
-# Pooled connection (used by the app)
-BOOKRA_DATABASE_URL=postgresql://neondb_owner:npg_64KyAGZtIsSk@ep-mute-water-alem1v8u-pooler.c-3.eu-central-1.aws.neon.tech/neondb?sslmode=require&channel_binding=require
-# Direct connection (used by migrations)
-BOOKRA_DATABASE_DIRECT_URL=postgresql://neondb_owner:npg_64KyAGZtIsSk@ep-mute-water-alem1v8u.c-3.eu-central-1.aws.neon.tech/neondb?sslmode=require&channel_binding=require
-BOOKRA_NEON_AUTH_URL=https://ep-mute-water-alem1v8u.neonauth.c-3.eu-central-1.aws.neon.tech/neondb/auth
-
-# Auth JWT Secret
-BOOKRA_AUTH_JWT_SECRET=RECyrjswpfmw/D5UK4gsg38unglVkgc+9YTq0cKke7w=
-
-# Job Runner Key (protects internal cron endpoints)
-BOOKRA_JOB_RUNNER_KEY=870d6bd91cfb87dff0b736849001c4521404bb385a18f7e26e84743593b746e7
-
-# Stripe (Secret key only - publishable key not needed on backend)
-BOOKRA_STRIPE_API_KEY=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
-BOOKRA_STRIPE_WEBHOOK_SECRET=whsec_Rq2w77ersHwjiQKEOqA17v81BacP5Wev
-
-# Stripe Price IDs (Monthly)
-BOOKRA_STRIPE_STARTER_CZK_MONTHLY_PRICE_ID=price_1TV6Z6GrjyNQaOSGZFcmltqI
-BOOKRA_STRIPE_STARTER_USD_MONTHLY_PRICE_ID=price_1TV6cAGrjyNQaOSGXBhOq3Dk
-BOOKRA_STRIPE_PRO_CZK_MONTHLY_PRICE_ID=price_1TV6ZZGrjyNQaOSGqWENnjDD
-BOOKRA_STRIPE_PRO_USD_MONTHLY_PRICE_ID=price_1TV6dXGrjyNQaOSGeWzJlg2n
-BOOKRA_STRIPE_BUSINESS_CZK_MONTHLY_PRICE_ID=price_1TV6bgGrjyNQaOSGqzGTM68E
-BOOKRA_STRIPE_BUSINESS_USD_MONTHLY_PRICE_ID=price_1TV6dpGrjyNQaOSGCqKO42Oi
-
-# Stripe Price IDs (Yearly)
-BOOKRA_STRIPE_STARTER_CZK_YEARLY_PRICE_ID=price_1TVAlqGrjyNQaOSGNiZQ5tEx
-BOOKRA_STRIPE_STARTER_USD_YEARLY_PRICE_ID=price_1TVAnSGrjyNQaOSGTHQHrgv3
-BOOKRA_STRIPE_PRO_CZK_YEARLY_PRICE_ID=price_1TVAmVGrjyNQaOSGWDgWqYvb
-BOOKRA_STRIPE_PRO_USD_YEARLY_PRICE_ID=price_1TVAnjGrjyNQaOSGvAANw64k
-BOOKRA_STRIPE_BUSINESS_CZK_YEARLY_PRICE_ID=price_1TVAmsGrjyNQaOSGL7Sl5cCd
-BOOKRA_STRIPE_BUSINESS_USD_YEARLY_PRICE_ID=price_1TVAo7GrjyNQaOSGB8LSCOua
-
-# Legacy Price IDs (Fallback)
-BOOKRA_STRIPE_STARTER_CZK_PRICE_ID=price_1TV6Z6GrjyNQaOSGZFcmltqI
-BOOKRA_STRIPE_STARTER_USD_PRICE_ID=price_1TV6cAGrjyNQaOSGXBhOq3Dk
-BOOKRA_STRIPE_PRO_CZK_PRICE_ID=price_1TV6ZZGrjyNQaOSGqWENnjDD
-BOOKRA_STRIPE_PRO_USD_PRICE_ID=price_1TV6dXGrjyNQaOSGeWzJlg2n
-BOOKRA_STRIPE_BUSINESS_CZK_PRICE_ID=price_1TV6bgGrjyNQaOSGqzGTM68E
-BOOKRA_STRIPE_BUSINESS_USD_PRICE_ID=price_1TV6dpGrjyNQaOSGCqKO42Oi
-
-# Admin Credentials
-BOOKRA_ADMIN_EMAIL=info@tdvorak.dev
-BOOKRA_ADMIN_KEY=51vSg7NKU8F2HHT1!
-
-# Email (SMTP)
-BOOKRA_SMTP_HOST=smtp.purelymail.com
-BOOKRA_SMTP_PORT=465
-BOOKRA_SMTP_USERNAME=noreply@bookra.eu
-BOOKRA_SMTP_PASSWORD=8deCHFCuVQAxUg@YxP
-BOOKRA_EMAIL_FROM=noreply@bookra.eu
diff --git a/vercel.env b/vercel.env
deleted file mode 100644
index 42fbf1d..0000000
--- a/vercel.env
+++ /dev/null
@@ -1,16 +0,0 @@
-# Vercel Frontend Environment Variables
-# Deploy to: bookra.eu
-
-# API Configuration (connects to Railway backend)
-VITE_API_URL=https://api.bookra.eu
-VITE_APP_URL=https://bookra.eu
-
-# Stripe (Publishable key only - secret key NOT needed)
-VITE_STRIPE_PUBLISHABLE_KEY=pk_live_51TV6GOGrjyNQaOSGddY1BS14H63e1uYgZUgPe25WhP7yMxmZxMprN3U3scnsmKGBmREzHLrhJlVSEiErimNwVtuR00TRAcHaJi
-
-# Neon Auth
-VITE_NEON_AUTH_URL=https://ep-mute-water-alem1v8u.neonauth.c-3.eu-central-1.aws.neon.tech/neondb/auth
-
-# Feature Flags
-VITE_DEMO_MODE=false
-VITE_SHOW_PRICING=true