From e29d62f949dc10c28c4257f08366d467f3fc9a6f Mon Sep 17 00:00:00 2001 From: Piotr Oleszczyk Date: Thu, 12 Mar 2026 09:17:40 +0100 Subject: [PATCH] feat(frontend): auto-generate TypeScript types from backend OpenAPI schema Replace manually maintained types in src/lib/types.ts with auto-generated types from FastAPI's OpenAPI schema using @hey-api/openapi-ts. The bridge file re-exports generated types with renames, Require<> augmentations for fields that are optional in the schema but always present in responses, and manually added relationship fields excluded from OpenAPI. - Add openapi-ts.config.ts and generate:api npm script - Generate types into src/lib/api/generated/types.gen.ts - Rewrite src/lib/types.ts as bridge with re-exports and augmentations - Fix null vs undefined mismatches in consumer components - Remove unused manual type definitions from api.ts - Update AGENTS.md docs with type generation workflow --- AGENTS.md | 5 +- frontend/.prettierignore | 2 + frontend/AGENTS.md | 30 +- frontend/README.md | 2 +- frontend/eslint.config.js | 1 + frontend/openapi-ts.config.ts | 14 + frontend/openapi.json | 8353 +++++++++++++++++ frontend/package.json | 4 +- frontend/pnpm-lock.yaml | 3156 +++---- frontend/src/lib/api.ts | 65 +- frontend/src/lib/api/generated/index.ts | 3 + frontend/src/lib/api/generated/types.gen.ts | 3922 ++++++++ .../src/lib/components/ProductForm.svelte | 4 +- frontend/src/lib/types.ts | 470 +- frontend/src/routes/products/+page.svelte | 8 +- .../src/routes/products/[id]/+page.svelte | 4 +- 16 files changed, 13745 insertions(+), 2298 deletions(-) create mode 100644 frontend/openapi-ts.config.ts create mode 100644 frontend/openapi.json create mode 100644 frontend/src/lib/api/generated/index.ts create mode 100644 frontend/src/lib/api/generated/types.gen.ts diff --git a/AGENTS.md b/AGENTS.md index 8721aed..b71579f 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -51,7 +51,7 @@ When editing frontend code, follow `docs/frontend-design-cookbook.md` and update | Add LLM validator | `backend/innercontext/validators/` | Extend `BaseValidator`, return `ValidationResult` | | Add i18n strings | `frontend/messages/{en,pl}.json` | Auto-generates to `src/lib/paraglide/` | | Modify design system | `frontend/src/app.css` + `docs/frontend-design-cookbook.md` | Update both in same change | -| Modify types | `frontend/src/lib/types.ts` + `backend/innercontext/models/` | Manual sync, no codegen | +| Modify types | `backend/innercontext/models/` → `pnpm generate:api` → `frontend/src/lib/types.ts` | Auto-generated from OpenAPI; bridge file may need augmentation | ## Commands @@ -69,6 +69,7 @@ cd frontend && pnpm check # Type check + Svelte validation cd frontend && pnpm lint # ESLint cd frontend && pnpm format # Prettier cd frontend && pnpm build # Production build → build/ +cd frontend && pnpm generate:api # Regenerate types from backend OpenAPI ``` ## Commit Guidelines @@ -83,7 +84,7 @@ Conventional Commits: `feat(api): ...`, `fix(frontend): ...`, `test(models): ... ### Cross-Cutting Patterns -- **Type sharing**: Manual sync between `frontend/src/lib/types.ts` and `backend/innercontext/models/`. No code generation. +- **Type sharing**: Auto-generated from backend OpenAPI schema via `@hey-api/openapi-ts`. Run `cd frontend && pnpm generate:api` after backend model changes. `src/lib/types.ts` is a bridge file with re-exports, renames, and `Require<>` augmentations. See `frontend/AGENTS.md` § Type Generation. - **API proxy**: Frontend server-side uses `PUBLIC_API_BASE` (http://localhost:8000). Browser uses `/api` (nginx strips prefix → backend). - **Auth**: None. Single-user personal system. - **Error flow**: Backend `HTTPException(detail=...)` → Frontend catches `.detail` field → `FlashMessages` or `StructuredErrorDisplay`. diff --git a/frontend/.prettierignore b/frontend/.prettierignore index 82eddec..f3e9504 100644 --- a/frontend/.prettierignore +++ b/frontend/.prettierignore @@ -1,6 +1,8 @@ node_modules .svelte-kit paraglide +src/lib/api/generated +openapi.json build dist .env diff --git a/frontend/AGENTS.md b/frontend/AGENTS.md index 895b9fe..9b49816 100644 --- a/frontend/AGENTS.md +++ b/frontend/AGENTS.md @@ -19,7 +19,8 @@ frontend/src/ │ └── profile/ # User profile └── lib/ ├── api.ts # Typed fetch wrappers (server: PUBLIC_API_BASE, browser: /api) - ├── types.ts # TypeScript types mirroring backend models (manual sync) + ├── types.ts # Type bridge — re-exports from generated OpenAPI types with augmentations + ├── api/generated/ # Auto-generated types from backend OpenAPI schema — DO NOT EDIT ├── utils.ts # cn() class merger, bits-ui types ├── utils/ # forms.ts (preventIfNotConfirmed), skin-display.ts (label helpers) ├── paraglide/ # Generated i18n runtime — DO NOT EDIT @@ -123,6 +124,7 @@ pnpm check # Type check + Svelte validation pnpm lint # ESLint pnpm format # Prettier pnpm build # Production build → build/ +pnpm generate:api # Regenerate TypeScript types from backend OpenAPI schema ``` ## Anti-Patterns @@ -130,3 +132,29 @@ pnpm build # Production build → build/ - No frontend tests exist. Only linting + type checking. - ESLint `svelte/no-navigation-without-resolve` has `ignoreGoto: true` workaround (upstream bug sveltejs/eslint-plugin-svelte#1327). - `src/paraglide/` is a legacy output path — active i18n output is in `src/lib/paraglide/`. + +## Type Generation + +TypeScript types are auto-generated from the FastAPI backend's OpenAPI schema using `@hey-api/openapi-ts`. + +### Workflow + +1. Generate `openapi.json` from backend: `cd backend && uv run python -c "import json; from main import app; print(json.dumps(app.openapi(), indent=2))" > ../frontend/openapi.json` +2. Generate types: `cd frontend && pnpm generate:api` +3. Output lands in `src/lib/api/generated/types.gen.ts` — **never edit this file directly**. + +### Architecture + +- **Generated types**: `src/lib/api/generated/types.gen.ts` — raw OpenAPI types, auto-generated. +- **Bridge file**: `src/lib/types.ts` — re-exports from generated types with: + - **Renames**: `ProductWithInventory` → `Product`, `ProductListItem` → `ProductSummary`, `UserProfilePublic` → `UserProfile`, `SkinConditionSnapshotPublic` → `SkinConditionSnapshot`. + - **`Require` augmentations**: Fields with `default_factory` in SQLModel are optional in OpenAPI but always present in API responses (e.g. `id`, `created_at`, `updated_at`, `targets`, `inventory`). + - **Relationship fields**: SQLModel `Relationship()` fields are excluded from OpenAPI schema. Added manually: `MedicationEntry.usage_history`, `Routine.steps`, `RoutineStep.product`, `ProductInventory.product`, `Product.inventory` (with augmented `ProductInventory`). + - **Manual types**: `PriceTierSource`, `ShoppingPriority` — inline literals in backend, not named in OpenAPI. +- **Canonical import**: Always `import type { ... } from '$lib/types'` — never import from `$lib/api/generated` directly. + +### When to regenerate + +- After adding/modifying backend models or response schemas. +- After adding/modifying API endpoints that change the OpenAPI spec. +- After updating the bridge file, run `pnpm check` to verify type compatibility. diff --git a/frontend/README.md b/frontend/README.md index c0ec761..7dd484c 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -69,6 +69,6 @@ Or use the provided systemd service: `../systemd/innercontext-node.service`. | File | Purpose | | ------------------ | --------------------------------- | | `src/lib/api.ts` | API client (typed fetch wrappers) | -| `src/lib/types.ts` | Shared TypeScript types | +| `src/lib/types.ts` | Type bridge (re-exports from generated OpenAPI types) | | `src/app.css` | Tailwind v4 theme + global styles | | `svelte.config.js` | SvelteKit config (adapter-node) | diff --git a/frontend/eslint.config.js b/frontend/eslint.config.js index fd016cd..eeff32e 100644 --- a/frontend/eslint.config.js +++ b/frontend/eslint.config.js @@ -12,6 +12,7 @@ export default [ "dist", "**/paraglide/**", "**/lib/paraglide/**", + "**/api/generated/**", ], }, js.configs.recommended, diff --git a/frontend/openapi-ts.config.ts b/frontend/openapi-ts.config.ts new file mode 100644 index 0000000..0a5b8fe --- /dev/null +++ b/frontend/openapi-ts.config.ts @@ -0,0 +1,14 @@ +import { defineConfig } from "@hey-api/openapi-ts"; + +export default defineConfig({ + input: "./openapi.json", + output: { + path: "src/lib/api/generated", + }, + plugins: [ + { + name: "@hey-api/typescript", + enums: false, // union types, matching existing frontend pattern + }, + ], +}); diff --git a/frontend/openapi.json b/frontend/openapi.json new file mode 100644 index 0000000..30c509c --- /dev/null +++ b/frontend/openapi.json @@ -0,0 +1,8353 @@ +{ + "openapi": "3.1.0", + "info": { + "title": "innercontext API", + "version": "0.1.0" + }, + "paths": { + "/products": { + "get": { + "tags": [ + "products" + ], + "summary": "List Products", + "operationId": "list_products_products_get", + "parameters": [ + { + "name": "category", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/ProductCategory" + }, + { + "type": "null" + } + ], + "title": "Category" + } + }, + { + "name": "brand", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Brand" + } + }, + { + "name": "targets", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/components/schemas/SkinConcern" + } + }, + { + "type": "null" + } + ], + "title": "Targets" + } + }, + { + "name": "is_medication", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Medication" + } + }, + { + "name": "is_tool", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Tool" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductWithInventory" + }, + "title": "Response List Products Products Get" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "post": { + "tags": [ + "products" + ], + "summary": "Create Product", + "operationId": "create_product_products_post", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductCreate" + } + } + } + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductPublic" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/products/parse-text": { + "post": { + "tags": [ + "products" + ], + "summary": "Parse Product Text", + "operationId": "parse_product_text_products_parse_text_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductParseRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductParseResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/products/summary": { + "get": { + "tags": [ + "products" + ], + "summary": "List Products Summary", + "operationId": "list_products_summary_products_summary_get", + "parameters": [ + { + "name": "category", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/ProductCategory" + }, + { + "type": "null" + } + ], + "title": "Category" + } + }, + { + "name": "brand", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Brand" + } + }, + { + "name": "targets", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/components/schemas/SkinConcern" + } + }, + { + "type": "null" + } + ], + "title": "Targets" + } + }, + { + "name": "is_medication", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Medication" + } + }, + { + "name": "is_tool", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Tool" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductListItem" + }, + "title": "Response List Products Summary Products Summary Get" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/products/{product_id}": { + "get": { + "tags": [ + "products" + ], + "summary": "Get Product", + "operationId": "get_product_products__product_id__get", + "parameters": [ + { + "name": "product_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Product Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductWithInventory" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "patch": { + "tags": [ + "products" + ], + "summary": "Update Product", + "operationId": "update_product_products__product_id__patch", + "parameters": [ + { + "name": "product_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Product Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductUpdate" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductPublic" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "delete": { + "tags": [ + "products" + ], + "summary": "Delete Product", + "operationId": "delete_product_products__product_id__delete", + "parameters": [ + { + "name": "product_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Product Id" + } + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/products/{product_id}/inventory": { + "get": { + "tags": [ + "products" + ], + "summary": "List Product Inventory", + "operationId": "list_product_inventory_products__product_id__inventory_get", + "parameters": [ + { + "name": "product_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Product Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductInventory" + }, + "title": "Response List Product Inventory Products Product Id Inventory Get" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "post": { + "tags": [ + "products" + ], + "summary": "Create Product Inventory", + "operationId": "create_product_inventory_products__product_id__inventory_post", + "parameters": [ + { + "name": "product_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Product Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InventoryCreate" + } + } + } + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductInventory" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/products/suggest": { + "post": { + "tags": [ + "products" + ], + "summary": "Suggest Shopping", + "operationId": "suggest_shopping_products_suggest_post", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ShoppingSuggestionResponse" + } + } + } + } + } + } + }, + "/inventory/{inventory_id}": { + "get": { + "tags": [ + "inventory" + ], + "summary": "Get Inventory", + "operationId": "get_inventory_inventory__inventory_id__get", + "parameters": [ + { + "name": "inventory_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Inventory Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductInventory" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "patch": { + "tags": [ + "inventory" + ], + "summary": "Update Inventory", + "operationId": "update_inventory_inventory__inventory_id__patch", + "parameters": [ + { + "name": "inventory_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Inventory Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InventoryUpdate" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductInventory" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "delete": { + "tags": [ + "inventory" + ], + "summary": "Delete Inventory", + "operationId": "delete_inventory_inventory__inventory_id__delete", + "parameters": [ + { + "name": "inventory_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Inventory Id" + } + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/profile": { + "get": { + "tags": [ + "profile" + ], + "summary": "Get Profile", + "operationId": "get_profile_profile_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/UserProfilePublic" + }, + { + "type": "null" + } + ], + "title": "Response Get Profile Profile Get" + } + } + } + } + } + }, + "patch": { + "tags": [ + "profile" + ], + "summary": "Upsert Profile", + "operationId": "upsert_profile_profile_patch", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserProfileUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserProfilePublic" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/health/medications": { + "get": { + "tags": [ + "health" + ], + "summary": "List Medications", + "operationId": "list_medications_health_medications_get", + "parameters": [ + { + "name": "kind", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/MedicationKind" + }, + { + "type": "null" + } + ], + "title": "Kind" + } + }, + { + "name": "product_name", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Product Name" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MedicationEntry" + }, + "title": "Response List Medications Health Medications Get" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "post": { + "tags": [ + "health" + ], + "summary": "Create Medication", + "operationId": "create_medication_health_medications_post", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MedicationCreate" + } + } + } + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MedicationEntry" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/health/medications/{medication_id}": { + "get": { + "tags": [ + "health" + ], + "summary": "Get Medication", + "operationId": "get_medication_health_medications__medication_id__get", + "parameters": [ + { + "name": "medication_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Medication Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MedicationEntry" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "patch": { + "tags": [ + "health" + ], + "summary": "Update Medication", + "operationId": "update_medication_health_medications__medication_id__patch", + "parameters": [ + { + "name": "medication_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Medication Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MedicationUpdate" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MedicationEntry" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "delete": { + "tags": [ + "health" + ], + "summary": "Delete Medication", + "operationId": "delete_medication_health_medications__medication_id__delete", + "parameters": [ + { + "name": "medication_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Medication Id" + } + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/health/medications/{medication_id}/usages": { + "get": { + "tags": [ + "health" + ], + "summary": "List Usages", + "operationId": "list_usages_health_medications__medication_id__usages_get", + "parameters": [ + { + "name": "medication_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Medication Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MedicationUsage" + }, + "title": "Response List Usages Health Medications Medication Id Usages Get" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "post": { + "tags": [ + "health" + ], + "summary": "Create Usage", + "operationId": "create_usage_health_medications__medication_id__usages_post", + "parameters": [ + { + "name": "medication_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Medication Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UsageCreate" + } + } + } + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MedicationUsage" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/health/usages/{usage_id}": { + "patch": { + "tags": [ + "health" + ], + "summary": "Update Usage", + "operationId": "update_usage_health_usages__usage_id__patch", + "parameters": [ + { + "name": "usage_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Usage Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UsageUpdate" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MedicationUsage" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "delete": { + "tags": [ + "health" + ], + "summary": "Delete Usage", + "operationId": "delete_usage_health_usages__usage_id__delete", + "parameters": [ + { + "name": "usage_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Usage Id" + } + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/health/lab-results": { + "get": { + "tags": [ + "health" + ], + "summary": "List Lab Results", + "operationId": "list_lab_results_health_lab_results_get", + "parameters": [ + { + "name": "q", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Q" + } + }, + { + "name": "test_code", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Test Code" + } + }, + { + "name": "flag", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/ResultFlag" + }, + { + "type": "null" + } + ], + "title": "Flag" + } + }, + { + "name": "flags", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ResultFlag" + }, + "title": "Flags" + } + }, + { + "name": "without_flag", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": false, + "title": "Without Flag" + } + }, + { + "name": "from_date", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "From Date" + } + }, + { + "name": "to_date", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "To Date" + } + }, + { + "name": "latest_only", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": false, + "title": "Latest Only" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "maximum": 200, + "minimum": 1, + "default": 50, + "title": "Limit" + } + }, + { + "name": "offset", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "minimum": 0, + "default": 0, + "title": "Offset" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LabResultListResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "post": { + "tags": [ + "health" + ], + "summary": "Create Lab Result", + "operationId": "create_lab_result_health_lab_results_post", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LabResultCreate" + } + } + } + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LabResult" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/health/lab-results/{result_id}": { + "get": { + "tags": [ + "health" + ], + "summary": "Get Lab Result", + "operationId": "get_lab_result_health_lab_results__result_id__get", + "parameters": [ + { + "name": "result_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Result Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LabResult" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "patch": { + "tags": [ + "health" + ], + "summary": "Update Lab Result", + "operationId": "update_lab_result_health_lab_results__result_id__patch", + "parameters": [ + { + "name": "result_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Result Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LabResultUpdate" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LabResult" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "delete": { + "tags": [ + "health" + ], + "summary": "Delete Lab Result", + "operationId": "delete_lab_result_health_lab_results__result_id__delete", + "parameters": [ + { + "name": "result_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Result Id" + } + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/routines": { + "get": { + "tags": [ + "routines" + ], + "summary": "List Routines", + "operationId": "list_routines_routines_get", + "parameters": [ + { + "name": "from_date", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date" + }, + { + "type": "null" + } + ], + "title": "From Date" + } + }, + { + "name": "to_date", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date" + }, + { + "type": "null" + } + ], + "title": "To Date" + } + }, + { + "name": "part_of_day", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/PartOfDay" + }, + { + "type": "null" + } + ], + "title": "Part Of Day" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "post": { + "tags": [ + "routines" + ], + "summary": "Create Routine", + "operationId": "create_routine_routines_post", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RoutineCreate" + } + } + } + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Routine" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/routines/suggest": { + "post": { + "tags": [ + "routines" + ], + "summary": "Suggest Routine", + "operationId": "suggest_routine_routines_suggest_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuggestRoutineRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RoutineSuggestion" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/routines/suggest-batch": { + "post": { + "tags": [ + "routines" + ], + "summary": "Suggest Batch", + "operationId": "suggest_batch_routines_suggest_batch_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuggestBatchRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BatchSuggestion" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/routines/grooming-schedule": { + "get": { + "tags": [ + "routines" + ], + "summary": "List Grooming Schedule", + "operationId": "list_grooming_schedule_routines_grooming_schedule_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/GroomingSchedule" + }, + "type": "array", + "title": "Response List Grooming Schedule Routines Grooming Schedule Get" + } + } + } + } + } + }, + "post": { + "tags": [ + "routines" + ], + "summary": "Create Grooming Schedule", + "operationId": "create_grooming_schedule_routines_grooming_schedule_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GroomingScheduleCreate" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GroomingSchedule" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/routines/{routine_id}": { + "get": { + "tags": [ + "routines" + ], + "summary": "Get Routine", + "operationId": "get_routine_routines__routine_id__get", + "parameters": [ + { + "name": "routine_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Routine Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "patch": { + "tags": [ + "routines" + ], + "summary": "Update Routine", + "operationId": "update_routine_routines__routine_id__patch", + "parameters": [ + { + "name": "routine_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Routine Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RoutineUpdate" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Routine" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "delete": { + "tags": [ + "routines" + ], + "summary": "Delete Routine", + "operationId": "delete_routine_routines__routine_id__delete", + "parameters": [ + { + "name": "routine_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Routine Id" + } + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/routines/{routine_id}/steps": { + "post": { + "tags": [ + "routines" + ], + "summary": "Add Step", + "operationId": "add_step_routines__routine_id__steps_post", + "parameters": [ + { + "name": "routine_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Routine Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RoutineStepCreate" + } + } + } + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RoutineStep" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/routines/steps/{step_id}": { + "patch": { + "tags": [ + "routines" + ], + "summary": "Update Step", + "operationId": "update_step_routines_steps__step_id__patch", + "parameters": [ + { + "name": "step_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Step Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RoutineStepUpdate" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RoutineStep" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "delete": { + "tags": [ + "routines" + ], + "summary": "Delete Step", + "operationId": "delete_step_routines_steps__step_id__delete", + "parameters": [ + { + "name": "step_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Step Id" + } + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/routines/grooming-schedule/{entry_id}": { + "patch": { + "tags": [ + "routines" + ], + "summary": "Update Grooming Schedule", + "operationId": "update_grooming_schedule_routines_grooming_schedule__entry_id__patch", + "parameters": [ + { + "name": "entry_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Entry Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GroomingScheduleUpdate" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GroomingSchedule" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "delete": { + "tags": [ + "routines" + ], + "summary": "Delete Grooming Schedule", + "operationId": "delete_grooming_schedule_routines_grooming_schedule__entry_id__delete", + "parameters": [ + { + "name": "entry_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Entry Id" + } + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/skincare/analyze-photos": { + "post": { + "tags": [ + "skincare" + ], + "summary": "Analyze Skin Photos", + "operationId": "analyze_skin_photos_skincare_analyze_photos_post", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/Body_analyze_skin_photos_skincare_analyze_photos_post" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkinPhotoAnalysisResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/skincare": { + "get": { + "tags": [ + "skincare" + ], + "summary": "List Snapshots", + "operationId": "list_snapshots_skincare_get", + "parameters": [ + { + "name": "from_date", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date" + }, + { + "type": "null" + } + ], + "title": "From Date" + } + }, + { + "name": "to_date", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date" + }, + { + "type": "null" + } + ], + "title": "To Date" + } + }, + { + "name": "overall_state", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/OverallSkinState" + }, + { + "type": "null" + } + ], + "title": "Overall State" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SkinConditionSnapshotPublic" + }, + "title": "Response List Snapshots Skincare Get" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "post": { + "tags": [ + "skincare" + ], + "summary": "Create Snapshot", + "operationId": "create_snapshot_skincare_post", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnapshotCreate" + } + } + } + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkinConditionSnapshotPublic" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/skincare/{snapshot_id}": { + "get": { + "tags": [ + "skincare" + ], + "summary": "Get Snapshot", + "operationId": "get_snapshot_skincare__snapshot_id__get", + "parameters": [ + { + "name": "snapshot_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Snapshot Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkinConditionSnapshotPublic" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "patch": { + "tags": [ + "skincare" + ], + "summary": "Update Snapshot", + "operationId": "update_snapshot_skincare__snapshot_id__patch", + "parameters": [ + { + "name": "snapshot_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Snapshot Id" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnapshotUpdate" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkinConditionSnapshotPublic" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "delete": { + "tags": [ + "skincare" + ], + "summary": "Delete Snapshot", + "operationId": "delete_snapshot_skincare__snapshot_id__delete", + "parameters": [ + { + "name": "snapshot_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Snapshot Id" + } + } + ], + "responses": { + "204": { + "description": "Successful Response" + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/ai-logs": { + "get": { + "tags": [ + "ai-logs" + ], + "summary": "List Ai Logs", + "operationId": "list_ai_logs_ai_logs_get", + "parameters": [ + { + "name": "endpoint", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Endpoint" + } + }, + { + "name": "success", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Success" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "default": 50, + "title": "Limit" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AICallLogPublic" + }, + "title": "Response List Ai Logs Ai Logs Get" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/ai-logs/{log_id}": { + "get": { + "tags": [ + "ai-logs" + ], + "summary": "Get Ai Log", + "operationId": "get_ai_log_ai_logs__log_id__get", + "parameters": [ + { + "name": "log_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Log Id" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AICallLog" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/health-check": { + "get": { + "summary": "Health Check", + "operationId": "health_check_health_check_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + } + } + } + } + }, + "components": { + "schemas": { + "AICallLog": { + "properties": { + "id": { + "type": "string", + "format": "uuid", + "title": "Id" + }, + "created_at": { + "type": "string", + "format": "date-time", + "title": "Created At" + }, + "endpoint": { + "type": "string", + "title": "Endpoint" + }, + "model": { + "type": "string", + "title": "Model" + }, + "system_prompt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "System Prompt" + }, + "user_input": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "User Input" + }, + "response_text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Response Text" + }, + "prompt_tokens": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Prompt Tokens" + }, + "completion_tokens": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Completion Tokens" + }, + "total_tokens": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Total Tokens" + }, + "duration_ms": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Duration Ms" + }, + "finish_reason": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Finish Reason" + }, + "tool_trace": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Tool Trace" + }, + "success": { + "type": "boolean", + "title": "Success", + "default": true + }, + "error_detail": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Error Detail" + }, + "validation_errors": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Validation Errors" + }, + "validation_warnings": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Validation Warnings" + }, + "auto_fixed": { + "type": "boolean", + "title": "Auto Fixed", + "default": false + }, + "reasoning_chain": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Reasoning Chain", + "description": "LLM reasoning/thinking process (MEDIUM thinking level)" + }, + "thoughts_tokens": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Thoughts Tokens", + "description": "Thinking tokens (thoughtsTokenCount) - separate from output budget" + }, + "tool_use_prompt_tokens": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Tool Use Prompt Tokens", + "description": "Tool use prompt tokens (toolUsePromptTokenCount)" + }, + "cached_content_tokens": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Cached Content Tokens", + "description": "Cached content tokens (cachedContentTokenCount)" + } + }, + "type": "object", + "required": [ + "endpoint", + "model" + ], + "title": "AICallLog" + }, + "AICallLogPublic": { + "properties": { + "id": { + "type": "string", + "format": "uuid", + "title": "Id" + }, + "created_at": { + "title": "Created At" + }, + "endpoint": { + "type": "string", + "title": "Endpoint" + }, + "model": { + "type": "string", + "title": "Model" + }, + "prompt_tokens": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Prompt Tokens" + }, + "completion_tokens": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Completion Tokens" + }, + "total_tokens": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Total Tokens" + }, + "duration_ms": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Duration Ms" + }, + "tool_trace": { + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Tool Trace" + }, + "success": { + "type": "boolean", + "title": "Success" + }, + "error_detail": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Error Detail" + } + }, + "type": "object", + "required": [ + "id", + "created_at", + "endpoint", + "model", + "success" + ], + "title": "AICallLogPublic", + "description": "List-friendly view: omits large text fields." + }, + "AbsorptionSpeed": { + "type": "string", + "enum": [ + "very_fast", + "fast", + "moderate", + "slow", + "very_slow" + ], + "title": "AbsorptionSpeed" + }, + "ActiveIngredient": { + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "percent": { + "anyOf": [ + { + "type": "number", + "maximum": 100.0, + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Percent" + }, + "functions": { + "items": { + "$ref": "#/components/schemas/IngredientFunction" + }, + "type": "array", + "title": "Functions" + }, + "strength_level": { + "anyOf": [ + { + "$ref": "#/components/schemas/StrengthLevel" + }, + { + "type": "null" + } + ] + }, + "irritation_potential": { + "anyOf": [ + { + "$ref": "#/components/schemas/StrengthLevel" + }, + { + "type": "null" + } + ] + } + }, + "type": "object", + "required": [ + "name" + ], + "title": "ActiveIngredient" + }, + "BarrierState": { + "type": "string", + "enum": [ + "intact", + "mildly_compromised", + "compromised" + ], + "title": "BarrierState" + }, + "BatchSuggestion": { + "properties": { + "days": { + "items": { + "$ref": "#/components/schemas/DayPlan" + }, + "type": "array", + "title": "Days" + }, + "overall_reasoning": { + "type": "string", + "title": "Overall Reasoning" + }, + "validation_warnings": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Validation Warnings" + }, + "auto_fixes_applied": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Auto Fixes Applied" + }, + "response_metadata": { + "anyOf": [ + { + "$ref": "#/components/schemas/ResponseMetadata" + }, + { + "type": "null" + } + ] + } + }, + "type": "object", + "required": [ + "days", + "overall_reasoning" + ], + "title": "BatchSuggestion" + }, + "Body_analyze_skin_photos_skincare_analyze_photos_post": { + "properties": { + "photos": { + "items": { + "type": "string", + "contentMediaType": "application/octet-stream" + }, + "type": "array", + "title": "Photos" + } + }, + "type": "object", + "required": [ + "photos" + ], + "title": "Body_analyze_skin_photos_skincare_analyze_photos_post" + }, + "DayPlan": { + "properties": { + "date": { + "type": "string", + "format": "date", + "title": "Date" + }, + "am_steps": { + "items": { + "$ref": "#/components/schemas/SuggestedStep" + }, + "type": "array", + "title": "Am Steps" + }, + "pm_steps": { + "items": { + "$ref": "#/components/schemas/SuggestedStep" + }, + "type": "array", + "title": "Pm Steps" + }, + "reasoning": { + "type": "string", + "title": "Reasoning" + } + }, + "type": "object", + "required": [ + "date", + "am_steps", + "pm_steps", + "reasoning" + ], + "title": "DayPlan" + }, + "DayTime": { + "type": "string", + "enum": [ + "am", + "pm", + "both" + ], + "title": "DayTime" + }, + "GroomingAction": { + "type": "string", + "enum": [ + "shaving_razor", + "shaving_oneblade", + "dermarolling" + ], + "title": "GroomingAction" + }, + "GroomingSchedule": { + "properties": { + "id": { + "type": "string", + "format": "uuid", + "title": "Id" + }, + "day_of_week": { + "type": "integer", + "maximum": 6.0, + "minimum": 0.0, + "title": "Day Of Week" + }, + "action": { + "$ref": "#/components/schemas/GroomingAction" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + } + }, + "type": "object", + "required": [ + "day_of_week", + "action" + ], + "title": "GroomingSchedule" + }, + "GroomingScheduleCreate": { + "properties": { + "day_of_week": { + "type": "integer", + "title": "Day Of Week" + }, + "action": { + "$ref": "#/components/schemas/GroomingAction" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + } + }, + "type": "object", + "required": [ + "day_of_week", + "action" + ], + "title": "GroomingScheduleCreate" + }, + "GroomingScheduleUpdate": { + "properties": { + "day_of_week": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Day Of Week" + }, + "action": { + "anyOf": [ + { + "$ref": "#/components/schemas/GroomingAction" + }, + { + "type": "null" + } + ] + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + } + }, + "type": "object", + "title": "GroomingScheduleUpdate" + }, + "HTTPValidationError": { + "properties": { + "detail": { + "items": { + "$ref": "#/components/schemas/ValidationError" + }, + "type": "array", + "title": "Detail" + } + }, + "type": "object", + "title": "HTTPValidationError" + }, + "IngredientFunction": { + "type": "string", + "enum": [ + "humectant", + "emollient", + "occlusive", + "exfoliant_aha", + "exfoliant_bha", + "exfoliant_pha", + "retinoid", + "antioxidant", + "soothing", + "barrier_support", + "brightening", + "anti_acne", + "ceramide", + "niacinamide", + "sunscreen", + "peptide", + "hair_growth_stimulant", + "prebiotic", + "vitamin_c", + "anti_aging" + ], + "title": "IngredientFunction" + }, + "InventoryCreate": { + "properties": { + "is_opened": { + "type": "boolean", + "title": "Is Opened", + "default": false + }, + "opened_at": { + "anyOf": [ + { + "type": "string", + "format": "date" + }, + { + "type": "null" + } + ], + "title": "Opened At" + }, + "finished_at": { + "anyOf": [ + { + "type": "string", + "format": "date" + }, + { + "type": "null" + } + ], + "title": "Finished At" + }, + "expiry_date": { + "anyOf": [ + { + "type": "string", + "format": "date" + }, + { + "type": "null" + } + ], + "title": "Expiry Date" + }, + "remaining_level": { + "anyOf": [ + { + "$ref": "#/components/schemas/RemainingLevel" + }, + { + "type": "null" + } + ] + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + } + }, + "type": "object", + "title": "InventoryCreate" + }, + "InventoryUpdate": { + "properties": { + "is_opened": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Opened" + }, + "opened_at": { + "anyOf": [ + { + "type": "string", + "format": "date" + }, + { + "type": "null" + } + ], + "title": "Opened At" + }, + "finished_at": { + "anyOf": [ + { + "type": "string", + "format": "date" + }, + { + "type": "null" + } + ], + "title": "Finished At" + }, + "expiry_date": { + "anyOf": [ + { + "type": "string", + "format": "date" + }, + { + "type": "null" + } + ], + "title": "Expiry Date" + }, + "remaining_level": { + "anyOf": [ + { + "$ref": "#/components/schemas/RemainingLevel" + }, + { + "type": "null" + } + ] + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + } + }, + "type": "object", + "title": "InventoryUpdate" + }, + "LabResult": { + "properties": { + "record_id": { + "type": "string", + "format": "uuid", + "title": "Record Id" + }, + "collected_at": { + "type": "string", + "format": "date-time", + "title": "Collected At" + }, + "test_code": { + "type": "string", + "title": "Test Code" + }, + "test_name_original": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Test Name Original" + }, + "test_name_loinc": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Test Name Loinc" + }, + "value_num": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Value Num" + }, + "value_text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Value Text" + }, + "value_bool": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Value Bool" + }, + "unit_original": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Unit Original" + }, + "unit_ucum": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Unit Ucum" + }, + "ref_low": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Ref Low" + }, + "ref_high": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Ref High" + }, + "ref_text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Ref Text" + }, + "flag": { + "anyOf": [ + { + "$ref": "#/components/schemas/ResultFlag" + }, + { + "type": "null" + } + ] + }, + "lab": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Lab" + }, + "source_file": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source File" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + }, + "created_at": { + "type": "string", + "format": "date-time", + "title": "Created At" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "title": "Updated At" + } + }, + "type": "object", + "required": [ + "collected_at", + "test_code" + ], + "title": "LabResult" + }, + "LabResultCreate": { + "properties": { + "collected_at": { + "type": "string", + "format": "date-time", + "title": "Collected At" + }, + "test_code": { + "type": "string", + "title": "Test Code" + }, + "test_name_original": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Test Name Original" + }, + "test_name_loinc": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Test Name Loinc" + }, + "value_num": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Value Num" + }, + "value_text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Value Text" + }, + "value_bool": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Value Bool" + }, + "unit_original": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Unit Original" + }, + "unit_ucum": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Unit Ucum" + }, + "ref_low": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Ref Low" + }, + "ref_high": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Ref High" + }, + "ref_text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Ref Text" + }, + "flag": { + "anyOf": [ + { + "$ref": "#/components/schemas/ResultFlag" + }, + { + "type": "null" + } + ] + }, + "lab": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Lab" + }, + "source_file": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source File" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + } + }, + "type": "object", + "required": [ + "collected_at", + "test_code" + ], + "title": "LabResultCreate" + }, + "LabResultListResponse": { + "properties": { + "items": { + "items": { + "$ref": "#/components/schemas/LabResult" + }, + "type": "array", + "title": "Items" + }, + "total": { + "type": "integer", + "title": "Total" + }, + "limit": { + "type": "integer", + "title": "Limit" + }, + "offset": { + "type": "integer", + "title": "Offset" + } + }, + "type": "object", + "required": [ + "items", + "total", + "limit", + "offset" + ], + "title": "LabResultListResponse" + }, + "LabResultUpdate": { + "properties": { + "collected_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "Collected At" + }, + "test_code": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Test Code" + }, + "test_name_original": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Test Name Original" + }, + "test_name_loinc": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Test Name Loinc" + }, + "value_num": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Value Num" + }, + "value_text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Value Text" + }, + "value_bool": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Value Bool" + }, + "unit_original": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Unit Original" + }, + "unit_ucum": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Unit Ucum" + }, + "ref_low": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Ref Low" + }, + "ref_high": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Ref High" + }, + "ref_text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Ref Text" + }, + "flag": { + "anyOf": [ + { + "$ref": "#/components/schemas/ResultFlag" + }, + { + "type": "null" + } + ] + }, + "lab": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Lab" + }, + "source_file": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source File" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + } + }, + "type": "object", + "title": "LabResultUpdate" + }, + "MedicationCreate": { + "properties": { + "kind": { + "$ref": "#/components/schemas/MedicationKind" + }, + "product_name": { + "type": "string", + "title": "Product Name" + }, + "active_substance": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Active Substance" + }, + "formulation": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Formulation" + }, + "route": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Route" + }, + "source_file": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source File" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + } + }, + "type": "object", + "required": [ + "kind", + "product_name" + ], + "title": "MedicationCreate" + }, + "MedicationEntry": { + "properties": { + "record_id": { + "type": "string", + "format": "uuid", + "title": "Record Id" + }, + "kind": { + "$ref": "#/components/schemas/MedicationKind" + }, + "product_name": { + "type": "string", + "title": "Product Name" + }, + "active_substance": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Active Substance" + }, + "formulation": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Formulation" + }, + "route": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Route" + }, + "source_file": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source File" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + }, + "created_at": { + "type": "string", + "format": "date-time", + "title": "Created At" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "title": "Updated At" + } + }, + "type": "object", + "required": [ + "kind", + "product_name" + ], + "title": "MedicationEntry" + }, + "MedicationKind": { + "type": "string", + "enum": [ + "prescription", + "otc", + "supplement", + "herbal", + "other" + ], + "title": "MedicationKind" + }, + "MedicationUpdate": { + "properties": { + "kind": { + "anyOf": [ + { + "$ref": "#/components/schemas/MedicationKind" + }, + { + "type": "null" + } + ] + }, + "product_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Product Name" + }, + "active_substance": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Active Substance" + }, + "formulation": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Formulation" + }, + "route": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Route" + }, + "source_file": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source File" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + } + }, + "type": "object", + "title": "MedicationUpdate" + }, + "MedicationUsage": { + "properties": { + "record_id": { + "type": "string", + "format": "uuid", + "title": "Record Id" + }, + "medication_record_id": { + "type": "string", + "format": "uuid", + "title": "Medication Record Id" + }, + "dose_value": { + "anyOf": [ + { + "type": "number", + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Dose Value" + }, + "dose_unit": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dose Unit" + }, + "frequency": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Frequency" + }, + "schedule_text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Schedule Text" + }, + "as_needed": { + "type": "boolean", + "title": "As Needed", + "default": false + }, + "valid_from": { + "type": "string", + "format": "date-time", + "title": "Valid From" + }, + "valid_to": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "Valid To" + }, + "source_file": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source File" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + }, + "created_at": { + "type": "string", + "format": "date-time", + "title": "Created At" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "title": "Updated At" + } + }, + "type": "object", + "required": [ + "medication_record_id", + "valid_from" + ], + "title": "MedicationUsage" + }, + "OverallSkinState": { + "type": "string", + "enum": [ + "excellent", + "good", + "fair", + "poor" + ], + "title": "OverallSkinState" + }, + "PartOfDay": { + "type": "string", + "enum": [ + "am", + "pm" + ], + "title": "PartOfDay" + }, + "PriceTier": { + "type": "string", + "enum": [ + "budget", + "mid", + "premium", + "luxury" + ], + "title": "PriceTier" + }, + "ProductCategory": { + "type": "string", + "enum": [ + "cleanser", + "toner", + "essence", + "serum", + "moisturizer", + "spf", + "mask", + "exfoliant", + "hair_treatment", + "tool", + "spot_treatment", + "oil" + ], + "title": "ProductCategory" + }, + "ProductContext": { + "properties": { + "safe_after_shaving": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Safe After Shaving" + }, + "safe_after_acids": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Safe After Acids" + }, + "safe_after_retinoids": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Safe After Retinoids" + }, + "safe_with_compromised_barrier": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Safe With Compromised Barrier" + }, + "low_uv_only": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Low Uv Only" + } + }, + "type": "object", + "title": "ProductContext" + }, + "ProductCreate": { + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "brand": { + "type": "string", + "title": "Brand" + }, + "line_name": { + "anyOf": [ + { + "type": "string", + "maxLength": 128 + }, + { + "type": "null" + } + ], + "title": "Line Name" + }, + "sku": { + "anyOf": [ + { + "type": "string", + "maxLength": 64 + }, + { + "type": "null" + } + ], + "title": "Sku" + }, + "url": { + "anyOf": [ + { + "type": "string", + "maxLength": 512 + }, + { + "type": "null" + } + ], + "title": "Url" + }, + "barcode": { + "anyOf": [ + { + "type": "string", + "maxLength": 64 + }, + { + "type": "null" + } + ], + "title": "Barcode" + }, + "category": { + "$ref": "#/components/schemas/ProductCategory" + }, + "recommended_time": { + "$ref": "#/components/schemas/DayTime" + }, + "texture": { + "anyOf": [ + { + "$ref": "#/components/schemas/TextureType" + }, + { + "type": "null" + } + ] + }, + "absorption_speed": { + "anyOf": [ + { + "$ref": "#/components/schemas/AbsorptionSpeed" + }, + { + "type": "null" + } + ] + }, + "leave_on": { + "type": "boolean", + "title": "Leave On" + }, + "price_amount": { + "anyOf": [ + { + "type": "number", + "exclusiveMinimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Price Amount" + }, + "price_currency": { + "anyOf": [ + { + "type": "string", + "maxLength": 3, + "minLength": 3 + }, + { + "type": "null" + } + ], + "title": "Price Currency" + }, + "size_ml": { + "anyOf": [ + { + "type": "number", + "exclusiveMinimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Size Ml" + }, + "pao_months": { + "anyOf": [ + { + "type": "integer", + "maximum": 60.0, + "minimum": 1.0 + }, + { + "type": "null" + } + ], + "title": "Pao Months" + }, + "inci": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Inci" + }, + "actives": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/ActiveIngredient" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Actives" + }, + "recommended_for": { + "items": { + "$ref": "#/components/schemas/SkinType" + }, + "type": "array", + "title": "Recommended For" + }, + "targets": { + "items": { + "$ref": "#/components/schemas/SkinConcern" + }, + "type": "array", + "title": "Targets" + }, + "fragrance_free": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Fragrance Free" + }, + "essential_oils_free": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Essential Oils Free" + }, + "alcohol_denat_free": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Alcohol Denat Free" + }, + "pregnancy_safe": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pregnancy Safe" + }, + "product_effect_profile": { + "$ref": "#/components/schemas/ProductEffectProfile" + }, + "ph_min": { + "anyOf": [ + { + "type": "number", + "maximum": 14.0, + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Ph Min" + }, + "ph_max": { + "anyOf": [ + { + "type": "number", + "maximum": 14.0, + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Ph Max" + }, + "context_rules": { + "anyOf": [ + { + "$ref": "#/components/schemas/ProductContext" + }, + { + "type": "null" + } + ] + }, + "min_interval_hours": { + "anyOf": [ + { + "type": "integer", + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Min Interval Hours" + }, + "max_frequency_per_week": { + "anyOf": [ + { + "type": "integer", + "maximum": 14.0, + "minimum": 1.0 + }, + { + "type": "null" + } + ], + "title": "Max Frequency Per Week" + }, + "is_medication": { + "type": "boolean", + "title": "Is Medication", + "default": false + }, + "is_tool": { + "type": "boolean", + "title": "Is Tool", + "default": false + }, + "needle_length_mm": { + "anyOf": [ + { + "type": "number", + "exclusiveMinimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Needle Length Mm" + }, + "personal_tolerance_notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Personal Tolerance Notes" + } + }, + "type": "object", + "required": [ + "name", + "brand", + "category", + "recommended_time", + "leave_on" + ], + "title": "ProductCreate" + }, + "ProductEffectProfile": { + "properties": { + "hydration_immediate": { + "type": "integer", + "maximum": 5.0, + "minimum": 0.0, + "title": "Hydration Immediate", + "default": 0 + }, + "hydration_long_term": { + "type": "integer", + "maximum": 5.0, + "minimum": 0.0, + "title": "Hydration Long Term", + "default": 0 + }, + "barrier_repair_strength": { + "type": "integer", + "maximum": 5.0, + "minimum": 0.0, + "title": "Barrier Repair Strength", + "default": 0 + }, + "soothing_strength": { + "type": "integer", + "maximum": 5.0, + "minimum": 0.0, + "title": "Soothing Strength", + "default": 0 + }, + "exfoliation_strength": { + "type": "integer", + "maximum": 5.0, + "minimum": 0.0, + "title": "Exfoliation Strength", + "default": 0 + }, + "retinoid_strength": { + "type": "integer", + "maximum": 5.0, + "minimum": 0.0, + "title": "Retinoid Strength", + "default": 0 + }, + "irritation_risk": { + "type": "integer", + "maximum": 5.0, + "minimum": 0.0, + "title": "Irritation Risk", + "default": 0 + }, + "comedogenic_risk": { + "type": "integer", + "maximum": 5.0, + "minimum": 0.0, + "title": "Comedogenic Risk", + "default": 0 + }, + "barrier_disruption_risk": { + "type": "integer", + "maximum": 5.0, + "minimum": 0.0, + "title": "Barrier Disruption Risk", + "default": 0 + }, + "dryness_risk": { + "type": "integer", + "maximum": 5.0, + "minimum": 0.0, + "title": "Dryness Risk", + "default": 0 + }, + "brightening_strength": { + "type": "integer", + "maximum": 5.0, + "minimum": 0.0, + "title": "Brightening Strength", + "default": 0 + }, + "anti_acne_strength": { + "type": "integer", + "maximum": 5.0, + "minimum": 0.0, + "title": "Anti Acne Strength", + "default": 0 + }, + "anti_aging_strength": { + "type": "integer", + "maximum": 5.0, + "minimum": 0.0, + "title": "Anti Aging Strength", + "default": 0 + } + }, + "type": "object", + "title": "ProductEffectProfile" + }, + "ProductInventory": { + "properties": { + "id": { + "type": "string", + "format": "uuid", + "title": "Id" + }, + "product_id": { + "type": "string", + "format": "uuid", + "title": "Product Id" + }, + "is_opened": { + "type": "boolean", + "title": "Is Opened", + "default": false + }, + "opened_at": { + "anyOf": [ + { + "type": "string", + "format": "date" + }, + { + "type": "null" + } + ], + "title": "Opened At" + }, + "finished_at": { + "anyOf": [ + { + "type": "string", + "format": "date" + }, + { + "type": "null" + } + ], + "title": "Finished At" + }, + "expiry_date": { + "anyOf": [ + { + "type": "string", + "format": "date" + }, + { + "type": "null" + } + ], + "title": "Expiry Date" + }, + "remaining_level": { + "anyOf": [ + { + "$ref": "#/components/schemas/RemainingLevel" + }, + { + "type": "null" + } + ] + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + }, + "created_at": { + "type": "string", + "format": "date-time", + "title": "Created At" + } + }, + "type": "object", + "required": [ + "product_id" + ], + "title": "ProductInventory" + }, + "ProductListItem": { + "properties": { + "id": { + "type": "string", + "format": "uuid", + "title": "Id" + }, + "name": { + "type": "string", + "title": "Name" + }, + "brand": { + "type": "string", + "title": "Brand" + }, + "category": { + "$ref": "#/components/schemas/ProductCategory" + }, + "recommended_time": { + "$ref": "#/components/schemas/DayTime" + }, + "targets": { + "items": { + "$ref": "#/components/schemas/SkinConcern" + }, + "type": "array", + "title": "Targets" + }, + "is_owned": { + "type": "boolean", + "title": "Is Owned" + }, + "price_tier": { + "anyOf": [ + { + "$ref": "#/components/schemas/PriceTier" + }, + { + "type": "null" + } + ] + }, + "price_per_use_pln": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Price Per Use Pln" + }, + "price_tier_source": { + "anyOf": [ + { + "type": "string", + "enum": [ + "category", + "fallback", + "insufficient_data" + ] + }, + { + "type": "null" + } + ], + "title": "Price Tier Source" + } + }, + "type": "object", + "required": [ + "id", + "name", + "brand", + "category", + "recommended_time", + "is_owned" + ], + "title": "ProductListItem" + }, + "ProductParseRequest": { + "properties": { + "text": { + "type": "string", + "title": "Text" + } + }, + "type": "object", + "required": [ + "text" + ], + "title": "ProductParseRequest" + }, + "ProductParseResponse": { + "properties": { + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name" + }, + "brand": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Brand" + }, + "line_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Line Name" + }, + "sku": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Sku" + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Url" + }, + "barcode": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Barcode" + }, + "category": { + "anyOf": [ + { + "$ref": "#/components/schemas/ProductCategory" + }, + { + "type": "null" + } + ] + }, + "recommended_time": { + "anyOf": [ + { + "$ref": "#/components/schemas/DayTime" + }, + { + "type": "null" + } + ] + }, + "texture": { + "anyOf": [ + { + "$ref": "#/components/schemas/TextureType" + }, + { + "type": "null" + } + ] + }, + "absorption_speed": { + "anyOf": [ + { + "$ref": "#/components/schemas/AbsorptionSpeed" + }, + { + "type": "null" + } + ] + }, + "leave_on": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Leave On" + }, + "price_amount": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Price Amount" + }, + "price_currency": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Price Currency" + }, + "size_ml": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Size Ml" + }, + "pao_months": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pao Months" + }, + "inci": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Inci" + }, + "actives": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/ActiveIngredient" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Actives" + }, + "recommended_for": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/SkinType" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Recommended For" + }, + "targets": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/SkinConcern" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Targets" + }, + "fragrance_free": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Fragrance Free" + }, + "essential_oils_free": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Essential Oils Free" + }, + "alcohol_denat_free": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Alcohol Denat Free" + }, + "pregnancy_safe": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pregnancy Safe" + }, + "product_effect_profile": { + "anyOf": [ + { + "$ref": "#/components/schemas/ProductEffectProfile" + }, + { + "type": "null" + } + ] + }, + "ph_min": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Ph Min" + }, + "ph_max": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Ph Max" + }, + "context_rules": { + "anyOf": [ + { + "$ref": "#/components/schemas/ProductContext" + }, + { + "type": "null" + } + ] + }, + "min_interval_hours": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Min Interval Hours" + }, + "max_frequency_per_week": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Max Frequency Per Week" + }, + "is_medication": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Medication" + }, + "is_tool": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Tool" + }, + "needle_length_mm": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Needle Length Mm" + } + }, + "type": "object", + "title": "ProductParseResponse" + }, + "ProductPublic": { + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "brand": { + "type": "string", + "title": "Brand" + }, + "line_name": { + "anyOf": [ + { + "type": "string", + "maxLength": 128 + }, + { + "type": "null" + } + ], + "title": "Line Name" + }, + "sku": { + "anyOf": [ + { + "type": "string", + "maxLength": 64 + }, + { + "type": "null" + } + ], + "title": "Sku" + }, + "url": { + "anyOf": [ + { + "type": "string", + "maxLength": 512 + }, + { + "type": "null" + } + ], + "title": "Url" + }, + "barcode": { + "anyOf": [ + { + "type": "string", + "maxLength": 64 + }, + { + "type": "null" + } + ], + "title": "Barcode" + }, + "category": { + "$ref": "#/components/schemas/ProductCategory" + }, + "recommended_time": { + "$ref": "#/components/schemas/DayTime" + }, + "texture": { + "anyOf": [ + { + "$ref": "#/components/schemas/TextureType" + }, + { + "type": "null" + } + ] + }, + "absorption_speed": { + "anyOf": [ + { + "$ref": "#/components/schemas/AbsorptionSpeed" + }, + { + "type": "null" + } + ] + }, + "leave_on": { + "type": "boolean", + "title": "Leave On" + }, + "price_amount": { + "anyOf": [ + { + "type": "number", + "exclusiveMinimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Price Amount" + }, + "price_currency": { + "anyOf": [ + { + "type": "string", + "maxLength": 3, + "minLength": 3 + }, + { + "type": "null" + } + ], + "title": "Price Currency" + }, + "size_ml": { + "anyOf": [ + { + "type": "number", + "exclusiveMinimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Size Ml" + }, + "pao_months": { + "anyOf": [ + { + "type": "integer", + "maximum": 60.0, + "minimum": 1.0 + }, + { + "type": "null" + } + ], + "title": "Pao Months" + }, + "inci": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Inci" + }, + "actives": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/ActiveIngredient" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Actives" + }, + "recommended_for": { + "items": { + "$ref": "#/components/schemas/SkinType" + }, + "type": "array", + "title": "Recommended For" + }, + "targets": { + "items": { + "$ref": "#/components/schemas/SkinConcern" + }, + "type": "array", + "title": "Targets" + }, + "fragrance_free": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Fragrance Free" + }, + "essential_oils_free": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Essential Oils Free" + }, + "alcohol_denat_free": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Alcohol Denat Free" + }, + "pregnancy_safe": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pregnancy Safe" + }, + "product_effect_profile": { + "$ref": "#/components/schemas/ProductEffectProfile" + }, + "ph_min": { + "anyOf": [ + { + "type": "number", + "maximum": 14.0, + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Ph Min" + }, + "ph_max": { + "anyOf": [ + { + "type": "number", + "maximum": 14.0, + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Ph Max" + }, + "context_rules": { + "anyOf": [ + { + "$ref": "#/components/schemas/ProductContext" + }, + { + "type": "null" + } + ] + }, + "min_interval_hours": { + "anyOf": [ + { + "type": "integer", + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Min Interval Hours" + }, + "max_frequency_per_week": { + "anyOf": [ + { + "type": "integer", + "maximum": 14.0, + "minimum": 1.0 + }, + { + "type": "null" + } + ], + "title": "Max Frequency Per Week" + }, + "is_medication": { + "type": "boolean", + "title": "Is Medication", + "default": false + }, + "is_tool": { + "type": "boolean", + "title": "Is Tool", + "default": false + }, + "needle_length_mm": { + "anyOf": [ + { + "type": "number", + "exclusiveMinimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Needle Length Mm" + }, + "personal_tolerance_notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Personal Tolerance Notes" + }, + "id": { + "type": "string", + "format": "uuid", + "title": "Id" + }, + "created_at": { + "type": "string", + "format": "date-time", + "title": "Created At" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "title": "Updated At" + }, + "price_tier": { + "anyOf": [ + { + "$ref": "#/components/schemas/PriceTier" + }, + { + "type": "null" + } + ] + }, + "price_per_use_pln": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Price Per Use Pln" + }, + "price_tier_source": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Price Tier Source" + } + }, + "type": "object", + "required": [ + "name", + "brand", + "category", + "recommended_time", + "leave_on", + "id", + "created_at", + "updated_at" + ], + "title": "ProductPublic" + }, + "ProductSuggestion": { + "properties": { + "category": { + "$ref": "#/components/schemas/ProductCategory" + }, + "product_type": { + "type": "string", + "title": "Product Type" + }, + "priority": { + "type": "string", + "enum": [ + "high", + "medium", + "low" + ], + "title": "Priority" + }, + "key_ingredients": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Key Ingredients" + }, + "target_concerns": { + "items": { + "$ref": "#/components/schemas/SkinConcern" + }, + "type": "array", + "title": "Target Concerns" + }, + "recommended_time": { + "$ref": "#/components/schemas/DayTime" + }, + "frequency": { + "type": "string", + "title": "Frequency" + }, + "short_reason": { + "type": "string", + "title": "Short Reason" + }, + "reason_to_buy_now": { + "type": "string", + "title": "Reason To Buy Now" + }, + "reason_not_needed_if_budget_tight": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Reason Not Needed If Budget Tight" + }, + "fit_with_current_routine": { + "type": "string", + "title": "Fit With Current Routine" + }, + "usage_cautions": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Usage Cautions" + } + }, + "type": "object", + "required": [ + "category", + "product_type", + "priority", + "key_ingredients", + "target_concerns", + "recommended_time", + "frequency", + "short_reason", + "reason_to_buy_now", + "fit_with_current_routine", + "usage_cautions" + ], + "title": "ProductSuggestion" + }, + "ProductUpdate": { + "properties": { + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name" + }, + "brand": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Brand" + }, + "line_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Line Name" + }, + "sku": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Sku" + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Url" + }, + "barcode": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Barcode" + }, + "category": { + "anyOf": [ + { + "$ref": "#/components/schemas/ProductCategory" + }, + { + "type": "null" + } + ] + }, + "recommended_time": { + "anyOf": [ + { + "$ref": "#/components/schemas/DayTime" + }, + { + "type": "null" + } + ] + }, + "texture": { + "anyOf": [ + { + "$ref": "#/components/schemas/TextureType" + }, + { + "type": "null" + } + ] + }, + "absorption_speed": { + "anyOf": [ + { + "$ref": "#/components/schemas/AbsorptionSpeed" + }, + { + "type": "null" + } + ] + }, + "leave_on": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Leave On" + }, + "price_amount": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Price Amount" + }, + "price_currency": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Price Currency" + }, + "size_ml": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Size Ml" + }, + "pao_months": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Pao Months" + }, + "inci": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Inci" + }, + "actives": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/ActiveIngredient" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Actives" + }, + "recommended_for": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/SkinType" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Recommended For" + }, + "targets": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/SkinConcern" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Targets" + }, + "fragrance_free": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Fragrance Free" + }, + "essential_oils_free": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Essential Oils Free" + }, + "alcohol_denat_free": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Alcohol Denat Free" + }, + "pregnancy_safe": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pregnancy Safe" + }, + "product_effect_profile": { + "anyOf": [ + { + "$ref": "#/components/schemas/ProductEffectProfile" + }, + { + "type": "null" + } + ] + }, + "ph_min": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Ph Min" + }, + "ph_max": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Ph Max" + }, + "context_rules": { + "anyOf": [ + { + "$ref": "#/components/schemas/ProductContext" + }, + { + "type": "null" + } + ] + }, + "min_interval_hours": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Min Interval Hours" + }, + "max_frequency_per_week": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Max Frequency Per Week" + }, + "is_medication": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Medication" + }, + "is_tool": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Is Tool" + }, + "needle_length_mm": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Needle Length Mm" + }, + "personal_tolerance_notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Personal Tolerance Notes" + } + }, + "type": "object", + "title": "ProductUpdate" + }, + "ProductWithInventory": { + "properties": { + "name": { + "type": "string", + "title": "Name" + }, + "brand": { + "type": "string", + "title": "Brand" + }, + "line_name": { + "anyOf": [ + { + "type": "string", + "maxLength": 128 + }, + { + "type": "null" + } + ], + "title": "Line Name" + }, + "sku": { + "anyOf": [ + { + "type": "string", + "maxLength": 64 + }, + { + "type": "null" + } + ], + "title": "Sku" + }, + "url": { + "anyOf": [ + { + "type": "string", + "maxLength": 512 + }, + { + "type": "null" + } + ], + "title": "Url" + }, + "barcode": { + "anyOf": [ + { + "type": "string", + "maxLength": 64 + }, + { + "type": "null" + } + ], + "title": "Barcode" + }, + "category": { + "$ref": "#/components/schemas/ProductCategory" + }, + "recommended_time": { + "$ref": "#/components/schemas/DayTime" + }, + "texture": { + "anyOf": [ + { + "$ref": "#/components/schemas/TextureType" + }, + { + "type": "null" + } + ] + }, + "absorption_speed": { + "anyOf": [ + { + "$ref": "#/components/schemas/AbsorptionSpeed" + }, + { + "type": "null" + } + ] + }, + "leave_on": { + "type": "boolean", + "title": "Leave On" + }, + "price_amount": { + "anyOf": [ + { + "type": "number", + "exclusiveMinimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Price Amount" + }, + "price_currency": { + "anyOf": [ + { + "type": "string", + "maxLength": 3, + "minLength": 3 + }, + { + "type": "null" + } + ], + "title": "Price Currency" + }, + "size_ml": { + "anyOf": [ + { + "type": "number", + "exclusiveMinimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Size Ml" + }, + "pao_months": { + "anyOf": [ + { + "type": "integer", + "maximum": 60.0, + "minimum": 1.0 + }, + { + "type": "null" + } + ], + "title": "Pao Months" + }, + "inci": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Inci" + }, + "actives": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/ActiveIngredient" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Actives" + }, + "recommended_for": { + "items": { + "$ref": "#/components/schemas/SkinType" + }, + "type": "array", + "title": "Recommended For" + }, + "targets": { + "items": { + "$ref": "#/components/schemas/SkinConcern" + }, + "type": "array", + "title": "Targets" + }, + "fragrance_free": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Fragrance Free" + }, + "essential_oils_free": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Essential Oils Free" + }, + "alcohol_denat_free": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Alcohol Denat Free" + }, + "pregnancy_safe": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Pregnancy Safe" + }, + "product_effect_profile": { + "$ref": "#/components/schemas/ProductEffectProfile" + }, + "ph_min": { + "anyOf": [ + { + "type": "number", + "maximum": 14.0, + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Ph Min" + }, + "ph_max": { + "anyOf": [ + { + "type": "number", + "maximum": 14.0, + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Ph Max" + }, + "context_rules": { + "anyOf": [ + { + "$ref": "#/components/schemas/ProductContext" + }, + { + "type": "null" + } + ] + }, + "min_interval_hours": { + "anyOf": [ + { + "type": "integer", + "minimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Min Interval Hours" + }, + "max_frequency_per_week": { + "anyOf": [ + { + "type": "integer", + "maximum": 14.0, + "minimum": 1.0 + }, + { + "type": "null" + } + ], + "title": "Max Frequency Per Week" + }, + "is_medication": { + "type": "boolean", + "title": "Is Medication", + "default": false + }, + "is_tool": { + "type": "boolean", + "title": "Is Tool", + "default": false + }, + "needle_length_mm": { + "anyOf": [ + { + "type": "number", + "exclusiveMinimum": 0.0 + }, + { + "type": "null" + } + ], + "title": "Needle Length Mm" + }, + "personal_tolerance_notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Personal Tolerance Notes" + }, + "id": { + "type": "string", + "format": "uuid", + "title": "Id" + }, + "created_at": { + "type": "string", + "format": "date-time", + "title": "Created At" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "title": "Updated At" + }, + "price_tier": { + "anyOf": [ + { + "$ref": "#/components/schemas/PriceTier" + }, + { + "type": "null" + } + ] + }, + "price_per_use_pln": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Price Per Use Pln" + }, + "price_tier_source": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Price Tier Source" + }, + "inventory": { + "items": { + "$ref": "#/components/schemas/ProductInventory" + }, + "type": "array", + "title": "Inventory", + "default": [] + } + }, + "type": "object", + "required": [ + "name", + "brand", + "category", + "recommended_time", + "leave_on", + "id", + "created_at", + "updated_at" + ], + "title": "ProductWithInventory" + }, + "RemainingLevel": { + "type": "string", + "enum": [ + "high", + "medium", + "low", + "nearly_empty" + ], + "title": "RemainingLevel" + }, + "ResponseMetadata": { + "properties": { + "model_used": { + "type": "string", + "title": "Model Used" + }, + "duration_ms": { + "type": "integer", + "title": "Duration Ms" + }, + "reasoning_chain": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Reasoning Chain" + }, + "token_metrics": { + "anyOf": [ + { + "$ref": "#/components/schemas/TokenMetrics" + }, + { + "type": "null" + } + ] + } + }, + "type": "object", + "required": [ + "model_used", + "duration_ms" + ], + "title": "ResponseMetadata", + "description": "Metadata about the LLM response for observability." + }, + "ResultFlag": { + "type": "string", + "enum": [ + "N", + "ABN", + "POS", + "NEG", + "L", + "H" + ], + "title": "ResultFlag" + }, + "Routine": { + "properties": { + "id": { + "type": "string", + "format": "uuid", + "title": "Id" + }, + "routine_date": { + "type": "string", + "format": "date", + "title": "Routine Date" + }, + "part_of_day": { + "$ref": "#/components/schemas/PartOfDay" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + }, + "created_at": { + "type": "string", + "format": "date-time", + "title": "Created At" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "title": "Updated At" + } + }, + "type": "object", + "required": [ + "routine_date", + "part_of_day" + ], + "title": "Routine" + }, + "RoutineCreate": { + "properties": { + "routine_date": { + "type": "string", + "format": "date", + "title": "Routine Date" + }, + "part_of_day": { + "$ref": "#/components/schemas/PartOfDay" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + } + }, + "type": "object", + "required": [ + "routine_date", + "part_of_day" + ], + "title": "RoutineCreate" + }, + "RoutineStep": { + "properties": { + "id": { + "type": "string", + "format": "uuid", + "title": "Id" + }, + "routine_id": { + "type": "string", + "format": "uuid", + "title": "Routine Id" + }, + "product_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Product Id" + }, + "order_index": { + "type": "integer", + "minimum": 0.0, + "title": "Order Index" + }, + "action_type": { + "anyOf": [ + { + "$ref": "#/components/schemas/GroomingAction" + }, + { + "type": "null" + } + ] + }, + "action_notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Action Notes" + }, + "dose": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dose" + }, + "region": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Region" + } + }, + "type": "object", + "required": [ + "routine_id", + "order_index" + ], + "title": "RoutineStep" + }, + "RoutineStepCreate": { + "properties": { + "product_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Product Id" + }, + "order_index": { + "type": "integer", + "title": "Order Index" + }, + "action_type": { + "anyOf": [ + { + "$ref": "#/components/schemas/GroomingAction" + }, + { + "type": "null" + } + ] + }, + "action_notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Action Notes" + }, + "dose": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dose" + }, + "region": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Region" + } + }, + "type": "object", + "required": [ + "order_index" + ], + "title": "RoutineStepCreate" + }, + "RoutineStepUpdate": { + "properties": { + "product_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Product Id" + }, + "order_index": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Order Index" + }, + "action_type": { + "anyOf": [ + { + "$ref": "#/components/schemas/GroomingAction" + }, + { + "type": "null" + } + ] + }, + "action_notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Action Notes" + }, + "dose": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dose" + }, + "region": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Region" + } + }, + "type": "object", + "title": "RoutineStepUpdate" + }, + "RoutineSuggestion": { + "properties": { + "steps": { + "items": { + "$ref": "#/components/schemas/SuggestedStep" + }, + "type": "array", + "title": "Steps" + }, + "reasoning": { + "type": "string", + "title": "Reasoning" + }, + "summary": { + "anyOf": [ + { + "$ref": "#/components/schemas/RoutineSuggestionSummary" + }, + { + "type": "null" + } + ] + }, + "validation_warnings": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Validation Warnings" + }, + "auto_fixes_applied": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Auto Fixes Applied" + }, + "response_metadata": { + "anyOf": [ + { + "$ref": "#/components/schemas/ResponseMetadata" + }, + { + "type": "null" + } + ] + } + }, + "type": "object", + "required": [ + "steps", + "reasoning" + ], + "title": "RoutineSuggestion" + }, + "RoutineSuggestionSummary": { + "properties": { + "primary_goal": { + "type": "string", + "title": "Primary Goal", + "default": "" + }, + "constraints_applied": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Constraints Applied" + }, + "confidence": { + "type": "number", + "title": "Confidence", + "default": 0.0 + } + }, + "type": "object", + "title": "RoutineSuggestionSummary" + }, + "RoutineUpdate": { + "properties": { + "routine_date": { + "anyOf": [ + { + "type": "string", + "format": "date" + }, + { + "type": "null" + } + ], + "title": "Routine Date" + }, + "part_of_day": { + "anyOf": [ + { + "$ref": "#/components/schemas/PartOfDay" + }, + { + "type": "null" + } + ] + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + } + }, + "type": "object", + "title": "RoutineUpdate" + }, + "SexAtBirth": { + "type": "string", + "enum": [ + "male", + "female", + "intersex" + ], + "title": "SexAtBirth" + }, + "ShoppingSuggestionResponse": { + "properties": { + "suggestions": { + "items": { + "$ref": "#/components/schemas/ProductSuggestion" + }, + "type": "array", + "title": "Suggestions" + }, + "reasoning": { + "type": "string", + "title": "Reasoning" + }, + "validation_warnings": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Validation Warnings" + }, + "auto_fixes_applied": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Auto Fixes Applied" + }, + "response_metadata": { + "anyOf": [ + { + "$ref": "#/components/schemas/ResponseMetadata" + }, + { + "type": "null" + } + ] + } + }, + "type": "object", + "required": [ + "suggestions", + "reasoning" + ], + "title": "ShoppingSuggestionResponse" + }, + "SkinConcern": { + "type": "string", + "enum": [ + "acne", + "rosacea", + "hyperpigmentation", + "aging", + "dehydration", + "redness", + "damaged_barrier", + "pore_visibility", + "uneven_texture", + "hair_growth", + "sebum_excess" + ], + "title": "SkinConcern" + }, + "SkinConditionSnapshotPublic": { + "properties": { + "snapshot_date": { + "type": "string", + "format": "date", + "title": "Snapshot Date" + }, + "overall_state": { + "anyOf": [ + { + "$ref": "#/components/schemas/OverallSkinState" + }, + { + "type": "null" + } + ] + }, + "skin_type": { + "anyOf": [ + { + "$ref": "#/components/schemas/SkinType" + }, + { + "type": "null" + } + ] + }, + "texture": { + "anyOf": [ + { + "$ref": "#/components/schemas/SkinTexture" + }, + { + "type": "null" + } + ] + }, + "hydration_level": { + "anyOf": [ + { + "type": "integer", + "maximum": 5.0, + "minimum": 1.0 + }, + { + "type": "null" + } + ], + "title": "Hydration Level" + }, + "sebum_tzone": { + "anyOf": [ + { + "type": "integer", + "maximum": 5.0, + "minimum": 1.0 + }, + { + "type": "null" + } + ], + "title": "Sebum Tzone" + }, + "sebum_cheeks": { + "anyOf": [ + { + "type": "integer", + "maximum": 5.0, + "minimum": 1.0 + }, + { + "type": "null" + } + ], + "title": "Sebum Cheeks" + }, + "sensitivity_level": { + "anyOf": [ + { + "type": "integer", + "maximum": 5.0, + "minimum": 1.0 + }, + { + "type": "null" + } + ], + "title": "Sensitivity Level" + }, + "barrier_state": { + "anyOf": [ + { + "$ref": "#/components/schemas/BarrierState" + }, + { + "type": "null" + } + ] + }, + "active_concerns": { + "items": { + "$ref": "#/components/schemas/SkinConcern" + }, + "type": "array", + "title": "Active Concerns" + }, + "risks": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Risks" + }, + "priorities": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Priorities" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + }, + "id": { + "type": "string", + "format": "uuid", + "title": "Id" + }, + "created_at": { + "type": "string", + "format": "date-time", + "title": "Created At" + } + }, + "type": "object", + "required": [ + "snapshot_date", + "id", + "created_at" + ], + "title": "SkinConditionSnapshotPublic" + }, + "SkinPhotoAnalysisResponse": { + "properties": { + "overall_state": { + "anyOf": [ + { + "$ref": "#/components/schemas/OverallSkinState" + }, + { + "type": "null" + } + ] + }, + "skin_type": { + "anyOf": [ + { + "$ref": "#/components/schemas/SkinType" + }, + { + "type": "null" + } + ] + }, + "texture": { + "anyOf": [ + { + "$ref": "#/components/schemas/SkinTexture" + }, + { + "type": "null" + } + ] + }, + "hydration_level": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Hydration Level" + }, + "sebum_tzone": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Sebum Tzone" + }, + "sebum_cheeks": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Sebum Cheeks" + }, + "sensitivity_level": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Sensitivity Level" + }, + "barrier_state": { + "anyOf": [ + { + "$ref": "#/components/schemas/BarrierState" + }, + { + "type": "null" + } + ] + }, + "active_concerns": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/SkinConcern" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Active Concerns" + }, + "risks": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Risks" + }, + "priorities": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Priorities" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + } + }, + "type": "object", + "title": "SkinPhotoAnalysisResponse" + }, + "SkinTexture": { + "type": "string", + "enum": [ + "smooth", + "rough", + "flaky", + "bumpy" + ], + "title": "SkinTexture" + }, + "SkinType": { + "type": "string", + "enum": [ + "dry", + "oily", + "combination", + "sensitive", + "normal", + "acne_prone" + ], + "title": "SkinType" + }, + "SnapshotCreate": { + "properties": { + "snapshot_date": { + "type": "string", + "format": "date", + "title": "Snapshot Date" + }, + "overall_state": { + "anyOf": [ + { + "$ref": "#/components/schemas/OverallSkinState" + }, + { + "type": "null" + } + ] + }, + "skin_type": { + "anyOf": [ + { + "$ref": "#/components/schemas/SkinType" + }, + { + "type": "null" + } + ] + }, + "texture": { + "anyOf": [ + { + "$ref": "#/components/schemas/SkinTexture" + }, + { + "type": "null" + } + ] + }, + "hydration_level": { + "anyOf": [ + { + "type": "integer", + "maximum": 5.0, + "minimum": 1.0 + }, + { + "type": "null" + } + ], + "title": "Hydration Level" + }, + "sebum_tzone": { + "anyOf": [ + { + "type": "integer", + "maximum": 5.0, + "minimum": 1.0 + }, + { + "type": "null" + } + ], + "title": "Sebum Tzone" + }, + "sebum_cheeks": { + "anyOf": [ + { + "type": "integer", + "maximum": 5.0, + "minimum": 1.0 + }, + { + "type": "null" + } + ], + "title": "Sebum Cheeks" + }, + "sensitivity_level": { + "anyOf": [ + { + "type": "integer", + "maximum": 5.0, + "minimum": 1.0 + }, + { + "type": "null" + } + ], + "title": "Sensitivity Level" + }, + "barrier_state": { + "anyOf": [ + { + "$ref": "#/components/schemas/BarrierState" + }, + { + "type": "null" + } + ] + }, + "active_concerns": { + "items": { + "$ref": "#/components/schemas/SkinConcern" + }, + "type": "array", + "title": "Active Concerns" + }, + "risks": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Risks" + }, + "priorities": { + "items": { + "type": "string" + }, + "type": "array", + "title": "Priorities" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + } + }, + "type": "object", + "required": [ + "snapshot_date" + ], + "title": "SnapshotCreate" + }, + "SnapshotUpdate": { + "properties": { + "snapshot_date": { + "anyOf": [ + { + "type": "string", + "format": "date" + }, + { + "type": "null" + } + ], + "title": "Snapshot Date" + }, + "overall_state": { + "anyOf": [ + { + "$ref": "#/components/schemas/OverallSkinState" + }, + { + "type": "null" + } + ] + }, + "skin_type": { + "anyOf": [ + { + "$ref": "#/components/schemas/SkinType" + }, + { + "type": "null" + } + ] + }, + "texture": { + "anyOf": [ + { + "$ref": "#/components/schemas/SkinTexture" + }, + { + "type": "null" + } + ] + }, + "hydration_level": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Hydration Level" + }, + "sebum_tzone": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Sebum Tzone" + }, + "sebum_cheeks": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Sebum Cheeks" + }, + "sensitivity_level": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Sensitivity Level" + }, + "barrier_state": { + "anyOf": [ + { + "$ref": "#/components/schemas/BarrierState" + }, + { + "type": "null" + } + ] + }, + "active_concerns": { + "anyOf": [ + { + "items": { + "$ref": "#/components/schemas/SkinConcern" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Active Concerns" + }, + "risks": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Risks" + }, + "priorities": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Priorities" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + } + }, + "type": "object", + "title": "SnapshotUpdate" + }, + "StrengthLevel": { + "type": "integer", + "enum": [ + 1, + 2, + 3 + ], + "title": "StrengthLevel" + }, + "SuggestBatchRequest": { + "properties": { + "from_date": { + "type": "string", + "format": "date", + "title": "From Date" + }, + "to_date": { + "type": "string", + "format": "date", + "title": "To Date" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + }, + "include_minoxidil_beard": { + "type": "boolean", + "title": "Include Minoxidil Beard", + "default": false + }, + "minimize_products": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Minimize Products" + } + }, + "type": "object", + "required": [ + "from_date", + "to_date" + ], + "title": "SuggestBatchRequest" + }, + "SuggestRoutineRequest": { + "properties": { + "routine_date": { + "type": "string", + "format": "date", + "title": "Routine Date" + }, + "part_of_day": { + "$ref": "#/components/schemas/PartOfDay" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + }, + "include_minoxidil_beard": { + "type": "boolean", + "title": "Include Minoxidil Beard", + "default": false + }, + "leaving_home": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Leaving Home" + } + }, + "type": "object", + "required": [ + "routine_date", + "part_of_day" + ], + "title": "SuggestRoutineRequest" + }, + "SuggestedStep": { + "properties": { + "product_id": { + "anyOf": [ + { + "type": "string", + "format": "uuid" + }, + { + "type": "null" + } + ], + "title": "Product Id" + }, + "action_type": { + "anyOf": [ + { + "$ref": "#/components/schemas/GroomingAction" + }, + { + "type": "null" + } + ] + }, + "action_notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Action Notes" + }, + "region": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Region" + }, + "why_this_step": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Why This Step" + }, + "optional": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "Optional" + } + }, + "type": "object", + "title": "SuggestedStep" + }, + "TextureType": { + "type": "string", + "enum": [ + "watery", + "gel", + "emulsion", + "cream", + "oil", + "balm", + "foam", + "fluid" + ], + "title": "TextureType" + }, + "TokenMetrics": { + "properties": { + "prompt_tokens": { + "type": "integer", + "title": "Prompt Tokens" + }, + "completion_tokens": { + "type": "integer", + "title": "Completion Tokens" + }, + "thoughts_tokens": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Thoughts Tokens" + }, + "total_tokens": { + "type": "integer", + "title": "Total Tokens" + } + }, + "type": "object", + "required": [ + "prompt_tokens", + "completion_tokens", + "total_tokens" + ], + "title": "TokenMetrics", + "description": "Token usage metrics from LLM call." + }, + "UsageCreate": { + "properties": { + "dose_value": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Dose Value" + }, + "dose_unit": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dose Unit" + }, + "frequency": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Frequency" + }, + "schedule_text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Schedule Text" + }, + "as_needed": { + "type": "boolean", + "title": "As Needed", + "default": false + }, + "valid_from": { + "type": "string", + "format": "date-time", + "title": "Valid From" + }, + "valid_to": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "Valid To" + }, + "source_file": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source File" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + } + }, + "type": "object", + "required": [ + "valid_from" + ], + "title": "UsageCreate" + }, + "UsageUpdate": { + "properties": { + "dose_value": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Dose Value" + }, + "dose_unit": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dose Unit" + }, + "frequency": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Frequency" + }, + "schedule_text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Schedule Text" + }, + "as_needed": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "title": "As Needed" + }, + "valid_from": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "Valid From" + }, + "valid_to": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "title": "Valid To" + }, + "source_file": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Source File" + }, + "notes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Notes" + } + }, + "type": "object", + "title": "UsageUpdate" + }, + "UserProfilePublic": { + "properties": { + "id": { + "type": "string", + "title": "Id" + }, + "birth_date": { + "anyOf": [ + { + "type": "string", + "format": "date" + }, + { + "type": "null" + } + ], + "title": "Birth Date" + }, + "sex_at_birth": { + "anyOf": [ + { + "$ref": "#/components/schemas/SexAtBirth" + }, + { + "type": "null" + } + ] + }, + "created_at": { + "type": "string", + "format": "date-time", + "title": "Created At" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "title": "Updated At" + } + }, + "type": "object", + "required": [ + "id", + "birth_date", + "sex_at_birth", + "created_at", + "updated_at" + ], + "title": "UserProfilePublic" + }, + "UserProfileUpdate": { + "properties": { + "birth_date": { + "anyOf": [ + { + "type": "string", + "format": "date" + }, + { + "type": "null" + } + ], + "title": "Birth Date" + }, + "sex_at_birth": { + "anyOf": [ + { + "$ref": "#/components/schemas/SexAtBirth" + }, + { + "type": "null" + } + ] + } + }, + "type": "object", + "title": "UserProfileUpdate" + }, + "ValidationError": { + "properties": { + "loc": { + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "type": "array", + "title": "Location" + }, + "msg": { + "type": "string", + "title": "Message" + }, + "type": { + "type": "string", + "title": "Error Type" + }, + "input": { + "title": "Input" + }, + "ctx": { + "type": "object", + "title": "Context" + } + }, + "type": "object", + "required": [ + "loc", + "msg", + "type" + ], + "title": "ValidationError" + } + } + } +} diff --git a/frontend/package.json b/frontend/package.json index b3169c9..29b5018 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -11,10 +11,12 @@ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", "lint": "eslint .", - "format": "prettier --write ." + "format": "prettier --write .", + "generate:api": "cd ../backend && uv run python -c \"import json; from main import app; print(json.dumps(app.openapi(), indent=2))\" > ../frontend/openapi.json && cd ../frontend && openapi-ts" }, "devDependencies": { "@eslint/js": "^10.0.1", + "@hey-api/openapi-ts": "^0.94.0", "@internationalized/date": "^3.11.0", "@lucide/svelte": "^0.561.0", "@sveltejs/adapter-node": "^5.0.0", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 5bfa6f0..224baef 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -1,13 +1,14 @@ -lockfileVersion: "9.0" +lockfileVersion: '9.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false importers: + .: dependencies: - "@inlang/paraglide-js": + '@inlang/paraglide-js': specifier: ^2.13.0 version: 2.13.0 bits-ui: @@ -29,25 +30,28 @@ importers: specifier: ^3.5.0 version: 3.5.0 devDependencies: - "@eslint/js": + '@eslint/js': specifier: ^10.0.1 version: 10.0.1(eslint@10.0.2(jiti@2.6.1)) - "@internationalized/date": + '@hey-api/openapi-ts': + specifier: ^0.94.0 + version: 0.94.0(typescript@5.9.3) + '@internationalized/date': specifier: ^3.11.0 version: 3.11.0 - "@lucide/svelte": + '@lucide/svelte': specifier: ^0.561.0 version: 0.561.0(svelte@5.53.5) - "@sveltejs/adapter-node": + '@sveltejs/adapter-node': specifier: ^5.0.0 version: 5.5.4(@sveltejs/kit@2.53.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1))) - "@sveltejs/kit": + '@sveltejs/kit': specifier: ^2.50.2 version: 2.53.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)) - "@sveltejs/vite-plugin-svelte": + '@sveltejs/vite-plugin-svelte': specifier: ^6.2.4 version: 6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)) - "@tailwindcss/vite": + '@tailwindcss/vite': specifier: ^4.2.1 version: 4.2.1(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)) eslint: @@ -91,1197 +95,834 @@ importers: version: 7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1) packages: - "@esbuild/aix-ppc64@0.27.3": - resolution: - { - integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==, - } - engines: { node: ">=18" } + + '@esbuild/aix-ppc64@0.27.3': + resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} + engines: {node: '>=18'} cpu: [ppc64] os: [aix] - "@esbuild/android-arm64@0.27.3": - resolution: - { - integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==, - } - engines: { node: ">=18" } + '@esbuild/android-arm64@0.27.3': + resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} + engines: {node: '>=18'} cpu: [arm64] os: [android] - "@esbuild/android-arm@0.27.3": - resolution: - { - integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==, - } - engines: { node: ">=18" } + '@esbuild/android-arm@0.27.3': + resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} + engines: {node: '>=18'} cpu: [arm] os: [android] - "@esbuild/android-x64@0.27.3": - resolution: - { - integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==, - } - engines: { node: ">=18" } + '@esbuild/android-x64@0.27.3': + resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} + engines: {node: '>=18'} cpu: [x64] os: [android] - "@esbuild/darwin-arm64@0.27.3": - resolution: - { - integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==, - } - engines: { node: ">=18" } + '@esbuild/darwin-arm64@0.27.3': + resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} + engines: {node: '>=18'} cpu: [arm64] os: [darwin] - "@esbuild/darwin-x64@0.27.3": - resolution: - { - integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==, - } - engines: { node: ">=18" } + '@esbuild/darwin-x64@0.27.3': + resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} + engines: {node: '>=18'} cpu: [x64] os: [darwin] - "@esbuild/freebsd-arm64@0.27.3": - resolution: - { - integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==, - } - engines: { node: ">=18" } + '@esbuild/freebsd-arm64@0.27.3': + resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} + engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - "@esbuild/freebsd-x64@0.27.3": - resolution: - { - integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==, - } - engines: { node: ">=18" } + '@esbuild/freebsd-x64@0.27.3': + resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} + engines: {node: '>=18'} cpu: [x64] os: [freebsd] - "@esbuild/linux-arm64@0.27.3": - resolution: - { - integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==, - } - engines: { node: ">=18" } + '@esbuild/linux-arm64@0.27.3': + resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} + engines: {node: '>=18'} cpu: [arm64] os: [linux] - "@esbuild/linux-arm@0.27.3": - resolution: - { - integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==, - } - engines: { node: ">=18" } + '@esbuild/linux-arm@0.27.3': + resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} + engines: {node: '>=18'} cpu: [arm] os: [linux] - "@esbuild/linux-ia32@0.27.3": - resolution: - { - integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==, - } - engines: { node: ">=18" } + '@esbuild/linux-ia32@0.27.3': + resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} + engines: {node: '>=18'} cpu: [ia32] os: [linux] - "@esbuild/linux-loong64@0.27.3": - resolution: - { - integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==, - } - engines: { node: ">=18" } + '@esbuild/linux-loong64@0.27.3': + resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} + engines: {node: '>=18'} cpu: [loong64] os: [linux] - "@esbuild/linux-mips64el@0.27.3": - resolution: - { - integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==, - } - engines: { node: ">=18" } + '@esbuild/linux-mips64el@0.27.3': + resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} + engines: {node: '>=18'} cpu: [mips64el] os: [linux] - "@esbuild/linux-ppc64@0.27.3": - resolution: - { - integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==, - } - engines: { node: ">=18" } + '@esbuild/linux-ppc64@0.27.3': + resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} + engines: {node: '>=18'} cpu: [ppc64] os: [linux] - "@esbuild/linux-riscv64@0.27.3": - resolution: - { - integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==, - } - engines: { node: ">=18" } + '@esbuild/linux-riscv64@0.27.3': + resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} + engines: {node: '>=18'} cpu: [riscv64] os: [linux] - "@esbuild/linux-s390x@0.27.3": - resolution: - { - integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==, - } - engines: { node: ">=18" } + '@esbuild/linux-s390x@0.27.3': + resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} + engines: {node: '>=18'} cpu: [s390x] os: [linux] - "@esbuild/linux-x64@0.27.3": - resolution: - { - integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==, - } - engines: { node: ">=18" } + '@esbuild/linux-x64@0.27.3': + resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} + engines: {node: '>=18'} cpu: [x64] os: [linux] - "@esbuild/netbsd-arm64@0.27.3": - resolution: - { - integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==, - } - engines: { node: ">=18" } + '@esbuild/netbsd-arm64@0.27.3': + resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} + engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - "@esbuild/netbsd-x64@0.27.3": - resolution: - { - integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==, - } - engines: { node: ">=18" } + '@esbuild/netbsd-x64@0.27.3': + resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} + engines: {node: '>=18'} cpu: [x64] os: [netbsd] - "@esbuild/openbsd-arm64@0.27.3": - resolution: - { - integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==, - } - engines: { node: ">=18" } + '@esbuild/openbsd-arm64@0.27.3': + resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} + engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - "@esbuild/openbsd-x64@0.27.3": - resolution: - { - integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==, - } - engines: { node: ">=18" } + '@esbuild/openbsd-x64@0.27.3': + resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} + engines: {node: '>=18'} cpu: [x64] os: [openbsd] - "@esbuild/openharmony-arm64@0.27.3": - resolution: - { - integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==, - } - engines: { node: ">=18" } + '@esbuild/openharmony-arm64@0.27.3': + resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} + engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - "@esbuild/sunos-x64@0.27.3": - resolution: - { - integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==, - } - engines: { node: ">=18" } + '@esbuild/sunos-x64@0.27.3': + resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} + engines: {node: '>=18'} cpu: [x64] os: [sunos] - "@esbuild/win32-arm64@0.27.3": - resolution: - { - integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==, - } - engines: { node: ">=18" } + '@esbuild/win32-arm64@0.27.3': + resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} + engines: {node: '>=18'} cpu: [arm64] os: [win32] - "@esbuild/win32-ia32@0.27.3": - resolution: - { - integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==, - } - engines: { node: ">=18" } + '@esbuild/win32-ia32@0.27.3': + resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} + engines: {node: '>=18'} cpu: [ia32] os: [win32] - "@esbuild/win32-x64@0.27.3": - resolution: - { - integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==, - } - engines: { node: ">=18" } + '@esbuild/win32-x64@0.27.3': + resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} + engines: {node: '>=18'} cpu: [x64] os: [win32] - "@eslint-community/eslint-utils@4.9.1": - resolution: - { - integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - "@eslint-community/regexpp@4.12.2": - resolution: - { - integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==, - } - engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - "@eslint/config-array@0.23.2": - resolution: - { - integrity: sha512-YF+fE6LV4v5MGWRGj7G404/OZzGNepVF8fxk7jqmqo3lrza7a0uUcDnROGRBG1WFC1omYUS/Wp1f42i0M+3Q3A==, - } - engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + '@eslint/config-array@0.23.2': + resolution: {integrity: sha512-YF+fE6LV4v5MGWRGj7G404/OZzGNepVF8fxk7jqmqo3lrza7a0uUcDnROGRBG1WFC1omYUS/Wp1f42i0M+3Q3A==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - "@eslint/config-helpers@0.5.2": - resolution: - { - integrity: sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ==, - } - engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + '@eslint/config-helpers@0.5.2': + resolution: {integrity: sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - "@eslint/core@1.1.0": - resolution: - { - integrity: sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==, - } - engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + '@eslint/core@1.1.0': + resolution: {integrity: sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - "@eslint/js@10.0.1": - resolution: - { - integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==, - } - engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + '@eslint/js@10.0.1': + resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: eslint: ^10.0.0 peerDependenciesMeta: eslint: optional: true - "@eslint/object-schema@3.0.2": - resolution: - { - integrity: sha512-HOy56KJt48Bx8KmJ+XGQNSUMT/6dZee/M54XyUyuvTvPXJmsERRvBchsUVx1UMe1WwIH49XLAczNC7V2INsuUw==, - } - engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + '@eslint/object-schema@3.0.2': + resolution: {integrity: sha512-HOy56KJt48Bx8KmJ+XGQNSUMT/6dZee/M54XyUyuvTvPXJmsERRvBchsUVx1UMe1WwIH49XLAczNC7V2INsuUw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - "@eslint/plugin-kit@0.6.0": - resolution: - { - integrity: sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ==, - } - engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + '@eslint/plugin-kit@0.6.0': + resolution: {integrity: sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - "@floating-ui/core@1.7.4": - resolution: - { - integrity: sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==, - } + '@floating-ui/core@1.7.4': + resolution: {integrity: sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==} - "@floating-ui/dom@1.7.5": - resolution: - { - integrity: sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==, - } + '@floating-ui/dom@1.7.5': + resolution: {integrity: sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==} - "@floating-ui/utils@0.2.10": - resolution: - { - integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==, - } + '@floating-ui/utils@0.2.10': + resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} - "@humanfs/core@0.19.1": - resolution: - { - integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==, - } - engines: { node: ">=18.18.0" } + '@hey-api/codegen-core@0.7.1': + resolution: {integrity: sha512-X5qG+rr/BJvr+pEGcoW6l2azoZGrVuxsviEIhuf+3VwL9bk0atfubT65Xwo+4jDxXvjbhZvlwS0Ty3I7mLE2fg==} + engines: {node: '>=20.19.0'} + peerDependencies: + typescript: '>=5.5.3' - "@humanfs/node@0.16.7": - resolution: - { - integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==, - } - engines: { node: ">=18.18.0" } + '@hey-api/json-schema-ref-parser@1.3.1': + resolution: {integrity: sha512-7atnpUkT8TyUPHYPLk91j/GyaqMuwTEHanLOe50Dlx0EEvNuQqFD52Yjg8x4KU0UFL1mWlyhE+sUE/wAtQ1N2A==} + engines: {node: '>=20.19.0'} - "@humanwhocodes/module-importer@1.0.1": - resolution: - { - integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, - } - engines: { node: ">=12.22" } + '@hey-api/openapi-ts@0.94.0': + resolution: {integrity: sha512-dbg3GG+v7sg9/Ahb7yFzwzQIJwm151JAtsnh9KtFyqiN0rGkMGA3/VqogEUq1kJB9XWrlMQwigwzhiEQ33VCSg==} + engines: {node: '>=20.19.0'} + hasBin: true + peerDependencies: + typescript: '>=5.5.3' - "@humanwhocodes/retry@0.4.3": - resolution: - { - integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==, - } - engines: { node: ">=18.18" } + '@hey-api/shared@0.2.2': + resolution: {integrity: sha512-vMqCS+j7F9xpWoXC7TBbqZkaelwrdeuSB+s/3elu54V5iq++S59xhkSq5rOgDIpI1trpE59zZQa6dpyUxItOgw==} + engines: {node: '>=20.19.0'} + peerDependencies: + typescript: '>=5.5.3' - "@inlang/paraglide-js@2.13.0": - resolution: - { - integrity: sha512-m7JQiTeLC3tY3DusUCc4iRWlsKoMuDLhw4iGhkY0yI96ki7PK42DLsi1kMk8ubSVenKOwgrs7eqQZN1Htvkhew==, - } + '@hey-api/types@0.1.3': + resolution: {integrity: sha512-mZaiPOWH761yD4GjDQvtjS2ZYLu5o5pI1TVSvV/u7cmbybv51/FVtinFBeaE1kFQCKZ8OQpn2ezjLBJrKsGATw==} + peerDependencies: + typescript: '>=5.5.3' + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.7': + resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + + '@inlang/paraglide-js@2.13.0': + resolution: {integrity: sha512-m7JQiTeLC3tY3DusUCc4iRWlsKoMuDLhw4iGhkY0yI96ki7PK42DLsi1kMk8ubSVenKOwgrs7eqQZN1Htvkhew==} hasBin: true - "@inlang/recommend-sherlock@0.2.1": - resolution: - { - integrity: sha512-ckv8HvHy/iTqaVAEKrr+gnl+p3XFNwe5D2+6w6wJk2ORV2XkcRkKOJ/XsTUJbPSiyi4PI+p+T3bqbmNx/rDUlg==, - } + '@inlang/recommend-sherlock@0.2.1': + resolution: {integrity: sha512-ckv8HvHy/iTqaVAEKrr+gnl+p3XFNwe5D2+6w6wJk2ORV2XkcRkKOJ/XsTUJbPSiyi4PI+p+T3bqbmNx/rDUlg==} - "@inlang/sdk@2.7.0": - resolution: - { - integrity: sha512-yJNBD0o8i29TTJqWX5uDRHxnalDGcsUDctxepzFXsUfkzqGWfiFBxODdxvReqvM2CuKAAOo/kib/F1UcgdYFNQ==, - } - engines: { node: ">=18.0.0" } + '@inlang/sdk@2.7.0': + resolution: {integrity: sha512-yJNBD0o8i29TTJqWX5uDRHxnalDGcsUDctxepzFXsUfkzqGWfiFBxODdxvReqvM2CuKAAOo/kib/F1UcgdYFNQ==} + engines: {node: '>=18.0.0'} - "@internationalized/date@3.11.0": - resolution: - { - integrity: sha512-BOx5huLAWhicM9/ZFs84CzP+V3gBW6vlpM02yzsdYC7TGlZJX1OJiEEHcSayF00Z+3jLlm4w79amvSt6RqKN3Q==, - } + '@internationalized/date@3.11.0': + resolution: {integrity: sha512-BOx5huLAWhicM9/ZFs84CzP+V3gBW6vlpM02yzsdYC7TGlZJX1OJiEEHcSayF00Z+3jLlm4w79amvSt6RqKN3Q==} - "@jridgewell/gen-mapping@0.3.13": - resolution: - { - integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==, - } + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - "@jridgewell/remapping@2.3.5": - resolution: - { - integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==, - } + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} - "@jridgewell/resolve-uri@3.1.2": - resolution: - { - integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==, - } - engines: { node: ">=6.0.0" } + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} - "@jridgewell/sourcemap-codec@1.5.5": - resolution: - { - integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==, - } + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - "@jridgewell/trace-mapping@0.3.31": - resolution: - { - integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==, - } + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - "@lix-js/sdk@0.4.7": - resolution: - { - integrity: sha512-pRbW+joG12L0ULfMiWYosIW0plmW4AsUdiPCp+Z8rAsElJ+wJ6in58zhD3UwUcd4BNcpldEGjg6PdA7e0RgsDQ==, - } - engines: { node: ">=18" } + '@jsdevtools/ono@7.1.3': + resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} - "@lix-js/server-protocol-schema@0.1.1": - resolution: - { - integrity: sha512-jBeALB6prAbtr5q4vTuxnRZZv1M2rKe8iNqRQhFJ4Tv7150unEa0vKyz0hs8Gl3fUGsWaNJBh3J8++fpbrpRBQ==, - } + '@lix-js/sdk@0.4.7': + resolution: {integrity: sha512-pRbW+joG12L0ULfMiWYosIW0plmW4AsUdiPCp+Z8rAsElJ+wJ6in58zhD3UwUcd4BNcpldEGjg6PdA7e0RgsDQ==} + engines: {node: '>=18'} - "@lucide/svelte@0.561.0": - resolution: - { - integrity: sha512-vofKV2UFVrKE6I4ewKJ3dfCXSV6iP6nWVmiM83MLjsU91EeJcEg7LoWUABLp/aOTxj1HQNbJD1f3g3L0JQgH9A==, - } + '@lix-js/server-protocol-schema@0.1.1': + resolution: {integrity: sha512-jBeALB6prAbtr5q4vTuxnRZZv1M2rKe8iNqRQhFJ4Tv7150unEa0vKyz0hs8Gl3fUGsWaNJBh3J8++fpbrpRBQ==} + + '@lucide/svelte@0.561.0': + resolution: {integrity: sha512-vofKV2UFVrKE6I4ewKJ3dfCXSV6iP6nWVmiM83MLjsU91EeJcEg7LoWUABLp/aOTxj1HQNbJD1f3g3L0JQgH9A==} peerDependencies: svelte: ^5 - "@polka/url@1.0.0-next.29": - resolution: - { - integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==, - } + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} - "@rollup/plugin-commonjs@29.0.0": - resolution: - { - integrity: sha512-U2YHaxR2cU/yAiwKJtJRhnyLk7cifnQw0zUpISsocBDoHDJn+HTV74ABqnwr5bEgWUwFZC9oFL6wLe21lHu5eQ==, - } - engines: { node: ">=16.0.0 || 14 >= 14.17" } + '@rollup/plugin-commonjs@29.0.0': + resolution: {integrity: sha512-U2YHaxR2cU/yAiwKJtJRhnyLk7cifnQw0zUpISsocBDoHDJn+HTV74ABqnwr5bEgWUwFZC9oFL6wLe21lHu5eQ==} + engines: {node: '>=16.0.0 || 14 >= 14.17'} peerDependencies: rollup: ^2.68.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true - "@rollup/plugin-json@6.1.0": - resolution: - { - integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==, - } - engines: { node: ">=14.0.0" } + '@rollup/plugin-json@6.1.0': + resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} + engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true - "@rollup/plugin-node-resolve@16.0.3": - resolution: - { - integrity: sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==, - } - engines: { node: ">=14.0.0" } + '@rollup/plugin-node-resolve@16.0.3': + resolution: {integrity: sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==} + engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.78.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true - "@rollup/pluginutils@5.3.0": - resolution: - { - integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==, - } - engines: { node: ">=14.0.0" } + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true - "@rollup/rollup-android-arm-eabi@4.59.0": - resolution: - { - integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==, - } + '@rollup/rollup-android-arm-eabi@4.59.0': + resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==} cpu: [arm] os: [android] - "@rollup/rollup-android-arm64@4.59.0": - resolution: - { - integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==, - } + '@rollup/rollup-android-arm64@4.59.0': + resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==} cpu: [arm64] os: [android] - "@rollup/rollup-darwin-arm64@4.59.0": - resolution: - { - integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==, - } + '@rollup/rollup-darwin-arm64@4.59.0': + resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==} cpu: [arm64] os: [darwin] - "@rollup/rollup-darwin-x64@4.59.0": - resolution: - { - integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==, - } + '@rollup/rollup-darwin-x64@4.59.0': + resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==} cpu: [x64] os: [darwin] - "@rollup/rollup-freebsd-arm64@4.59.0": - resolution: - { - integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==, - } + '@rollup/rollup-freebsd-arm64@4.59.0': + resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==} cpu: [arm64] os: [freebsd] - "@rollup/rollup-freebsd-x64@4.59.0": - resolution: - { - integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==, - } + '@rollup/rollup-freebsd-x64@4.59.0': + resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==} cpu: [x64] os: [freebsd] - "@rollup/rollup-linux-arm-gnueabihf@4.59.0": - resolution: - { - integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==, - } + '@rollup/rollup-linux-arm-gnueabihf@4.59.0': + resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} cpu: [arm] os: [linux] libc: [glibc] - "@rollup/rollup-linux-arm-musleabihf@4.59.0": - resolution: - { - integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==, - } + '@rollup/rollup-linux-arm-musleabihf@4.59.0': + resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} cpu: [arm] os: [linux] libc: [musl] - "@rollup/rollup-linux-arm64-gnu@4.59.0": - resolution: - { - integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==, - } + '@rollup/rollup-linux-arm64-gnu@4.59.0': + resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} cpu: [arm64] os: [linux] libc: [glibc] - "@rollup/rollup-linux-arm64-musl@4.59.0": - resolution: - { - integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==, - } + '@rollup/rollup-linux-arm64-musl@4.59.0': + resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} cpu: [arm64] os: [linux] libc: [musl] - "@rollup/rollup-linux-loong64-gnu@4.59.0": - resolution: - { - integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==, - } + '@rollup/rollup-linux-loong64-gnu@4.59.0': + resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} cpu: [loong64] os: [linux] libc: [glibc] - "@rollup/rollup-linux-loong64-musl@4.59.0": - resolution: - { - integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==, - } + '@rollup/rollup-linux-loong64-musl@4.59.0': + resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} cpu: [loong64] os: [linux] libc: [musl] - "@rollup/rollup-linux-ppc64-gnu@4.59.0": - resolution: - { - integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==, - } + '@rollup/rollup-linux-ppc64-gnu@4.59.0': + resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} cpu: [ppc64] os: [linux] libc: [glibc] - "@rollup/rollup-linux-ppc64-musl@4.59.0": - resolution: - { - integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==, - } + '@rollup/rollup-linux-ppc64-musl@4.59.0': + resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} cpu: [ppc64] os: [linux] libc: [musl] - "@rollup/rollup-linux-riscv64-gnu@4.59.0": - resolution: - { - integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==, - } + '@rollup/rollup-linux-riscv64-gnu@4.59.0': + resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} cpu: [riscv64] os: [linux] libc: [glibc] - "@rollup/rollup-linux-riscv64-musl@4.59.0": - resolution: - { - integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==, - } + '@rollup/rollup-linux-riscv64-musl@4.59.0': + resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} cpu: [riscv64] os: [linux] libc: [musl] - "@rollup/rollup-linux-s390x-gnu@4.59.0": - resolution: - { - integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==, - } + '@rollup/rollup-linux-s390x-gnu@4.59.0': + resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} cpu: [s390x] os: [linux] libc: [glibc] - "@rollup/rollup-linux-x64-gnu@4.59.0": - resolution: - { - integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==, - } + '@rollup/rollup-linux-x64-gnu@4.59.0': + resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} cpu: [x64] os: [linux] libc: [glibc] - "@rollup/rollup-linux-x64-musl@4.59.0": - resolution: - { - integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==, - } + '@rollup/rollup-linux-x64-musl@4.59.0': + resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} cpu: [x64] os: [linux] libc: [musl] - "@rollup/rollup-openbsd-x64@4.59.0": - resolution: - { - integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==, - } + '@rollup/rollup-openbsd-x64@4.59.0': + resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} cpu: [x64] os: [openbsd] - "@rollup/rollup-openharmony-arm64@4.59.0": - resolution: - { - integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==, - } + '@rollup/rollup-openharmony-arm64@4.59.0': + resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==} cpu: [arm64] os: [openharmony] - "@rollup/rollup-win32-arm64-msvc@4.59.0": - resolution: - { - integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==, - } + '@rollup/rollup-win32-arm64-msvc@4.59.0': + resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==} cpu: [arm64] os: [win32] - "@rollup/rollup-win32-ia32-msvc@4.59.0": - resolution: - { - integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==, - } + '@rollup/rollup-win32-ia32-msvc@4.59.0': + resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==} cpu: [ia32] os: [win32] - "@rollup/rollup-win32-x64-gnu@4.59.0": - resolution: - { - integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==, - } + '@rollup/rollup-win32-x64-gnu@4.59.0': + resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==} cpu: [x64] os: [win32] - "@rollup/rollup-win32-x64-msvc@4.59.0": - resolution: - { - integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==, - } + '@rollup/rollup-win32-x64-msvc@4.59.0': + resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==} cpu: [x64] os: [win32] - "@sinclair/typebox@0.31.28": - resolution: - { - integrity: sha512-/s55Jujywdw/Jpan+vsy6JZs1z2ZTGxTmbZTPiuSL2wz9mfzA2gN1zzaqmvfi4pq+uOt7Du85fkiwv5ymW84aQ==, - } + '@sinclair/typebox@0.31.28': + resolution: {integrity: sha512-/s55Jujywdw/Jpan+vsy6JZs1z2ZTGxTmbZTPiuSL2wz9mfzA2gN1zzaqmvfi4pq+uOt7Du85fkiwv5ymW84aQ==} - "@sqlite.org/sqlite-wasm@3.48.0-build4": - resolution: - { - integrity: sha512-hI6twvUkzOmyGZhQMza1gpfqErZxXRw6JEsiVjUbo7tFanVD+8Oil0Ih3l2nGzHdxPI41zFmfUQG7GHqhciKZQ==, - } + '@sqlite.org/sqlite-wasm@3.48.0-build4': + resolution: {integrity: sha512-hI6twvUkzOmyGZhQMza1gpfqErZxXRw6JEsiVjUbo7tFanVD+8Oil0Ih3l2nGzHdxPI41zFmfUQG7GHqhciKZQ==} hasBin: true - "@standard-schema/spec@1.1.0": - resolution: - { - integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==, - } + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - "@sveltejs/acorn-typescript@1.0.9": - resolution: - { - integrity: sha512-lVJX6qEgs/4DOcRTpo56tmKzVPtoWAaVbL4hfO7t7NVwl9AAXzQR6cihesW1BmNMPl+bK6dreu2sOKBP2Q9CIA==, - } + '@sveltejs/acorn-typescript@1.0.9': + resolution: {integrity: sha512-lVJX6qEgs/4DOcRTpo56tmKzVPtoWAaVbL4hfO7t7NVwl9AAXzQR6cihesW1BmNMPl+bK6dreu2sOKBP2Q9CIA==} peerDependencies: acorn: ^8.9.0 - "@sveltejs/adapter-node@5.5.4": - resolution: - { - integrity: sha512-45X92CXW+2J8ZUzPv3eLlKWEzINKiiGeFWTjyER4ZN4sGgNoaoeSkCY/QYNxHpPXy71QPsctwccBo9jJs0ySPQ==, - } + '@sveltejs/adapter-node@5.5.4': + resolution: {integrity: sha512-45X92CXW+2J8ZUzPv3eLlKWEzINKiiGeFWTjyER4ZN4sGgNoaoeSkCY/QYNxHpPXy71QPsctwccBo9jJs0ySPQ==} peerDependencies: - "@sveltejs/kit": ^2.4.0 + '@sveltejs/kit': ^2.4.0 - "@sveltejs/kit@2.53.2": - resolution: - { - integrity: sha512-M+MqAvFve12T1HWws/2npP/s3hFtyjw3GB/OXW/8a1jZBk48qnvPJrtgE+VOMc3RnjUMxc4mv/vQ73nvj2uNMg==, - } - engines: { node: ">=18.13" } + '@sveltejs/kit@2.53.2': + resolution: {integrity: sha512-M+MqAvFve12T1HWws/2npP/s3hFtyjw3GB/OXW/8a1jZBk48qnvPJrtgE+VOMc3RnjUMxc4mv/vQ73nvj2uNMg==} + engines: {node: '>=18.13'} hasBin: true peerDependencies: - "@opentelemetry/api": ^1.0.0 - "@sveltejs/vite-plugin-svelte": ^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0 || ^7.0.0 + '@opentelemetry/api': ^1.0.0 + '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0 || ^7.0.0 svelte: ^4.0.0 || ^5.0.0-next.0 typescript: ^5.3.3 vite: ^5.0.3 || ^6.0.0 || ^7.0.0-beta.0 || ^8.0.0 peerDependenciesMeta: - "@opentelemetry/api": + '@opentelemetry/api': optional: true typescript: optional: true - "@sveltejs/vite-plugin-svelte-inspector@5.0.2": - resolution: - { - integrity: sha512-TZzRTcEtZffICSAoZGkPSl6Etsj2torOVrx6Uw0KpXxrec9Gg6jFWQ60Q3+LmNGfZSxHRCZL7vXVZIWmuV50Ig==, - } - engines: { node: ^20.19 || ^22.12 || >=24 } + '@sveltejs/vite-plugin-svelte-inspector@5.0.2': + resolution: {integrity: sha512-TZzRTcEtZffICSAoZGkPSl6Etsj2torOVrx6Uw0KpXxrec9Gg6jFWQ60Q3+LmNGfZSxHRCZL7vXVZIWmuV50Ig==} + engines: {node: ^20.19 || ^22.12 || >=24} peerDependencies: - "@sveltejs/vite-plugin-svelte": ^6.0.0-next.0 + '@sveltejs/vite-plugin-svelte': ^6.0.0-next.0 svelte: ^5.0.0 vite: ^6.3.0 || ^7.0.0 - "@sveltejs/vite-plugin-svelte@6.2.4": - resolution: - { - integrity: sha512-ou/d51QSdTyN26D7h6dSpusAKaZkAiGM55/AKYi+9AGZw7q85hElbjK3kEyzXHhLSnRISHOYzVge6x0jRZ7DXA==, - } - engines: { node: ^20.19 || ^22.12 || >=24 } + '@sveltejs/vite-plugin-svelte@6.2.4': + resolution: {integrity: sha512-ou/d51QSdTyN26D7h6dSpusAKaZkAiGM55/AKYi+9AGZw7q85hElbjK3kEyzXHhLSnRISHOYzVge6x0jRZ7DXA==} + engines: {node: ^20.19 || ^22.12 || >=24} peerDependencies: svelte: ^5.0.0 vite: ^6.3.0 || ^7.0.0 - "@swc/helpers@0.5.19": - resolution: - { - integrity: sha512-QamiFeIK3txNjgUTNppE6MiG3p7TdninpZu0E0PbqVh1a9FNLT2FRhisaa4NcaX52XVhA5l7Pk58Ft7Sqi/2sA==, - } + '@swc/helpers@0.5.19': + resolution: {integrity: sha512-QamiFeIK3txNjgUTNppE6MiG3p7TdninpZu0E0PbqVh1a9FNLT2FRhisaa4NcaX52XVhA5l7Pk58Ft7Sqi/2sA==} - "@tailwindcss/node@4.2.1": - resolution: - { - integrity: sha512-jlx6sLk4EOwO6hHe1oCGm1Q4AN/s0rSrTTPBGPM0/RQ6Uylwq17FuU8IeJJKEjtc6K6O07zsvP+gDO6MMWo7pg==, - } + '@tailwindcss/node@4.2.1': + resolution: {integrity: sha512-jlx6sLk4EOwO6hHe1oCGm1Q4AN/s0rSrTTPBGPM0/RQ6Uylwq17FuU8IeJJKEjtc6K6O07zsvP+gDO6MMWo7pg==} - "@tailwindcss/oxide-android-arm64@4.2.1": - resolution: - { - integrity: sha512-eZ7G1Zm5EC8OOKaesIKuw77jw++QJ2lL9N+dDpdQiAB/c/B2wDh0QPFHbkBVrXnwNugvrbJFk1gK2SsVjwWReg==, - } - engines: { node: ">= 20" } + '@tailwindcss/oxide-android-arm64@4.2.1': + resolution: {integrity: sha512-eZ7G1Zm5EC8OOKaesIKuw77jw++QJ2lL9N+dDpdQiAB/c/B2wDh0QPFHbkBVrXnwNugvrbJFk1gK2SsVjwWReg==} + engines: {node: '>= 20'} cpu: [arm64] os: [android] - "@tailwindcss/oxide-darwin-arm64@4.2.1": - resolution: - { - integrity: sha512-q/LHkOstoJ7pI1J0q6djesLzRvQSIfEto148ppAd+BVQK0JYjQIFSK3JgYZJa+Yzi0DDa52ZsQx2rqytBnf8Hw==, - } - engines: { node: ">= 20" } + '@tailwindcss/oxide-darwin-arm64@4.2.1': + resolution: {integrity: sha512-q/LHkOstoJ7pI1J0q6djesLzRvQSIfEto148ppAd+BVQK0JYjQIFSK3JgYZJa+Yzi0DDa52ZsQx2rqytBnf8Hw==} + engines: {node: '>= 20'} cpu: [arm64] os: [darwin] - "@tailwindcss/oxide-darwin-x64@4.2.1": - resolution: - { - integrity: sha512-/f/ozlaXGY6QLbpvd/kFTro2l18f7dHKpB+ieXz+Cijl4Mt9AI2rTrpq7V+t04nK+j9XBQHnSMdeQRhbGyt6fw==, - } - engines: { node: ">= 20" } + '@tailwindcss/oxide-darwin-x64@4.2.1': + resolution: {integrity: sha512-/f/ozlaXGY6QLbpvd/kFTro2l18f7dHKpB+ieXz+Cijl4Mt9AI2rTrpq7V+t04nK+j9XBQHnSMdeQRhbGyt6fw==} + engines: {node: '>= 20'} cpu: [x64] os: [darwin] - "@tailwindcss/oxide-freebsd-x64@4.2.1": - resolution: - { - integrity: sha512-5e/AkgYJT/cpbkys/OU2Ei2jdETCLlifwm7ogMC7/hksI2fC3iiq6OcXwjibcIjPung0kRtR3TxEITkqgn0TcA==, - } - engines: { node: ">= 20" } + '@tailwindcss/oxide-freebsd-x64@4.2.1': + resolution: {integrity: sha512-5e/AkgYJT/cpbkys/OU2Ei2jdETCLlifwm7ogMC7/hksI2fC3iiq6OcXwjibcIjPung0kRtR3TxEITkqgn0TcA==} + engines: {node: '>= 20'} cpu: [x64] os: [freebsd] - "@tailwindcss/oxide-linux-arm-gnueabihf@4.2.1": - resolution: - { - integrity: sha512-Uny1EcVTTmerCKt/1ZuKTkb0x8ZaiuYucg2/kImO5A5Y/kBz41/+j0gxUZl+hTF3xkWpDmHX+TaWhOtba2Fyuw==, - } - engines: { node: ">= 20" } + '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.1': + resolution: {integrity: sha512-Uny1EcVTTmerCKt/1ZuKTkb0x8ZaiuYucg2/kImO5A5Y/kBz41/+j0gxUZl+hTF3xkWpDmHX+TaWhOtba2Fyuw==} + engines: {node: '>= 20'} cpu: [arm] os: [linux] - "@tailwindcss/oxide-linux-arm64-gnu@4.2.1": - resolution: - { - integrity: sha512-CTrwomI+c7n6aSSQlsPL0roRiNMDQ/YzMD9EjcR+H4f0I1SQ8QqIuPnsVp7QgMkC1Qi8rtkekLkOFjo7OlEFRQ==, - } - engines: { node: ">= 20" } + '@tailwindcss/oxide-linux-arm64-gnu@4.2.1': + resolution: {integrity: sha512-CTrwomI+c7n6aSSQlsPL0roRiNMDQ/YzMD9EjcR+H4f0I1SQ8QqIuPnsVp7QgMkC1Qi8rtkekLkOFjo7OlEFRQ==} + engines: {node: '>= 20'} cpu: [arm64] os: [linux] libc: [glibc] - "@tailwindcss/oxide-linux-arm64-musl@4.2.1": - resolution: - { - integrity: sha512-WZA0CHRL/SP1TRbA5mp9htsppSEkWuQ4KsSUumYQnyl8ZdT39ntwqmz4IUHGN6p4XdSlYfJwM4rRzZLShHsGAQ==, - } - engines: { node: ">= 20" } + '@tailwindcss/oxide-linux-arm64-musl@4.2.1': + resolution: {integrity: sha512-WZA0CHRL/SP1TRbA5mp9htsppSEkWuQ4KsSUumYQnyl8ZdT39ntwqmz4IUHGN6p4XdSlYfJwM4rRzZLShHsGAQ==} + engines: {node: '>= 20'} cpu: [arm64] os: [linux] libc: [musl] - "@tailwindcss/oxide-linux-x64-gnu@4.2.1": - resolution: - { - integrity: sha512-qMFzxI2YlBOLW5PhblzuSWlWfwLHaneBE0xHzLrBgNtqN6mWfs+qYbhryGSXQjFYB1Dzf5w+LN5qbUTPhW7Y5g==, - } - engines: { node: ">= 20" } + '@tailwindcss/oxide-linux-x64-gnu@4.2.1': + resolution: {integrity: sha512-qMFzxI2YlBOLW5PhblzuSWlWfwLHaneBE0xHzLrBgNtqN6mWfs+qYbhryGSXQjFYB1Dzf5w+LN5qbUTPhW7Y5g==} + engines: {node: '>= 20'} cpu: [x64] os: [linux] libc: [glibc] - "@tailwindcss/oxide-linux-x64-musl@4.2.1": - resolution: - { - integrity: sha512-5r1X2FKnCMUPlXTWRYpHdPYUY6a1Ar/t7P24OuiEdEOmms5lyqjDRvVY1yy9Rmioh+AunQ0rWiOTPE8F9A3v5g==, - } - engines: { node: ">= 20" } + '@tailwindcss/oxide-linux-x64-musl@4.2.1': + resolution: {integrity: sha512-5r1X2FKnCMUPlXTWRYpHdPYUY6a1Ar/t7P24OuiEdEOmms5lyqjDRvVY1yy9Rmioh+AunQ0rWiOTPE8F9A3v5g==} + engines: {node: '>= 20'} cpu: [x64] os: [linux] libc: [musl] - "@tailwindcss/oxide-wasm32-wasi@4.2.1": - resolution: - { - integrity: sha512-MGFB5cVPvshR85MTJkEvqDUnuNoysrsRxd6vnk1Lf2tbiqNlXpHYZqkqOQalydienEWOHHFyyuTSYRsLfxFJ2Q==, - } - engines: { node: ">=14.0.0" } + '@tailwindcss/oxide-wasm32-wasi@4.2.1': + resolution: {integrity: sha512-MGFB5cVPvshR85MTJkEvqDUnuNoysrsRxd6vnk1Lf2tbiqNlXpHYZqkqOQalydienEWOHHFyyuTSYRsLfxFJ2Q==} + engines: {node: '>=14.0.0'} cpu: [wasm32] bundledDependencies: - - "@napi-rs/wasm-runtime" - - "@emnapi/core" - - "@emnapi/runtime" - - "@tybys/wasm-util" - - "@emnapi/wasi-threads" + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' - tslib - "@tailwindcss/oxide-win32-arm64-msvc@4.2.1": - resolution: - { - integrity: sha512-YlUEHRHBGnCMh4Nj4GnqQyBtsshUPdiNroZj8VPkvTZSoHsilRCwXcVKnG9kyi0ZFAS/3u+qKHBdDc81SADTRA==, - } - engines: { node: ">= 20" } + '@tailwindcss/oxide-win32-arm64-msvc@4.2.1': + resolution: {integrity: sha512-YlUEHRHBGnCMh4Nj4GnqQyBtsshUPdiNroZj8VPkvTZSoHsilRCwXcVKnG9kyi0ZFAS/3u+qKHBdDc81SADTRA==} + engines: {node: '>= 20'} cpu: [arm64] os: [win32] - "@tailwindcss/oxide-win32-x64-msvc@4.2.1": - resolution: - { - integrity: sha512-rbO34G5sMWWyrN/idLeVxAZgAKWrn5LiR3/I90Q9MkA67s6T1oB0xtTe+0heoBvHSpbU9Mk7i6uwJnpo4u21XQ==, - } - engines: { node: ">= 20" } + '@tailwindcss/oxide-win32-x64-msvc@4.2.1': + resolution: {integrity: sha512-rbO34G5sMWWyrN/idLeVxAZgAKWrn5LiR3/I90Q9MkA67s6T1oB0xtTe+0heoBvHSpbU9Mk7i6uwJnpo4u21XQ==} + engines: {node: '>= 20'} cpu: [x64] os: [win32] - "@tailwindcss/oxide@4.2.1": - resolution: - { - integrity: sha512-yv9jeEFWnjKCI6/T3Oq50yQEOqmpmpfzG1hcZsAOaXFQPfzWprWrlHSdGPEF3WQTi8zu8ohC9Mh9J470nT5pUw==, - } - engines: { node: ">= 20" } + '@tailwindcss/oxide@4.2.1': + resolution: {integrity: sha512-yv9jeEFWnjKCI6/T3Oq50yQEOqmpmpfzG1hcZsAOaXFQPfzWprWrlHSdGPEF3WQTi8zu8ohC9Mh9J470nT5pUw==} + engines: {node: '>= 20'} - "@tailwindcss/vite@4.2.1": - resolution: - { - integrity: sha512-TBf2sJjYeb28jD2U/OhwdW0bbOsxkWPwQ7SrqGf9sVcoYwZj7rkXljroBO9wKBut9XnmQLXanuDUeqQK0lGg/w==, - } + '@tailwindcss/vite@4.2.1': + resolution: {integrity: sha512-TBf2sJjYeb28jD2U/OhwdW0bbOsxkWPwQ7SrqGf9sVcoYwZj7rkXljroBO9wKBut9XnmQLXanuDUeqQK0lGg/w==} peerDependencies: vite: ^5.2.0 || ^6 || ^7 - "@types/cookie@0.6.0": - resolution: - { - integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==, - } + '@types/cookie@0.6.0': + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} - "@types/esrecurse@4.3.1": - resolution: - { - integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==, - } + '@types/esrecurse@4.3.1': + resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} - "@types/estree@1.0.8": - resolution: - { - integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==, - } + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - "@types/json-schema@7.0.15": - resolution: - { - integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, - } + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - "@types/node@25.3.3": - resolution: - { - integrity: sha512-DpzbrH7wIcBaJibpKo9nnSQL0MTRdnWttGyE5haGwK86xgMOkFLp7vEyfQPGLOJh5wNYiJ3V9PmUMDhV9u8kkQ==, - } + '@types/node@25.3.3': + resolution: {integrity: sha512-DpzbrH7wIcBaJibpKo9nnSQL0MTRdnWttGyE5haGwK86xgMOkFLp7vEyfQPGLOJh5wNYiJ3V9PmUMDhV9u8kkQ==} - "@types/resolve@1.20.2": - resolution: - { - integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==, - } + '@types/resolve@1.20.2': + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - "@types/trusted-types@2.0.7": - resolution: - { - integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==, - } + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - "@typescript-eslint/eslint-plugin@8.56.1": - resolution: - { - integrity: sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + '@typescript-eslint/eslint-plugin@8.56.1': + resolution: {integrity: sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - "@typescript-eslint/parser": ^8.56.1 + '@typescript-eslint/parser': ^8.56.1 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: ">=4.8.4 <6.0.0" + typescript: '>=4.8.4 <6.0.0' - "@typescript-eslint/parser@8.56.1": - resolution: - { - integrity: sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + '@typescript-eslint/parser@8.56.1': + resolution: {integrity: sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: ">=4.8.4 <6.0.0" + typescript: '>=4.8.4 <6.0.0' - "@typescript-eslint/project-service@8.56.1": - resolution: - { - integrity: sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + '@typescript-eslint/project-service@8.56.1': + resolution: {integrity: sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: ">=4.8.4 <6.0.0" + typescript: '>=4.8.4 <6.0.0' - "@typescript-eslint/scope-manager@8.56.1": - resolution: - { - integrity: sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + '@typescript-eslint/scope-manager@8.56.1': + resolution: {integrity: sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - "@typescript-eslint/tsconfig-utils@8.56.1": - resolution: - { - integrity: sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + '@typescript-eslint/tsconfig-utils@8.56.1': + resolution: {integrity: sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: ">=4.8.4 <6.0.0" + typescript: '>=4.8.4 <6.0.0' - "@typescript-eslint/type-utils@8.56.1": - resolution: - { - integrity: sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + '@typescript-eslint/type-utils@8.56.1': + resolution: {integrity: sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: ">=4.8.4 <6.0.0" + typescript: '>=4.8.4 <6.0.0' - "@typescript-eslint/types@8.56.1": - resolution: - { - integrity: sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + '@typescript-eslint/types@8.56.1': + resolution: {integrity: sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - "@typescript-eslint/typescript-estree@8.56.1": - resolution: - { - integrity: sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + '@typescript-eslint/typescript-estree@8.56.1': + resolution: {integrity: sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: ">=4.8.4 <6.0.0" + typescript: '>=4.8.4 <6.0.0' - "@typescript-eslint/utils@8.56.1": - resolution: - { - integrity: sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + '@typescript-eslint/utils@8.56.1': + resolution: {integrity: sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: ">=4.8.4 <6.0.0" + typescript: '>=4.8.4 <6.0.0' - "@typescript-eslint/visitor-keys@8.56.1": - resolution: - { - integrity: sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + '@typescript-eslint/visitor-keys@8.56.1': + resolution: {integrity: sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} acorn-jsx@5.3.2: - resolution: - { - integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, - } + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 acorn@8.16.0: - resolution: - { - integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==, - } - engines: { node: ">=0.4.0" } + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} + engines: {node: '>=0.4.0'} hasBin: true ajv@6.14.0: - resolution: - { - integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==, - } + resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} aria-query@5.3.1: - resolution: - { - integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==} + engines: {node: '>= 0.4'} array-timsort@1.0.3: - resolution: - { - integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==, - } + resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} axobject-query@4.1.0: - resolution: - { - integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} balanced-match@4.0.4: - resolution: - { - integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==, - } - engines: { node: 18 || 20 || >=22 } + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} bits-ui@2.16.2: - resolution: - { - integrity: sha512-bgEpRRF7Ck9nRP1pbuKVxpaSMrz+8Pm0y+dmuvlkrSe+uUwIQECef29y6eslFHM6pCAubUh7STrsTLUUp8fzFQ==, - } - engines: { node: ">=20" } + resolution: {integrity: sha512-bgEpRRF7Ck9nRP1pbuKVxpaSMrz+8Pm0y+dmuvlkrSe+uUwIQECef29y6eslFHM6pCAubUh7STrsTLUUp8fzFQ==} + engines: {node: '>=20'} peerDependencies: - "@internationalized/date": ^3.8.1 + '@internationalized/date': ^3.8.1 svelte: ^5.33.0 brace-expansion@5.0.4: - resolution: - { - integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==, - } - engines: { node: 18 || 20 || >=22 } + resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==} + engines: {node: 18 || 20 || >=22} + + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + + c12@3.3.3: + resolution: {integrity: sha512-750hTRvgBy5kcMNPdh95Qo+XUBeGo8C7nsKSmedDmaQI+E0r82DwHeM6vBewDe4rGFbnxoa4V9pw+sPh5+Iz8Q==} + peerDependencies: + magicast: '*' + peerDependenciesMeta: + magicast: + optional: true chokidar@4.0.3: - resolution: - { - integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==, - } - engines: { node: ">= 14.16.0" } + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} + + citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + + citty@0.2.1: + resolution: {integrity: sha512-kEV95lFBhQgtogAPlQfJJ0WGVSokvLr/UEoFPiKKOXF7pl98HfUVUD0ejsuTCld/9xH9vogSywZ5KqHzXrZpqg==} clsx@2.1.1: - resolution: - { - integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true commander@11.1.0: - resolution: - { - integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==, - } - engines: { node: ">=16" } + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + + commander@14.0.3: + resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} + engines: {node: '>=20'} comment-json@4.5.1: - resolution: - { - integrity: sha512-taEtr3ozUmOB7it68Jll7s0Pwm+aoiHyXKrEC8SEodL4rNpdfDLqa7PfBlrgFoCNNdR8ImL+muti5IGvktJAAg==, - } - engines: { node: ">= 6" } + resolution: {integrity: sha512-taEtr3ozUmOB7it68Jll7s0Pwm+aoiHyXKrEC8SEodL4rNpdfDLqa7PfBlrgFoCNNdR8ImL+muti5IGvktJAAg==} + engines: {node: '>= 6'} commondir@1.0.1: - resolution: - { - integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==, - } + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + + confbox@0.2.4: + resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} consola@3.4.0: - resolution: - { - integrity: sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==, - } - engines: { node: ^14.18.0 || >=16.10.0 } + resolution: {integrity: sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==} + engines: {node: ^14.18.0 || >=16.10.0} cookie@0.6.0: - resolution: - { - integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==, - } - engines: { node: ">= 0.6" } + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} core-util-is@1.0.3: - resolution: - { - integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==, - } + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} cross-spawn@7.0.6: - resolution: - { - integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==, - } - engines: { node: ">= 8" } + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} cssesc@3.0.0: - resolution: - { - integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} hasBin: true debug@4.4.3: - resolution: - { - integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==, - } - engines: { node: ">=6.0" } + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} peerDependencies: - supports-color: "*" + supports-color: '*' peerDependenciesMeta: supports-color: optional: true dedent@1.5.1: - resolution: - { - integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==, - } + resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: @@ -1289,66 +930,61 @@ packages: optional: true deep-is@0.1.4: - resolution: - { - integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, - } + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} deepmerge@4.3.1: - resolution: - { - integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} + engines: {node: '>=18'} + + default-browser@5.5.0: + resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} + engines: {node: '>=18'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} dequal@2.0.3: - resolution: - { - integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} detect-libc@2.1.2: - resolution: - { - integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} devalue@5.6.3: - resolution: - { - integrity: sha512-nc7XjUU/2Lb+SvEFVGcWLiKkzfw8+qHI7zn8WYXKkLMgfGSHbgCEaR6bJpev8Cm6Rmrb19Gfd/tZvGqx9is3wg==, - } + resolution: {integrity: sha512-nc7XjUU/2Lb+SvEFVGcWLiKkzfw8+qHI7zn8WYXKkLMgfGSHbgCEaR6bJpev8Cm6Rmrb19Gfd/tZvGqx9is3wg==} + + dotenv@17.3.1: + resolution: {integrity: sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==} + engines: {node: '>=12'} enhanced-resolve@5.19.0: - resolution: - { - integrity: sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==, - } - engines: { node: ">=10.13.0" } + resolution: {integrity: sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==} + engines: {node: '>=10.13.0'} esbuild@0.27.3: - resolution: - { - integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} + engines: {node: '>=18'} hasBin: true escape-string-regexp@4.0.0: - resolution: - { - integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} eslint-plugin-svelte@3.15.0: - resolution: - { - integrity: sha512-QKB7zqfuB8aChOfBTComgDptMf2yxiJx7FE04nneCmtQzgTHvY8UJkuh8J2Rz7KB9FFV9aTHX6r7rdYGvG8T9Q==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + resolution: {integrity: sha512-QKB7zqfuB8aChOfBTComgDptMf2yxiJx7FE04nneCmtQzgTHvY8UJkuh8J2Rz7KB9FFV9aTHX6r7rdYGvG8T9Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.1 || ^9.0.0 || ^10.0.0 svelte: ^3.37.0 || ^4.0.0 || ^5.0.0 @@ -1357,145 +993,88 @@ packages: optional: true eslint-scope@8.4.0: - resolution: - { - integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint-scope@9.1.1: - resolution: - { - integrity: sha512-GaUN0sWim5qc8KVErfPBWmc31LEsOkrUJbvJZV+xuL3u2phMUK4HIvXlWAakfC8W4nzlK+chPEAkYOYb5ZScIw==, - } - engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + resolution: {integrity: sha512-GaUN0sWim5qc8KVErfPBWmc31LEsOkrUJbvJZV+xuL3u2phMUK4HIvXlWAakfC8W4nzlK+chPEAkYOYb5ZScIw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} eslint-visitor-keys@3.4.3: - resolution: - { - integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} eslint-visitor-keys@4.2.1: - resolution: - { - integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint-visitor-keys@5.0.1: - resolution: - { - integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==, - } - engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} eslint@10.0.2: - resolution: - { - integrity: sha512-uYixubwmqJZH+KLVYIVKY1JQt7tysXhtj21WSvjcSmU5SVNzMus1bgLe+pAt816yQ8opKfheVVoPLqvVMGejYw==, - } - engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + resolution: {integrity: sha512-uYixubwmqJZH+KLVYIVKY1JQt7tysXhtj21WSvjcSmU5SVNzMus1bgLe+pAt816yQ8opKfheVVoPLqvVMGejYw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: - jiti: "*" + jiti: '*' peerDependenciesMeta: jiti: optional: true esm-env@1.2.2: - resolution: - { - integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==, - } + resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} espree@10.4.0: - resolution: - { - integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} espree@11.1.1: - resolution: - { - integrity: sha512-AVHPqQoZYc+RUM4/3Ly5udlZY/U4LS8pIG05jEjWM2lQMU/oaZ7qshzAl2YP1tfNmXfftH3ohurfwNAug+MnsQ==, - } - engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + resolution: {integrity: sha512-AVHPqQoZYc+RUM4/3Ly5udlZY/U4LS8pIG05jEjWM2lQMU/oaZ7qshzAl2YP1tfNmXfftH3ohurfwNAug+MnsQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} esprima@4.0.1: - resolution: - { - integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} hasBin: true esquery@1.7.0: - resolution: - { - integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==, - } - engines: { node: ">=0.10" } + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} + engines: {node: '>=0.10'} esrap@2.2.3: - resolution: - { - integrity: sha512-8fOS+GIGCQZl/ZIlhl59htOlms6U8NvX6ZYgYHpRU/b6tVSh3uHkOHZikl3D4cMbYM0JlpBe+p/BkZEi8J9XIQ==, - } + resolution: {integrity: sha512-8fOS+GIGCQZl/ZIlhl59htOlms6U8NvX6ZYgYHpRU/b6tVSh3uHkOHZikl3D4cMbYM0JlpBe+p/BkZEi8J9XIQ==} esrecurse@4.3.0: - resolution: - { - integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, - } - engines: { node: ">=4.0" } + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} estraverse@5.3.0: - resolution: - { - integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, - } - engines: { node: ">=4.0" } + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} estree-walker@2.0.2: - resolution: - { - integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==, - } + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} esutils@2.0.3: - resolution: - { - integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + exsolve@1.0.8: + resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} fast-deep-equal@3.1.3: - resolution: - { - integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, - } + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} fast-json-stable-stringify@2.1.0: - resolution: - { - integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, - } + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} fast-levenshtein@2.0.6: - resolution: - { - integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, - } + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} fdir@6.5.0: - resolution: - { - integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==, - } - engines: { node: ">=12.0.0" } + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -1503,500 +1082,343 @@ packages: optional: true file-entry-cache@8.0.0: - resolution: - { - integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==, - } - engines: { node: ">=16.0.0" } + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} find-up@5.0.0: - resolution: - { - integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} flat-cache@4.0.1: - resolution: - { - integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==, - } - engines: { node: ">=16" } + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} flatted@3.3.4: - resolution: - { - integrity: sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA==, - } + resolution: {integrity: sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA==} fsevents@2.3.3: - resolution: - { - integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, - } - engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] function-bind@1.1.2: - resolution: - { - integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==, - } + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + giget@2.0.0: + resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==} + hasBin: true glob-parent@6.0.2: - resolution: - { - integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, - } - engines: { node: ">=10.13.0" } + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} globals@16.5.0: - resolution: - { - integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} + engines: {node: '>=18'} globals@17.4.0: - resolution: - { - integrity: sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==} + engines: {node: '>=18'} graceful-fs@4.2.11: - resolution: - { - integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, - } + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} hasown@2.0.2: - resolution: - { - integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} human-id@4.1.3: - resolution: - { - integrity: sha512-tsYlhAYpjCKa//8rXZ9DqKEawhPoSytweBC2eNvcaDK+57RZLHGqNs3PZTQO6yekLFSuvA6AlnAfrw1uBvtb+Q==, - } + resolution: {integrity: sha512-tsYlhAYpjCKa//8rXZ9DqKEawhPoSytweBC2eNvcaDK+57RZLHGqNs3PZTQO6yekLFSuvA6AlnAfrw1uBvtb+Q==} hasBin: true ignore@5.3.2: - resolution: - { - integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==, - } - engines: { node: ">= 4" } + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} ignore@7.0.5: - resolution: - { - integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==, - } - engines: { node: ">= 4" } + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} imurmurhash@0.1.4: - resolution: - { - integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, - } - engines: { node: ">=0.8.19" } + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} inline-style-parser@0.2.7: - resolution: - { - integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==, - } + resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} is-core-module@2.16.1: - resolution: - { - integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true is-extglob@2.1.1: - resolution: - { - integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} is-glob@4.0.3: - resolution: - { - integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-in-ssh@1.0.0: + resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} + engines: {node: '>=20'} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true is-module@1.0.0: - resolution: - { - integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==, - } + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} is-reference@1.2.1: - resolution: - { - integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==, - } + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} is-reference@3.0.3: - resolution: - { - integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==, - } + resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} + + is-wsl@3.1.1: + resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} + engines: {node: '>=16'} isexe@2.0.0: - resolution: - { - integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, - } + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} jiti@2.6.1: - resolution: - { - integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==, - } + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true js-sha256@0.11.1: - resolution: - { - integrity: sha512-o6WSo/LUvY2uC4j7mO50a2ms7E/EAdbP0swigLV+nzHKTTaYnaLIWJ02VdXrsJX0vGedDESQnLsOekr94ryfjg==, - } + resolution: {integrity: sha512-o6WSo/LUvY2uC4j7mO50a2ms7E/EAdbP0swigLV+nzHKTTaYnaLIWJ02VdXrsJX0vGedDESQnLsOekr94ryfjg==} + + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + hasBin: true json-buffer@3.0.1: - resolution: - { - integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==, - } + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} json-schema-traverse@0.4.1: - resolution: - { - integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, - } + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} json-stable-stringify-without-jsonify@1.0.1: - resolution: - { - integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, - } + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} json5@2.2.3: - resolution: - { - integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} hasBin: true keyv@4.5.4: - resolution: - { - integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, - } + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} kleur@4.1.5: - resolution: - { - integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} known-css-properties@0.37.0: - resolution: - { - integrity: sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==, - } + resolution: {integrity: sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==} kysely@0.27.6: - resolution: - { - integrity: sha512-FIyV/64EkKhJmjgC0g2hygpBv5RNWVPyNCqSAD7eTCv6eFWNIi4PN1UvdSJGicN/o35bnevgis4Y0UDC0qi8jQ==, - } - engines: { node: ">=14.0.0" } + resolution: {integrity: sha512-FIyV/64EkKhJmjgC0g2hygpBv5RNWVPyNCqSAD7eTCv6eFWNIi4PN1UvdSJGicN/o35bnevgis4Y0UDC0qi8jQ==} + engines: {node: '>=14.0.0'} levn@0.4.1: - resolution: - { - integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, - } - engines: { node: ">= 0.8.0" } + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} lightningcss-android-arm64@1.31.1: - resolution: - { - integrity: sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==} + engines: {node: '>= 12.0.0'} cpu: [arm64] os: [android] lightningcss-darwin-arm64@1.31.1: - resolution: - { - integrity: sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==} + engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] lightningcss-darwin-x64@1.31.1: - resolution: - { - integrity: sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==} + engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] lightningcss-freebsd-x64@1.31.1: - resolution: - { - integrity: sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==} + engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] lightningcss-linux-arm-gnueabihf@1.31.1: - resolution: - { - integrity: sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==} + engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] lightningcss-linux-arm64-gnu@1.31.1: - resolution: - { - integrity: sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==} + engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] libc: [glibc] lightningcss-linux-arm64-musl@1.31.1: - resolution: - { - integrity: sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==} + engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] libc: [musl] lightningcss-linux-x64-gnu@1.31.1: - resolution: - { - integrity: sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==} + engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] libc: [glibc] lightningcss-linux-x64-musl@1.31.1: - resolution: - { - integrity: sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==} + engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] libc: [musl] lightningcss-win32-arm64-msvc@1.31.1: - resolution: - { - integrity: sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==} + engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] lightningcss-win32-x64-msvc@1.31.1: - resolution: - { - integrity: sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==} + engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] lightningcss@1.31.1: - resolution: - { - integrity: sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==, - } - engines: { node: ">= 12.0.0" } + resolution: {integrity: sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==} + engines: {node: '>= 12.0.0'} lilconfig@2.1.0: - resolution: - { - integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} locate-character@3.0.0: - resolution: - { - integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==, - } + resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} locate-path@6.0.0: - resolution: - { - integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} lucide-svelte@0.575.0: - resolution: - { - integrity: sha512-Tu15tJfbmRNPaU61yeNFf3jfRHs8ABA+NwTt7TWmwVbhlSA3H7sW65tX6RttcP7HGV4aHUlYhXixZOlntoFBdw==, - } + resolution: {integrity: sha512-Tu15tJfbmRNPaU61yeNFf3jfRHs8ABA+NwTt7TWmwVbhlSA3H7sW65tX6RttcP7HGV4aHUlYhXixZOlntoFBdw==} peerDependencies: svelte: ^3 || ^4 || ^5.0.0-next.42 lz-string@1.5.0: - resolution: - { - integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==, - } + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true magic-string@0.30.21: - resolution: - { - integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==, - } + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} minimatch@10.2.4: - resolution: - { - integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==, - } - engines: { node: 18 || 20 || >=22 } + resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} + engines: {node: 18 || 20 || >=22} mode-watcher@1.1.0: - resolution: - { - integrity: sha512-mUT9RRGPDYenk59qJauN1rhsIMKBmWA3xMF+uRwE8MW/tjhaDSCCARqkSuDTq8vr4/2KcAxIGVjACxTjdk5C3g==, - } + resolution: {integrity: sha512-mUT9RRGPDYenk59qJauN1rhsIMKBmWA3xMF+uRwE8MW/tjhaDSCCARqkSuDTq8vr4/2KcAxIGVjACxTjdk5C3g==} peerDependencies: svelte: ^5.27.0 mri@1.2.0: - resolution: - { - integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} mrmime@2.0.1: - resolution: - { - integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} ms@2.1.3: - resolution: - { - integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, - } + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} nanoid@3.3.11: - resolution: - { - integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==, - } - engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true natural-compare@1.4.0: - resolution: - { - integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, - } + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + node-fetch-native@1.6.7: + resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} + + nypm@0.6.5: + resolution: {integrity: sha512-K6AJy1GMVyfyMXRVB88700BJqNUkByijGJM8kEHpLdcAt+vSQAVfkWWHYzuRXHSY6xA2sNc5RjTj0p9rE2izVQ==} + engines: {node: '>=18'} + hasBin: true obug@2.1.1: - resolution: - { - integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==, - } + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + + ohash@2.0.11: + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} + + open@11.0.0: + resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} + engines: {node: '>=20'} optionator@0.9.4: - resolution: - { - integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==, - } - engines: { node: ">= 0.8.0" } + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} p-limit@3.1.0: - resolution: - { - integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} p-locate@5.0.0: - resolution: - { - integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} path-exists@4.0.0: - resolution: - { - integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} path-key@3.1.1: - resolution: - { - integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} path-parse@1.0.7: - resolution: - { - integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, - } + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + perfect-debounce@2.1.0: + resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} picocolors@1.1.1: - resolution: - { - integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==, - } + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} picomatch@4.0.3: - resolution: - { - integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==, - } - engines: { node: ">=12" } + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + + pkg-types@2.3.0: + resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} postcss-load-config@3.1.4: - resolution: - { - integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==, - } - engines: { node: ">= 10" } + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} peerDependencies: - postcss: ">=8.0.9" - ts-node: ">=9.0.0" + postcss: '>=8.0.9' + ts-node: '>=9.0.0' peerDependenciesMeta: postcss: optional: true @@ -2004,214 +1426,153 @@ packages: optional: true postcss-safe-parser@7.0.1: - resolution: - { - integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==, - } - engines: { node: ">=18.0" } + resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} + engines: {node: '>=18.0'} peerDependencies: postcss: ^8.4.31 postcss-scss@4.0.9: - resolution: - { - integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==, - } - engines: { node: ">=12.0" } + resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} + engines: {node: '>=12.0'} peerDependencies: postcss: ^8.4.29 postcss-selector-parser@7.1.1: - resolution: - { - integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==, - } - engines: { node: ">=4" } + resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} + engines: {node: '>=4'} postcss@8.5.6: - resolution: - { - integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==, - } - engines: { node: ^10 || ^12 || >=14 } + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + + powershell-utils@0.1.0: + resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} + engines: {node: '>=20'} prelude-ls@1.2.1: - resolution: - { - integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, - } - engines: { node: ">= 0.8.0" } + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} prettier-plugin-svelte@3.5.0: - resolution: - { - integrity: sha512-2lLO/7EupnjO/95t+XZesXs8Bf3nYLIDfCo270h5QWbj/vjLqmrQ1LiRk9LPggxSDsnVYfehamZNf+rgQYApZg==, - } + resolution: {integrity: sha512-2lLO/7EupnjO/95t+XZesXs8Bf3nYLIDfCo270h5QWbj/vjLqmrQ1LiRk9LPggxSDsnVYfehamZNf+rgQYApZg==} peerDependencies: prettier: ^3.0.0 svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 prettier@3.8.1: - resolution: - { - integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==, - } - engines: { node: ">=14" } + resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} + engines: {node: '>=14'} hasBin: true punycode@2.3.1: - resolution: - { - integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + rc9@2.1.2: + resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} readdirp@4.1.2: - resolution: - { - integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==, - } - engines: { node: ">= 14.18.0" } + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + readdirp@5.0.0: + resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} + engines: {node: '>= 20.19.0'} resolve@1.22.11: - resolution: - { - integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} + engines: {node: '>= 0.4'} hasBin: true rollup@4.59.0: - resolution: - { - integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==, - } - engines: { node: ">=18.0.0", npm: ">=8.0.0" } + resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} + engines: {node: '>=18'} + runed@0.23.4: - resolution: - { - integrity: sha512-9q8oUiBYeXIDLWNK5DfCWlkL0EW3oGbk845VdKlPeia28l751VpfesaB/+7pI6rnbx1I6rqoZ2fZxptOJLxILA==, - } + resolution: {integrity: sha512-9q8oUiBYeXIDLWNK5DfCWlkL0EW3oGbk845VdKlPeia28l751VpfesaB/+7pI6rnbx1I6rqoZ2fZxptOJLxILA==} peerDependencies: svelte: ^5.7.0 runed@0.25.0: - resolution: - { - integrity: sha512-7+ma4AG9FT2sWQEA0Egf6mb7PBT2vHyuHail1ie8ropfSjvZGtEAx8YTmUjv/APCsdRRxEVvArNjALk9zFSOrg==, - } + resolution: {integrity: sha512-7+ma4AG9FT2sWQEA0Egf6mb7PBT2vHyuHail1ie8ropfSjvZGtEAx8YTmUjv/APCsdRRxEVvArNjALk9zFSOrg==} peerDependencies: svelte: ^5.7.0 runed@0.35.1: - resolution: - { - integrity: sha512-2F4Q/FZzbeJTFdIS/PuOoPRSm92sA2LhzTnv6FXhCoENb3huf5+fDuNOg1LNvGOouy3u/225qxmuJvcV3IZK5Q==, - } + resolution: {integrity: sha512-2F4Q/FZzbeJTFdIS/PuOoPRSm92sA2LhzTnv6FXhCoENb3huf5+fDuNOg1LNvGOouy3u/225qxmuJvcV3IZK5Q==} peerDependencies: - "@sveltejs/kit": ^2.21.0 + '@sveltejs/kit': ^2.21.0 svelte: ^5.7.0 peerDependenciesMeta: - "@sveltejs/kit": + '@sveltejs/kit': optional: true sade@1.8.1: - resolution: - { - integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + engines: {node: '>=10'} + hasBin: true semver@7.7.4: - resolution: - { - integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + engines: {node: '>=10'} hasBin: true set-cookie-parser@3.0.1: - resolution: - { - integrity: sha512-n7Z7dXZhJbwuAHhNzkTti6Aw9QDDjZtm3JTpTGATIdNzdQz5GuFs22w90BcvF4INfnrL5xrX3oGsuqO5Dx3A1Q==, - } + resolution: {integrity: sha512-n7Z7dXZhJbwuAHhNzkTti6Aw9QDDjZtm3JTpTGATIdNzdQz5GuFs22w90BcvF4INfnrL5xrX3oGsuqO5Dx3A1Q==} shebang-command@2.0.0: - resolution: - { - integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} shebang-regex@3.0.0: - resolution: - { - integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, - } - engines: { node: ">=8" } + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} sirv@3.0.2: - resolution: - { - integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} + engines: {node: '>=18'} source-map-js@1.2.1: - resolution: - { - integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} sqlite-wasm-kysely@0.3.0: - resolution: - { - integrity: sha512-TzjBNv7KwRw6E3pdKdlRyZiTmUIE0UttT/Sl56MVwVARl/u5gp978KepazCJZewFUnlWHz9i3NQd4kOtP/Afdg==, - } + resolution: {integrity: sha512-TzjBNv7KwRw6E3pdKdlRyZiTmUIE0UttT/Sl56MVwVARl/u5gp978KepazCJZewFUnlWHz9i3NQd4kOtP/Afdg==} peerDependencies: - kysely: "*" + kysely: '*' style-to-object@1.0.14: - resolution: - { - integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==, - } + resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} supports-preserve-symlinks-flag@1.0.0: - resolution: - { - integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, - } - engines: { node: ">= 0.4" } + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} svelte-check@4.4.4: - resolution: - { - integrity: sha512-F1pGqXc710Oi/wTI4d/x7d6lgPwwfx1U6w3Q35n4xsC2e8C/yN2sM1+mWxjlMcpAfWucjlq4vPi+P4FZ8a14sQ==, - } - engines: { node: ">= 18.0.0" } + resolution: {integrity: sha512-F1pGqXc710Oi/wTI4d/x7d6lgPwwfx1U6w3Q35n4xsC2e8C/yN2sM1+mWxjlMcpAfWucjlq4vPi+P4FZ8a14sQ==} + engines: {node: '>= 18.0.0'} hasBin: true peerDependencies: svelte: ^4.0.0 || ^5.0.0-next.0 - typescript: ">=5.0.0" + typescript: '>=5.0.0' svelte-dnd-action@0.9.69: - resolution: - { - integrity: sha512-NAmSOH7htJoYraTQvr+q5whlIuVoq88vEuHr4NcFgscDRUxfWPPxgie2OoxepBCQCikrXZV4pqV86aun60wVyw==, - } + resolution: {integrity: sha512-NAmSOH7htJoYraTQvr+q5whlIuVoq88vEuHr4NcFgscDRUxfWPPxgie2OoxepBCQCikrXZV4pqV86aun60wVyw==} peerDependencies: - svelte: ">=3.23.0 || ^5.0.0-next.0" + svelte: '>=3.23.0 || ^5.0.0-next.0' svelte-eslint-parser@1.5.1: - resolution: - { - integrity: sha512-UbY7DYoDg+x4AKLUcX5xWuEWylgmm8ZD2Z89YT/AK6Wm/ckeMTnOMwr6AVC99znXbRC26xzWEPhSgmB62E07Gg==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0, pnpm: 10.30.2 } + resolution: {integrity: sha512-UbY7DYoDg+x4AKLUcX5xWuEWylgmm8ZD2Z89YT/AK6Wm/ckeMTnOMwr6AVC99znXbRC26xzWEPhSgmB62E07Gg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0, pnpm: 10.30.2} peerDependencies: svelte: ^3.37.0 || ^4.0.0 || ^5.0.0 peerDependenciesMeta: @@ -2219,188 +1580,123 @@ packages: optional: true svelte-toolbelt@0.10.6: - resolution: - { - integrity: sha512-YWuX+RE+CnWYx09yseAe4ZVMM7e7GRFZM6OYWpBKOb++s+SQ8RBIMMe+Bs/CznBMc0QPLjr+vDBxTAkozXsFXQ==, - } - engines: { node: ">=18", pnpm: ">=8.7.0" } + resolution: {integrity: sha512-YWuX+RE+CnWYx09yseAe4ZVMM7e7GRFZM6OYWpBKOb++s+SQ8RBIMMe+Bs/CznBMc0QPLjr+vDBxTAkozXsFXQ==} + engines: {node: '>=18', pnpm: '>=8.7.0'} peerDependencies: svelte: ^5.30.2 svelte-toolbelt@0.7.1: - resolution: - { - integrity: sha512-HcBOcR17Vx9bjaOceUvxkY3nGmbBmCBBbuWLLEWO6jtmWH8f/QoWmbyUfQZrpDINH39en1b8mptfPQT9VKQ1xQ==, - } - engines: { node: ">=18", pnpm: ">=8.7.0" } + resolution: {integrity: sha512-HcBOcR17Vx9bjaOceUvxkY3nGmbBmCBBbuWLLEWO6jtmWH8f/QoWmbyUfQZrpDINH39en1b8mptfPQT9VKQ1xQ==} + engines: {node: '>=18', pnpm: '>=8.7.0'} peerDependencies: svelte: ^5.0.0 svelte@5.53.5: - resolution: - { - integrity: sha512-YkqERnF05g8KLdDZwZrF8/i1eSbj6Eoat8Jjr2IfruZz9StLuBqo8sfCSzjosNKd+ZrQ8DkKZDjpO5y3ht1Pow==, - } - engines: { node: ">=18" } + resolution: {integrity: sha512-YkqERnF05g8KLdDZwZrF8/i1eSbj6Eoat8Jjr2IfruZz9StLuBqo8sfCSzjosNKd+ZrQ8DkKZDjpO5y3ht1Pow==} + engines: {node: '>=18'} tabbable@6.4.0: - resolution: - { - integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==, - } + resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==} tailwind-merge@3.5.0: - resolution: - { - integrity: sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A==, - } + resolution: {integrity: sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A==} tailwind-variants@3.2.2: - resolution: - { - integrity: sha512-Mi4kHeMTLvKlM98XPnK+7HoBPmf4gygdFmqQPaDivc3DpYS6aIY6KiG/PgThrGvii5YZJqRsPz0aPyhoFzmZgg==, - } - engines: { node: ">=16.x", pnpm: ">=7.x" } + resolution: {integrity: sha512-Mi4kHeMTLvKlM98XPnK+7HoBPmf4gygdFmqQPaDivc3DpYS6aIY6KiG/PgThrGvii5YZJqRsPz0aPyhoFzmZgg==} + engines: {node: '>=16.x', pnpm: '>=7.x'} peerDependencies: - tailwind-merge: ">=3.0.0" - tailwindcss: "*" + tailwind-merge: '>=3.0.0' + tailwindcss: '*' peerDependenciesMeta: tailwind-merge: optional: true tailwindcss@4.2.1: - resolution: - { - integrity: sha512-/tBrSQ36vCleJkAOsy9kbNTgaxvGbyOamC30PRePTQe/o1MFwEKHQk4Cn7BNGaPtjp+PuUrByJehM1hgxfq4sw==, - } + resolution: {integrity: sha512-/tBrSQ36vCleJkAOsy9kbNTgaxvGbyOamC30PRePTQe/o1MFwEKHQk4Cn7BNGaPtjp+PuUrByJehM1hgxfq4sw==} tapable@2.3.0: - resolution: - { - integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} + engines: {node: '>=6'} + + tinyexec@1.0.2: + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + engines: {node: '>=18'} tinyglobby@0.2.15: - resolution: - { - integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==, - } - engines: { node: ">=12.0.0" } + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} totalist@3.0.1: - resolution: - { - integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==, - } - engines: { node: ">=6" } + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} ts-api-utils@2.4.0: - resolution: - { - integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==, - } - engines: { node: ">=18.12" } + resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} + engines: {node: '>=18.12'} peerDependencies: - typescript: ">=4.8.4" + typescript: '>=4.8.4' tslib@2.8.1: - resolution: - { - integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==, - } + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} type-check@0.4.0: - resolution: - { - integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==, - } - engines: { node: ">= 0.8.0" } + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} typescript-eslint@8.56.1: - resolution: - { - integrity: sha512-U4lM6pjmBX7J5wk4szltF7I1cGBHXZopnAXCMXb3+fZ3B/0Z3hq3wS/CCUB2NZBNAExK92mCU2tEohWuwVMsDQ==, - } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + resolution: {integrity: sha512-U4lM6pjmBX7J5wk4szltF7I1cGBHXZopnAXCMXb3+fZ3B/0Z3hq3wS/CCUB2NZBNAExK92mCU2tEohWuwVMsDQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: ">=4.8.4 <6.0.0" + typescript: '>=4.8.4 <6.0.0' typescript@5.9.3: - resolution: - { - integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==, - } - engines: { node: ">=14.17" } + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} hasBin: true undici-types@7.18.2: - resolution: - { - integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==, - } + resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} unplugin@2.3.11: - resolution: - { - integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==, - } - engines: { node: ">=18.12.0" } + resolution: {integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==} + engines: {node: '>=18.12.0'} uri-js@4.4.1: - resolution: - { - integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, - } + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} urlpattern-polyfill@10.1.0: - resolution: - { - integrity: sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==, - } + resolution: {integrity: sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==} util-deprecate@1.0.2: - resolution: - { - integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, - } + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} uuid@10.0.0: - resolution: - { - integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==, - } + resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} hasBin: true uuid@13.0.0: - resolution: - { - integrity: sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==, - } + resolution: {integrity: sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==} hasBin: true vite@7.3.1: - resolution: - { - integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==, - } - engines: { node: ^20.19.0 || >=22.12.0 } + resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: - "@types/node": ^20.19.0 || >=22.12.0 - jiti: ">=1.21.0" + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' less: ^4.0.0 lightningcss: ^1.21.0 sass: ^1.70.0 sass-embedded: ^1.70.0 - stylus: ">=0.54.8" + stylus: '>=0.54.8' sugarss: ^5.0.0 terser: ^5.16.0 tsx: ^4.8.1 yaml: ^2.4.2 peerDependenciesMeta: - "@types/node": + '@types/node': optional: true jiti: optional: true @@ -2424,10 +1720,7 @@ packages: optional: true vitefu@1.1.2: - resolution: - { - integrity: sha512-zpKATdUbzbsycPFBN71nS2uzBUQiVnFoOrr2rvqv34S1lcAgMKKkjWleLGeiJlZ8lwCXvtWaRn7R3ZC16SYRuw==, - } + resolution: {integrity: sha512-zpKATdUbzbsycPFBN71nS2uzBUQiVnFoOrr2rvqv34S1lcAgMKKkjWleLGeiJlZ8lwCXvtWaRn7R3ZC16SYRuw==} peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-beta.0 peerDependenciesMeta: @@ -2435,185 +1728,218 @@ packages: optional: true webpack-virtual-modules@0.6.2: - resolution: - { - integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==, - } + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} which@2.0.2: - resolution: - { - integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, - } - engines: { node: ">= 8" } + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} hasBin: true word-wrap@1.2.5: - resolution: - { - integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==, - } - engines: { node: ">=0.10.0" } + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wsl-utils@0.3.1: + resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==} + engines: {node: '>=20'} yaml@1.10.2: - resolution: - { - integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==, - } - engines: { node: ">= 6" } + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} yocto-queue@0.1.0: - resolution: - { - integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, - } - engines: { node: ">=10" } + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} zimmerframe@1.1.4: - resolution: - { - integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==, - } + resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==} snapshots: - "@esbuild/aix-ppc64@0.27.3": + + '@esbuild/aix-ppc64@0.27.3': optional: true - "@esbuild/android-arm64@0.27.3": + '@esbuild/android-arm64@0.27.3': optional: true - "@esbuild/android-arm@0.27.3": + '@esbuild/android-arm@0.27.3': optional: true - "@esbuild/android-x64@0.27.3": + '@esbuild/android-x64@0.27.3': optional: true - "@esbuild/darwin-arm64@0.27.3": + '@esbuild/darwin-arm64@0.27.3': optional: true - "@esbuild/darwin-x64@0.27.3": + '@esbuild/darwin-x64@0.27.3': optional: true - "@esbuild/freebsd-arm64@0.27.3": + '@esbuild/freebsd-arm64@0.27.3': optional: true - "@esbuild/freebsd-x64@0.27.3": + '@esbuild/freebsd-x64@0.27.3': optional: true - "@esbuild/linux-arm64@0.27.3": + '@esbuild/linux-arm64@0.27.3': optional: true - "@esbuild/linux-arm@0.27.3": + '@esbuild/linux-arm@0.27.3': optional: true - "@esbuild/linux-ia32@0.27.3": + '@esbuild/linux-ia32@0.27.3': optional: true - "@esbuild/linux-loong64@0.27.3": + '@esbuild/linux-loong64@0.27.3': optional: true - "@esbuild/linux-mips64el@0.27.3": + '@esbuild/linux-mips64el@0.27.3': optional: true - "@esbuild/linux-ppc64@0.27.3": + '@esbuild/linux-ppc64@0.27.3': optional: true - "@esbuild/linux-riscv64@0.27.3": + '@esbuild/linux-riscv64@0.27.3': optional: true - "@esbuild/linux-s390x@0.27.3": + '@esbuild/linux-s390x@0.27.3': optional: true - "@esbuild/linux-x64@0.27.3": + '@esbuild/linux-x64@0.27.3': optional: true - "@esbuild/netbsd-arm64@0.27.3": + '@esbuild/netbsd-arm64@0.27.3': optional: true - "@esbuild/netbsd-x64@0.27.3": + '@esbuild/netbsd-x64@0.27.3': optional: true - "@esbuild/openbsd-arm64@0.27.3": + '@esbuild/openbsd-arm64@0.27.3': optional: true - "@esbuild/openbsd-x64@0.27.3": + '@esbuild/openbsd-x64@0.27.3': optional: true - "@esbuild/openharmony-arm64@0.27.3": + '@esbuild/openharmony-arm64@0.27.3': optional: true - "@esbuild/sunos-x64@0.27.3": + '@esbuild/sunos-x64@0.27.3': optional: true - "@esbuild/win32-arm64@0.27.3": + '@esbuild/win32-arm64@0.27.3': optional: true - "@esbuild/win32-ia32@0.27.3": + '@esbuild/win32-ia32@0.27.3': optional: true - "@esbuild/win32-x64@0.27.3": + '@esbuild/win32-x64@0.27.3': optional: true - "@eslint-community/eslint-utils@4.9.1(eslint@10.0.2(jiti@2.6.1))": + '@eslint-community/eslint-utils@4.9.1(eslint@10.0.2(jiti@2.6.1))': dependencies: eslint: 10.0.2(jiti@2.6.1) eslint-visitor-keys: 3.4.3 - "@eslint-community/regexpp@4.12.2": {} + '@eslint-community/regexpp@4.12.2': {} - "@eslint/config-array@0.23.2": + '@eslint/config-array@0.23.2': dependencies: - "@eslint/object-schema": 3.0.2 + '@eslint/object-schema': 3.0.2 debug: 4.4.3 minimatch: 10.2.4 transitivePeerDependencies: - supports-color - "@eslint/config-helpers@0.5.2": + '@eslint/config-helpers@0.5.2': dependencies: - "@eslint/core": 1.1.0 + '@eslint/core': 1.1.0 - "@eslint/core@1.1.0": + '@eslint/core@1.1.0': dependencies: - "@types/json-schema": 7.0.15 + '@types/json-schema': 7.0.15 - "@eslint/js@10.0.1(eslint@10.0.2(jiti@2.6.1))": + '@eslint/js@10.0.1(eslint@10.0.2(jiti@2.6.1))': optionalDependencies: eslint: 10.0.2(jiti@2.6.1) - "@eslint/object-schema@3.0.2": {} + '@eslint/object-schema@3.0.2': {} - "@eslint/plugin-kit@0.6.0": + '@eslint/plugin-kit@0.6.0': dependencies: - "@eslint/core": 1.1.0 + '@eslint/core': 1.1.0 levn: 0.4.1 - "@floating-ui/core@1.7.4": + '@floating-ui/core@1.7.4': dependencies: - "@floating-ui/utils": 0.2.10 + '@floating-ui/utils': 0.2.10 - "@floating-ui/dom@1.7.5": + '@floating-ui/dom@1.7.5': dependencies: - "@floating-ui/core": 1.7.4 - "@floating-ui/utils": 0.2.10 + '@floating-ui/core': 1.7.4 + '@floating-ui/utils': 0.2.10 - "@floating-ui/utils@0.2.10": {} + '@floating-ui/utils@0.2.10': {} - "@humanfs/core@0.19.1": {} - - "@humanfs/node@0.16.7": + '@hey-api/codegen-core@0.7.1(typescript@5.9.3)': dependencies: - "@humanfs/core": 0.19.1 - "@humanwhocodes/retry": 0.4.3 + '@hey-api/types': 0.1.3(typescript@5.9.3) + ansi-colors: 4.1.3 + c12: 3.3.3 + color-support: 1.1.3 + typescript: 5.9.3 + transitivePeerDependencies: + - magicast - "@humanwhocodes/module-importer@1.0.1": {} - - "@humanwhocodes/retry@0.4.3": {} - - "@inlang/paraglide-js@2.13.0": + '@hey-api/json-schema-ref-parser@1.3.1': dependencies: - "@inlang/recommend-sherlock": 0.2.1 - "@inlang/sdk": 2.7.0 + '@jsdevtools/ono': 7.1.3 + '@types/json-schema': 7.0.15 + js-yaml: 4.1.1 + + '@hey-api/openapi-ts@0.94.0(typescript@5.9.3)': + dependencies: + '@hey-api/codegen-core': 0.7.1(typescript@5.9.3) + '@hey-api/json-schema-ref-parser': 1.3.1 + '@hey-api/shared': 0.2.2(typescript@5.9.3) + '@hey-api/types': 0.1.3(typescript@5.9.3) + ansi-colors: 4.1.3 + color-support: 1.1.3 + commander: 14.0.3 + typescript: 5.9.3 + transitivePeerDependencies: + - magicast + + '@hey-api/shared@0.2.2(typescript@5.9.3)': + dependencies: + '@hey-api/codegen-core': 0.7.1(typescript@5.9.3) + '@hey-api/json-schema-ref-parser': 1.3.1 + '@hey-api/types': 0.1.3(typescript@5.9.3) + ansi-colors: 4.1.3 + cross-spawn: 7.0.6 + open: 11.0.0 + semver: 7.7.3 + typescript: 5.9.3 + transitivePeerDependencies: + - magicast + + '@hey-api/types@0.1.3(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.7': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.4.3 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@inlang/paraglide-js@2.13.0': + dependencies: + '@inlang/recommend-sherlock': 0.2.1 + '@inlang/sdk': 2.7.0 commander: 11.1.0 consola: 3.4.0 json5: 2.2.3 @@ -2622,46 +1948,48 @@ snapshots: transitivePeerDependencies: - babel-plugin-macros - "@inlang/recommend-sherlock@0.2.1": + '@inlang/recommend-sherlock@0.2.1': dependencies: comment-json: 4.5.1 - "@inlang/sdk@2.7.0": + '@inlang/sdk@2.7.0': dependencies: - "@lix-js/sdk": 0.4.7 - "@sinclair/typebox": 0.31.28 + '@lix-js/sdk': 0.4.7 + '@sinclair/typebox': 0.31.28 kysely: 0.27.6 sqlite-wasm-kysely: 0.3.0(kysely@0.27.6) uuid: 13.0.0 transitivePeerDependencies: - babel-plugin-macros - "@internationalized/date@3.11.0": + '@internationalized/date@3.11.0': dependencies: - "@swc/helpers": 0.5.19 + '@swc/helpers': 0.5.19 - "@jridgewell/gen-mapping@0.3.13": + '@jridgewell/gen-mapping@0.3.13': dependencies: - "@jridgewell/sourcemap-codec": 1.5.5 - "@jridgewell/trace-mapping": 0.3.31 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 - "@jridgewell/remapping@2.3.5": + '@jridgewell/remapping@2.3.5': dependencies: - "@jridgewell/gen-mapping": 0.3.13 - "@jridgewell/trace-mapping": 0.3.31 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 - "@jridgewell/resolve-uri@3.1.2": {} + '@jridgewell/resolve-uri@3.1.2': {} - "@jridgewell/sourcemap-codec@1.5.5": {} + '@jridgewell/sourcemap-codec@1.5.5': {} - "@jridgewell/trace-mapping@0.3.31": + '@jridgewell/trace-mapping@0.3.31': dependencies: - "@jridgewell/resolve-uri": 3.1.2 - "@jridgewell/sourcemap-codec": 1.5.5 + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 - "@lix-js/sdk@0.4.7": + '@jsdevtools/ono@7.1.3': {} + + '@lix-js/sdk@0.4.7': dependencies: - "@lix-js/server-protocol-schema": 0.1.1 + '@lix-js/server-protocol-schema': 0.1.1 dedent: 1.5.1 human-id: 4.1.3 js-sha256: 0.11.1 @@ -2671,17 +1999,17 @@ snapshots: transitivePeerDependencies: - babel-plugin-macros - "@lix-js/server-protocol-schema@0.1.1": {} + '@lix-js/server-protocol-schema@0.1.1': {} - "@lucide/svelte@0.561.0(svelte@5.53.5)": + '@lucide/svelte@0.561.0(svelte@5.53.5)': dependencies: svelte: 5.53.5 - "@polka/url@1.0.0-next.29": {} + '@polka/url@1.0.0-next.29': {} - "@rollup/plugin-commonjs@29.0.0(rollup@4.59.0)": + '@rollup/plugin-commonjs@29.0.0(rollup@4.59.0)': dependencies: - "@rollup/pluginutils": 5.3.0(rollup@4.59.0) + '@rollup/pluginutils': 5.3.0(rollup@4.59.0) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.5.0(picomatch@4.0.3) @@ -2691,129 +2019,129 @@ snapshots: optionalDependencies: rollup: 4.59.0 - "@rollup/plugin-json@6.1.0(rollup@4.59.0)": + '@rollup/plugin-json@6.1.0(rollup@4.59.0)': dependencies: - "@rollup/pluginutils": 5.3.0(rollup@4.59.0) + '@rollup/pluginutils': 5.3.0(rollup@4.59.0) optionalDependencies: rollup: 4.59.0 - "@rollup/plugin-node-resolve@16.0.3(rollup@4.59.0)": + '@rollup/plugin-node-resolve@16.0.3(rollup@4.59.0)': dependencies: - "@rollup/pluginutils": 5.3.0(rollup@4.59.0) - "@types/resolve": 1.20.2 + '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.11 optionalDependencies: rollup: 4.59.0 - "@rollup/pluginutils@5.3.0(rollup@4.59.0)": + '@rollup/pluginutils@5.3.0(rollup@4.59.0)': dependencies: - "@types/estree": 1.0.8 + '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: rollup: 4.59.0 - "@rollup/rollup-android-arm-eabi@4.59.0": + '@rollup/rollup-android-arm-eabi@4.59.0': optional: true - "@rollup/rollup-android-arm64@4.59.0": + '@rollup/rollup-android-arm64@4.59.0': optional: true - "@rollup/rollup-darwin-arm64@4.59.0": + '@rollup/rollup-darwin-arm64@4.59.0': optional: true - "@rollup/rollup-darwin-x64@4.59.0": + '@rollup/rollup-darwin-x64@4.59.0': optional: true - "@rollup/rollup-freebsd-arm64@4.59.0": + '@rollup/rollup-freebsd-arm64@4.59.0': optional: true - "@rollup/rollup-freebsd-x64@4.59.0": + '@rollup/rollup-freebsd-x64@4.59.0': optional: true - "@rollup/rollup-linux-arm-gnueabihf@4.59.0": + '@rollup/rollup-linux-arm-gnueabihf@4.59.0': optional: true - "@rollup/rollup-linux-arm-musleabihf@4.59.0": + '@rollup/rollup-linux-arm-musleabihf@4.59.0': optional: true - "@rollup/rollup-linux-arm64-gnu@4.59.0": + '@rollup/rollup-linux-arm64-gnu@4.59.0': optional: true - "@rollup/rollup-linux-arm64-musl@4.59.0": + '@rollup/rollup-linux-arm64-musl@4.59.0': optional: true - "@rollup/rollup-linux-loong64-gnu@4.59.0": + '@rollup/rollup-linux-loong64-gnu@4.59.0': optional: true - "@rollup/rollup-linux-loong64-musl@4.59.0": + '@rollup/rollup-linux-loong64-musl@4.59.0': optional: true - "@rollup/rollup-linux-ppc64-gnu@4.59.0": + '@rollup/rollup-linux-ppc64-gnu@4.59.0': optional: true - "@rollup/rollup-linux-ppc64-musl@4.59.0": + '@rollup/rollup-linux-ppc64-musl@4.59.0': optional: true - "@rollup/rollup-linux-riscv64-gnu@4.59.0": + '@rollup/rollup-linux-riscv64-gnu@4.59.0': optional: true - "@rollup/rollup-linux-riscv64-musl@4.59.0": + '@rollup/rollup-linux-riscv64-musl@4.59.0': optional: true - "@rollup/rollup-linux-s390x-gnu@4.59.0": + '@rollup/rollup-linux-s390x-gnu@4.59.0': optional: true - "@rollup/rollup-linux-x64-gnu@4.59.0": + '@rollup/rollup-linux-x64-gnu@4.59.0': optional: true - "@rollup/rollup-linux-x64-musl@4.59.0": + '@rollup/rollup-linux-x64-musl@4.59.0': optional: true - "@rollup/rollup-openbsd-x64@4.59.0": + '@rollup/rollup-openbsd-x64@4.59.0': optional: true - "@rollup/rollup-openharmony-arm64@4.59.0": + '@rollup/rollup-openharmony-arm64@4.59.0': optional: true - "@rollup/rollup-win32-arm64-msvc@4.59.0": + '@rollup/rollup-win32-arm64-msvc@4.59.0': optional: true - "@rollup/rollup-win32-ia32-msvc@4.59.0": + '@rollup/rollup-win32-ia32-msvc@4.59.0': optional: true - "@rollup/rollup-win32-x64-gnu@4.59.0": + '@rollup/rollup-win32-x64-gnu@4.59.0': optional: true - "@rollup/rollup-win32-x64-msvc@4.59.0": + '@rollup/rollup-win32-x64-msvc@4.59.0': optional: true - "@sinclair/typebox@0.31.28": {} + '@sinclair/typebox@0.31.28': {} - "@sqlite.org/sqlite-wasm@3.48.0-build4": {} + '@sqlite.org/sqlite-wasm@3.48.0-build4': {} - "@standard-schema/spec@1.1.0": {} + '@standard-schema/spec@1.1.0': {} - "@sveltejs/acorn-typescript@1.0.9(acorn@8.16.0)": + '@sveltejs/acorn-typescript@1.0.9(acorn@8.16.0)': dependencies: acorn: 8.16.0 - "@sveltejs/adapter-node@5.5.4(@sveltejs/kit@2.53.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)))": + '@sveltejs/adapter-node@5.5.4(@sveltejs/kit@2.53.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)))': dependencies: - "@rollup/plugin-commonjs": 29.0.0(rollup@4.59.0) - "@rollup/plugin-json": 6.1.0(rollup@4.59.0) - "@rollup/plugin-node-resolve": 16.0.3(rollup@4.59.0) - "@sveltejs/kit": 2.53.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)) + '@rollup/plugin-commonjs': 29.0.0(rollup@4.59.0) + '@rollup/plugin-json': 6.1.0(rollup@4.59.0) + '@rollup/plugin-node-resolve': 16.0.3(rollup@4.59.0) + '@sveltejs/kit': 2.53.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)) rollup: 4.59.0 - "@sveltejs/kit@2.53.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1))": + '@sveltejs/kit@2.53.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1))': dependencies: - "@standard-schema/spec": 1.1.0 - "@sveltejs/acorn-typescript": 1.0.9(acorn@8.16.0) - "@sveltejs/vite-plugin-svelte": 6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)) - "@types/cookie": 0.6.0 + '@standard-schema/spec': 1.1.0 + '@sveltejs/acorn-typescript': 1.0.9(acorn@8.16.0) + '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)) + '@types/cookie': 0.6.0 acorn: 8.16.0 cookie: 0.6.0 devalue: 5.6.3 @@ -2828,16 +2156,16 @@ snapshots: optionalDependencies: typescript: 5.9.3 - "@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1))": + '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1))': dependencies: - "@sveltejs/vite-plugin-svelte": 6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)) + '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)) obug: 2.1.1 svelte: 5.53.5 vite: 7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1) - "@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1))": + '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1))': dependencies: - "@sveltejs/vite-plugin-svelte-inspector": 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)) + '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)) deepmerge: 4.3.1 magic-string: 0.30.21 obug: 2.1.1 @@ -2845,13 +2173,13 @@ snapshots: vite: 7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1) vitefu: 1.1.2(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)) - "@swc/helpers@0.5.19": + '@swc/helpers@0.5.19': dependencies: tslib: 2.8.1 - "@tailwindcss/node@4.2.1": + '@tailwindcss/node@4.2.1': dependencies: - "@jridgewell/remapping": 2.3.5 + '@jridgewell/remapping': 2.3.5 enhanced-resolve: 5.19.0 jiti: 2.6.1 lightningcss: 1.31.1 @@ -2859,89 +2187,89 @@ snapshots: source-map-js: 1.2.1 tailwindcss: 4.2.1 - "@tailwindcss/oxide-android-arm64@4.2.1": + '@tailwindcss/oxide-android-arm64@4.2.1': optional: true - "@tailwindcss/oxide-darwin-arm64@4.2.1": + '@tailwindcss/oxide-darwin-arm64@4.2.1': optional: true - "@tailwindcss/oxide-darwin-x64@4.2.1": + '@tailwindcss/oxide-darwin-x64@4.2.1': optional: true - "@tailwindcss/oxide-freebsd-x64@4.2.1": + '@tailwindcss/oxide-freebsd-x64@4.2.1': optional: true - "@tailwindcss/oxide-linux-arm-gnueabihf@4.2.1": + '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.1': optional: true - "@tailwindcss/oxide-linux-arm64-gnu@4.2.1": + '@tailwindcss/oxide-linux-arm64-gnu@4.2.1': optional: true - "@tailwindcss/oxide-linux-arm64-musl@4.2.1": + '@tailwindcss/oxide-linux-arm64-musl@4.2.1': optional: true - "@tailwindcss/oxide-linux-x64-gnu@4.2.1": + '@tailwindcss/oxide-linux-x64-gnu@4.2.1': optional: true - "@tailwindcss/oxide-linux-x64-musl@4.2.1": + '@tailwindcss/oxide-linux-x64-musl@4.2.1': optional: true - "@tailwindcss/oxide-wasm32-wasi@4.2.1": + '@tailwindcss/oxide-wasm32-wasi@4.2.1': optional: true - "@tailwindcss/oxide-win32-arm64-msvc@4.2.1": + '@tailwindcss/oxide-win32-arm64-msvc@4.2.1': optional: true - "@tailwindcss/oxide-win32-x64-msvc@4.2.1": + '@tailwindcss/oxide-win32-x64-msvc@4.2.1': optional: true - "@tailwindcss/oxide@4.2.1": + '@tailwindcss/oxide@4.2.1': optionalDependencies: - "@tailwindcss/oxide-android-arm64": 4.2.1 - "@tailwindcss/oxide-darwin-arm64": 4.2.1 - "@tailwindcss/oxide-darwin-x64": 4.2.1 - "@tailwindcss/oxide-freebsd-x64": 4.2.1 - "@tailwindcss/oxide-linux-arm-gnueabihf": 4.2.1 - "@tailwindcss/oxide-linux-arm64-gnu": 4.2.1 - "@tailwindcss/oxide-linux-arm64-musl": 4.2.1 - "@tailwindcss/oxide-linux-x64-gnu": 4.2.1 - "@tailwindcss/oxide-linux-x64-musl": 4.2.1 - "@tailwindcss/oxide-wasm32-wasi": 4.2.1 - "@tailwindcss/oxide-win32-arm64-msvc": 4.2.1 - "@tailwindcss/oxide-win32-x64-msvc": 4.2.1 + '@tailwindcss/oxide-android-arm64': 4.2.1 + '@tailwindcss/oxide-darwin-arm64': 4.2.1 + '@tailwindcss/oxide-darwin-x64': 4.2.1 + '@tailwindcss/oxide-freebsd-x64': 4.2.1 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.2.1 + '@tailwindcss/oxide-linux-arm64-gnu': 4.2.1 + '@tailwindcss/oxide-linux-arm64-musl': 4.2.1 + '@tailwindcss/oxide-linux-x64-gnu': 4.2.1 + '@tailwindcss/oxide-linux-x64-musl': 4.2.1 + '@tailwindcss/oxide-wasm32-wasi': 4.2.1 + '@tailwindcss/oxide-win32-arm64-msvc': 4.2.1 + '@tailwindcss/oxide-win32-x64-msvc': 4.2.1 - "@tailwindcss/vite@4.2.1(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1))": + '@tailwindcss/vite@4.2.1(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1))': dependencies: - "@tailwindcss/node": 4.2.1 - "@tailwindcss/oxide": 4.2.1 + '@tailwindcss/node': 4.2.1 + '@tailwindcss/oxide': 4.2.1 tailwindcss: 4.2.1 vite: 7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1) - "@types/cookie@0.6.0": {} + '@types/cookie@0.6.0': {} - "@types/esrecurse@4.3.1": {} + '@types/esrecurse@4.3.1': {} - "@types/estree@1.0.8": {} + '@types/estree@1.0.8': {} - "@types/json-schema@7.0.15": {} + '@types/json-schema@7.0.15': {} - "@types/node@25.3.3": + '@types/node@25.3.3': dependencies: undici-types: 7.18.2 optional: true - "@types/resolve@1.20.2": {} + '@types/resolve@1.20.2': {} - "@types/trusted-types@2.0.7": {} + '@types/trusted-types@2.0.7': {} - "@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)": + '@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - "@eslint-community/regexpp": 4.12.2 - "@typescript-eslint/parser": 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3) - "@typescript-eslint/scope-manager": 8.56.1 - "@typescript-eslint/type-utils": 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3) - "@typescript-eslint/utils": 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3) - "@typescript-eslint/visitor-keys": 8.56.1 + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.56.1 + '@typescript-eslint/type-utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.56.1 eslint: 10.0.2(jiti@2.6.1) ignore: 7.0.5 natural-compare: 1.4.0 @@ -2950,41 +2278,41 @@ snapshots: transitivePeerDependencies: - supports-color - "@typescript-eslint/parser@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)": + '@typescript-eslint/parser@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - "@typescript-eslint/scope-manager": 8.56.1 - "@typescript-eslint/types": 8.56.1 - "@typescript-eslint/typescript-estree": 8.56.1(typescript@5.9.3) - "@typescript-eslint/visitor-keys": 8.56.1 + '@typescript-eslint/scope-manager': 8.56.1 + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.56.1 debug: 4.4.3 eslint: 10.0.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/project-service@8.56.1(typescript@5.9.3)": + '@typescript-eslint/project-service@8.56.1(typescript@5.9.3)': dependencies: - "@typescript-eslint/tsconfig-utils": 8.56.1(typescript@5.9.3) - "@typescript-eslint/types": 8.56.1 + '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.9.3) + '@typescript-eslint/types': 8.56.1 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/scope-manager@8.56.1": + '@typescript-eslint/scope-manager@8.56.1': dependencies: - "@typescript-eslint/types": 8.56.1 - "@typescript-eslint/visitor-keys": 8.56.1 + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/visitor-keys': 8.56.1 - "@typescript-eslint/tsconfig-utils@8.56.1(typescript@5.9.3)": + '@typescript-eslint/tsconfig-utils@8.56.1(typescript@5.9.3)': dependencies: typescript: 5.9.3 - "@typescript-eslint/type-utils@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)": + '@typescript-eslint/type-utils@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - "@typescript-eslint/types": 8.56.1 - "@typescript-eslint/typescript-estree": 8.56.1(typescript@5.9.3) - "@typescript-eslint/utils": 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3 eslint: 10.0.2(jiti@2.6.1) ts-api-utils: 2.4.0(typescript@5.9.3) @@ -2992,14 +2320,14 @@ snapshots: transitivePeerDependencies: - supports-color - "@typescript-eslint/types@8.56.1": {} + '@typescript-eslint/types@8.56.1': {} - "@typescript-eslint/typescript-estree@8.56.1(typescript@5.9.3)": + '@typescript-eslint/typescript-estree@8.56.1(typescript@5.9.3)': dependencies: - "@typescript-eslint/project-service": 8.56.1(typescript@5.9.3) - "@typescript-eslint/tsconfig-utils": 8.56.1(typescript@5.9.3) - "@typescript-eslint/types": 8.56.1 - "@typescript-eslint/visitor-keys": 8.56.1 + '@typescript-eslint/project-service': 8.56.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.9.3) + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/visitor-keys': 8.56.1 debug: 4.4.3 minimatch: 10.2.4 semver: 7.7.4 @@ -3009,20 +2337,20 @@ snapshots: transitivePeerDependencies: - supports-color - "@typescript-eslint/utils@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)": + '@typescript-eslint/utils@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - "@eslint-community/eslint-utils": 4.9.1(eslint@10.0.2(jiti@2.6.1)) - "@typescript-eslint/scope-manager": 8.56.1 - "@typescript-eslint/types": 8.56.1 - "@typescript-eslint/typescript-estree": 8.56.1(typescript@5.9.3) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.56.1 + '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) eslint: 10.0.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - "@typescript-eslint/visitor-keys@8.56.1": + '@typescript-eslint/visitor-keys@8.56.1': dependencies: - "@typescript-eslint/types": 8.56.1 + '@typescript-eslint/types': 8.56.1 eslint-visitor-keys: 5.0.1 acorn-jsx@5.3.2(acorn@8.16.0): @@ -3038,6 +2366,10 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + ansi-colors@4.1.3: {} + + argparse@2.0.1: {} + aria-query@5.3.1: {} array-timsort@1.0.3: {} @@ -3048,29 +2380,62 @@ snapshots: bits-ui@2.16.2(@internationalized/date@3.11.0)(@sveltejs/kit@2.53.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.5): dependencies: - "@floating-ui/core": 1.7.4 - "@floating-ui/dom": 1.7.5 - "@internationalized/date": 3.11.0 + '@floating-ui/core': 1.7.4 + '@floating-ui/dom': 1.7.5 + '@internationalized/date': 3.11.0 esm-env: 1.2.2 runed: 0.35.1(@sveltejs/kit@2.53.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.5) svelte: 5.53.5 svelte-toolbelt: 0.10.6(@sveltejs/kit@2.53.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.5) tabbable: 6.4.0 transitivePeerDependencies: - - "@sveltejs/kit" + - '@sveltejs/kit' brace-expansion@5.0.4: dependencies: balanced-match: 4.0.4 + bundle-name@4.1.0: + dependencies: + run-applescript: 7.1.0 + + c12@3.3.3: + dependencies: + chokidar: 5.0.0 + confbox: 0.2.4 + defu: 6.1.4 + dotenv: 17.3.1 + exsolve: 1.0.8 + giget: 2.0.0 + jiti: 2.6.1 + ohash: 2.0.11 + pathe: 2.0.3 + perfect-debounce: 2.1.0 + pkg-types: 2.3.0 + rc9: 2.1.2 + chokidar@4.0.3: dependencies: readdirp: 4.1.2 + chokidar@5.0.0: + dependencies: + readdirp: 5.0.0 + + citty@0.1.6: + dependencies: + consola: 3.4.0 + + citty@0.2.1: {} + clsx@2.1.1: {} + color-support@1.1.3: {} + commander@11.1.0: {} + commander@14.0.3: {} + comment-json@4.5.1: dependencies: array-timsort: 1.0.3 @@ -3079,6 +2444,8 @@ snapshots: commondir@1.0.1: {} + confbox@0.2.4: {} + consola@3.4.0: {} cookie@0.6.0: {} @@ -3103,12 +2470,27 @@ snapshots: deepmerge@4.3.1: {} + default-browser-id@5.0.1: {} + + default-browser@5.5.0: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.1 + + define-lazy-prop@3.0.0: {} + + defu@6.1.4: {} + dequal@2.0.3: {} + destr@2.0.5: {} + detect-libc@2.1.2: {} devalue@5.6.3: {} + dotenv@17.3.1: {} + enhanced-resolve@5.19.0: dependencies: graceful-fs: 4.2.11 @@ -3116,39 +2498,39 @@ snapshots: esbuild@0.27.3: optionalDependencies: - "@esbuild/aix-ppc64": 0.27.3 - "@esbuild/android-arm": 0.27.3 - "@esbuild/android-arm64": 0.27.3 - "@esbuild/android-x64": 0.27.3 - "@esbuild/darwin-arm64": 0.27.3 - "@esbuild/darwin-x64": 0.27.3 - "@esbuild/freebsd-arm64": 0.27.3 - "@esbuild/freebsd-x64": 0.27.3 - "@esbuild/linux-arm": 0.27.3 - "@esbuild/linux-arm64": 0.27.3 - "@esbuild/linux-ia32": 0.27.3 - "@esbuild/linux-loong64": 0.27.3 - "@esbuild/linux-mips64el": 0.27.3 - "@esbuild/linux-ppc64": 0.27.3 - "@esbuild/linux-riscv64": 0.27.3 - "@esbuild/linux-s390x": 0.27.3 - "@esbuild/linux-x64": 0.27.3 - "@esbuild/netbsd-arm64": 0.27.3 - "@esbuild/netbsd-x64": 0.27.3 - "@esbuild/openbsd-arm64": 0.27.3 - "@esbuild/openbsd-x64": 0.27.3 - "@esbuild/openharmony-arm64": 0.27.3 - "@esbuild/sunos-x64": 0.27.3 - "@esbuild/win32-arm64": 0.27.3 - "@esbuild/win32-ia32": 0.27.3 - "@esbuild/win32-x64": 0.27.3 + '@esbuild/aix-ppc64': 0.27.3 + '@esbuild/android-arm': 0.27.3 + '@esbuild/android-arm64': 0.27.3 + '@esbuild/android-x64': 0.27.3 + '@esbuild/darwin-arm64': 0.27.3 + '@esbuild/darwin-x64': 0.27.3 + '@esbuild/freebsd-arm64': 0.27.3 + '@esbuild/freebsd-x64': 0.27.3 + '@esbuild/linux-arm': 0.27.3 + '@esbuild/linux-arm64': 0.27.3 + '@esbuild/linux-ia32': 0.27.3 + '@esbuild/linux-loong64': 0.27.3 + '@esbuild/linux-mips64el': 0.27.3 + '@esbuild/linux-ppc64': 0.27.3 + '@esbuild/linux-riscv64': 0.27.3 + '@esbuild/linux-s390x': 0.27.3 + '@esbuild/linux-x64': 0.27.3 + '@esbuild/netbsd-arm64': 0.27.3 + '@esbuild/netbsd-x64': 0.27.3 + '@esbuild/openbsd-arm64': 0.27.3 + '@esbuild/openbsd-x64': 0.27.3 + '@esbuild/openharmony-arm64': 0.27.3 + '@esbuild/sunos-x64': 0.27.3 + '@esbuild/win32-arm64': 0.27.3 + '@esbuild/win32-ia32': 0.27.3 + '@esbuild/win32-x64': 0.27.3 escape-string-regexp@4.0.0: {} eslint-plugin-svelte@3.15.0(eslint@10.0.2(jiti@2.6.1))(svelte@5.53.5): dependencies: - "@eslint-community/eslint-utils": 4.9.1(eslint@10.0.2(jiti@2.6.1)) - "@jridgewell/sourcemap-codec": 1.5.5 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2(jiti@2.6.1)) + '@jridgewell/sourcemap-codec': 1.5.5 eslint: 10.0.2(jiti@2.6.1) esutils: 2.0.3 globals: 16.5.0 @@ -3170,8 +2552,8 @@ snapshots: eslint-scope@9.1.1: dependencies: - "@types/esrecurse": 4.3.1 - "@types/estree": 1.0.8 + '@types/esrecurse': 4.3.1 + '@types/estree': 1.0.8 esrecurse: 4.3.0 estraverse: 5.3.0 @@ -3183,16 +2565,16 @@ snapshots: eslint@10.0.2(jiti@2.6.1): dependencies: - "@eslint-community/eslint-utils": 4.9.1(eslint@10.0.2(jiti@2.6.1)) - "@eslint-community/regexpp": 4.12.2 - "@eslint/config-array": 0.23.2 - "@eslint/config-helpers": 0.5.2 - "@eslint/core": 1.1.0 - "@eslint/plugin-kit": 0.6.0 - "@humanfs/node": 0.16.7 - "@humanwhocodes/module-importer": 1.0.1 - "@humanwhocodes/retry": 0.4.3 - "@types/estree": 1.0.8 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2(jiti@2.6.1)) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.23.2 + '@eslint/config-helpers': 0.5.2 + '@eslint/core': 1.1.0 + '@eslint/plugin-kit': 0.6.0 + '@humanfs/node': 0.16.7 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.8 ajv: 6.14.0 cross-spawn: 7.0.6 debug: 4.4.3 @@ -3240,7 +2622,7 @@ snapshots: esrap@2.2.3: dependencies: - "@jridgewell/sourcemap-codec": 1.5.5 + '@jridgewell/sourcemap-codec': 1.5.5 esrecurse@4.3.0: dependencies: @@ -3252,6 +2634,8 @@ snapshots: esutils@2.0.3: {} + exsolve@1.0.8: {} + fast-deep-equal@3.1.3: {} fast-json-stable-stringify@2.1.0: {} @@ -3283,6 +2667,15 @@ snapshots: function-bind@1.1.2: {} + giget@2.0.0: + dependencies: + citty: 0.1.6 + consola: 3.4.0 + defu: 6.1.4 + node-fetch-native: 1.6.7 + nypm: 0.6.5 + pathe: 2.0.3 + glob-parent@6.0.2: dependencies: is-glob: 4.0.3 @@ -3311,21 +2704,33 @@ snapshots: dependencies: hasown: 2.0.2 + is-docker@3.0.0: {} + is-extglob@2.1.1: {} is-glob@4.0.3: dependencies: is-extglob: 2.1.1 + is-in-ssh@1.0.0: {} + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + is-module@1.0.0: {} is-reference@1.2.1: dependencies: - "@types/estree": 1.0.8 + '@types/estree': 1.0.8 is-reference@3.0.3: dependencies: - "@types/estree": 1.0.8 + '@types/estree': 1.0.8 + + is-wsl@3.1.1: + dependencies: + is-inside-container: 1.0.0 isexe@2.0.0: {} @@ -3333,6 +2738,10 @@ snapshots: js-sha256@0.11.1: {} + js-yaml@4.1.1: + dependencies: + argparse: 2.0.1 + json-buffer@3.0.1: {} json-schema-traverse@0.4.1: {} @@ -3421,7 +2830,7 @@ snapshots: magic-string@0.30.21: dependencies: - "@jridgewell/sourcemap-codec": 1.5.5 + '@jridgewell/sourcemap-codec': 1.5.5 minimatch@10.2.4: dependencies: @@ -3443,8 +2852,27 @@ snapshots: natural-compare@1.4.0: {} + node-fetch-native@1.6.7: {} + + nypm@0.6.5: + dependencies: + citty: 0.2.1 + pathe: 2.0.3 + tinyexec: 1.0.2 + obug@2.1.1: {} + ohash@2.0.11: {} + + open@11.0.0: + dependencies: + default-browser: 5.5.0 + define-lazy-prop: 3.0.0 + is-in-ssh: 1.0.0 + is-inside-container: 1.0.0 + powershell-utils: 0.1.0 + wsl-utils: 0.3.1 + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -3468,10 +2896,20 @@ snapshots: path-parse@1.0.7: {} + pathe@2.0.3: {} + + perfect-debounce@2.1.0: {} + picocolors@1.1.1: {} picomatch@4.0.3: {} + pkg-types@2.3.0: + dependencies: + confbox: 0.2.4 + exsolve: 1.0.8 + pathe: 2.0.3 + postcss-load-config@3.1.4(postcss@8.5.6): dependencies: lilconfig: 2.1.0 @@ -3498,6 +2936,8 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + powershell-utils@0.1.0: {} + prelude-ls@1.2.1: {} prettier-plugin-svelte@3.5.0(prettier@3.8.1)(svelte@5.53.5): @@ -3509,8 +2949,15 @@ snapshots: punycode@2.3.1: {} + rc9@2.1.2: + dependencies: + defu: 6.1.4 + destr: 2.0.5 + readdirp@4.1.2: {} + readdirp@5.0.0: {} + resolve@1.22.11: dependencies: is-core-module: 2.16.1 @@ -3519,35 +2966,37 @@ snapshots: rollup@4.59.0: dependencies: - "@types/estree": 1.0.8 + '@types/estree': 1.0.8 optionalDependencies: - "@rollup/rollup-android-arm-eabi": 4.59.0 - "@rollup/rollup-android-arm64": 4.59.0 - "@rollup/rollup-darwin-arm64": 4.59.0 - "@rollup/rollup-darwin-x64": 4.59.0 - "@rollup/rollup-freebsd-arm64": 4.59.0 - "@rollup/rollup-freebsd-x64": 4.59.0 - "@rollup/rollup-linux-arm-gnueabihf": 4.59.0 - "@rollup/rollup-linux-arm-musleabihf": 4.59.0 - "@rollup/rollup-linux-arm64-gnu": 4.59.0 - "@rollup/rollup-linux-arm64-musl": 4.59.0 - "@rollup/rollup-linux-loong64-gnu": 4.59.0 - "@rollup/rollup-linux-loong64-musl": 4.59.0 - "@rollup/rollup-linux-ppc64-gnu": 4.59.0 - "@rollup/rollup-linux-ppc64-musl": 4.59.0 - "@rollup/rollup-linux-riscv64-gnu": 4.59.0 - "@rollup/rollup-linux-riscv64-musl": 4.59.0 - "@rollup/rollup-linux-s390x-gnu": 4.59.0 - "@rollup/rollup-linux-x64-gnu": 4.59.0 - "@rollup/rollup-linux-x64-musl": 4.59.0 - "@rollup/rollup-openbsd-x64": 4.59.0 - "@rollup/rollup-openharmony-arm64": 4.59.0 - "@rollup/rollup-win32-arm64-msvc": 4.59.0 - "@rollup/rollup-win32-ia32-msvc": 4.59.0 - "@rollup/rollup-win32-x64-gnu": 4.59.0 - "@rollup/rollup-win32-x64-msvc": 4.59.0 + '@rollup/rollup-android-arm-eabi': 4.59.0 + '@rollup/rollup-android-arm64': 4.59.0 + '@rollup/rollup-darwin-arm64': 4.59.0 + '@rollup/rollup-darwin-x64': 4.59.0 + '@rollup/rollup-freebsd-arm64': 4.59.0 + '@rollup/rollup-freebsd-x64': 4.59.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.59.0 + '@rollup/rollup-linux-arm-musleabihf': 4.59.0 + '@rollup/rollup-linux-arm64-gnu': 4.59.0 + '@rollup/rollup-linux-arm64-musl': 4.59.0 + '@rollup/rollup-linux-loong64-gnu': 4.59.0 + '@rollup/rollup-linux-loong64-musl': 4.59.0 + '@rollup/rollup-linux-ppc64-gnu': 4.59.0 + '@rollup/rollup-linux-ppc64-musl': 4.59.0 + '@rollup/rollup-linux-riscv64-gnu': 4.59.0 + '@rollup/rollup-linux-riscv64-musl': 4.59.0 + '@rollup/rollup-linux-s390x-gnu': 4.59.0 + '@rollup/rollup-linux-x64-gnu': 4.59.0 + '@rollup/rollup-linux-x64-musl': 4.59.0 + '@rollup/rollup-openbsd-x64': 4.59.0 + '@rollup/rollup-openharmony-arm64': 4.59.0 + '@rollup/rollup-win32-arm64-msvc': 4.59.0 + '@rollup/rollup-win32-ia32-msvc': 4.59.0 + '@rollup/rollup-win32-x64-gnu': 4.59.0 + '@rollup/rollup-win32-x64-msvc': 4.59.0 fsevents: 2.3.3 + run-applescript@7.1.0: {} + runed@0.23.4(svelte@5.53.5): dependencies: esm-env: 1.2.2 @@ -3565,12 +3014,14 @@ snapshots: lz-string: 1.5.0 svelte: 5.53.5 optionalDependencies: - "@sveltejs/kit": 2.53.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)) + '@sveltejs/kit': 2.53.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.31.1)) sade@1.8.1: dependencies: mri: 1.2.0 + semver@7.7.3: {} + semver@7.7.4: {} set-cookie-parser@3.0.1: {} @@ -3583,7 +3034,7 @@ snapshots: sirv@3.0.2: dependencies: - "@polka/url": 1.0.0-next.29 + '@polka/url': 1.0.0-next.29 mrmime: 2.0.1 totalist: 3.0.1 @@ -3591,7 +3042,7 @@ snapshots: sqlite-wasm-kysely@0.3.0(kysely@0.27.6): dependencies: - "@sqlite.org/sqlite-wasm": 3.48.0-build4 + '@sqlite.org/sqlite-wasm': 3.48.0-build4 kysely: 0.27.6 style-to-object@1.0.14: @@ -3602,7 +3053,7 @@ snapshots: svelte-check@4.4.4(picomatch@4.0.3)(svelte@5.53.5)(typescript@5.9.3): dependencies: - "@jridgewell/trace-mapping": 0.3.31 + '@jridgewell/trace-mapping': 0.3.31 chokidar: 4.0.3 fdir: 6.5.0(picomatch@4.0.3) picocolors: 1.1.1 @@ -3635,7 +3086,7 @@ snapshots: style-to-object: 1.0.14 svelte: 5.53.5 transitivePeerDependencies: - - "@sveltejs/kit" + - '@sveltejs/kit' svelte-toolbelt@0.7.1(svelte@5.53.5): dependencies: @@ -3646,11 +3097,11 @@ snapshots: svelte@5.53.5: dependencies: - "@jridgewell/remapping": 2.3.5 - "@jridgewell/sourcemap-codec": 1.5.5 - "@sveltejs/acorn-typescript": 1.0.9(acorn@8.16.0) - "@types/estree": 1.0.8 - "@types/trusted-types": 2.0.7 + '@jridgewell/remapping': 2.3.5 + '@jridgewell/sourcemap-codec': 1.5.5 + '@sveltejs/acorn-typescript': 1.0.9(acorn@8.16.0) + '@types/estree': 1.0.8 + '@types/trusted-types': 2.0.7 acorn: 8.16.0 aria-query: 5.3.1 axobject-query: 4.1.0 @@ -3677,6 +3128,8 @@ snapshots: tapable@2.3.0: {} + tinyexec@1.0.2: {} + tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) @@ -3696,10 +3149,10 @@ snapshots: typescript-eslint@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3): dependencies: - "@typescript-eslint/eslint-plugin": 8.56.1(@typescript-eslint/parser@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3) - "@typescript-eslint/parser": 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3) - "@typescript-eslint/typescript-estree": 8.56.1(typescript@5.9.3) - "@typescript-eslint/utils": 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.56.1(@typescript-eslint/parser@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3) eslint: 10.0.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: @@ -3712,7 +3165,7 @@ snapshots: unplugin@2.3.11: dependencies: - "@jridgewell/remapping": 2.3.5 + '@jridgewell/remapping': 2.3.5 acorn: 8.16.0 picomatch: 4.0.3 webpack-virtual-modules: 0.6.2 @@ -3738,7 +3191,7 @@ snapshots: rollup: 4.59.0 tinyglobby: 0.2.15 optionalDependencies: - "@types/node": 25.3.3 + '@types/node': 25.3.3 fsevents: 2.3.3 jiti: 2.6.1 lightningcss: 1.31.1 @@ -3755,6 +3208,11 @@ snapshots: word-wrap@1.2.5: {} + wsl-utils@0.3.1: + dependencies: + is-wsl: 3.1.1 + powershell-utils: 0.1.0 + yaml@1.10.2: {} yocto-queue@0.1.0: {} diff --git a/frontend/src/lib/api.ts b/frontend/src/lib/api.ts index 9e45b4e..7a0327f 100644 --- a/frontend/src/lib/api.ts +++ b/frontend/src/lib/api.ts @@ -1,22 +1,22 @@ import { browser } from "$app/environment"; import { PUBLIC_API_BASE } from "$env/static/public"; import type { - ActiveIngredient, BatchSuggestion, GroomingSchedule, LabResult, + LabResultListResponse, MedicationEntry, MedicationUsage, PartOfDay, Product, - ProductSummary, - ProductContext, - ProductEffectProfile, ProductInventory, + ProductParseResponse, + ProductSummary, Routine, RoutineSuggestion, RoutineStep, SkinConditionSnapshot, + SkinPhotoAnalysisResponse, UserProfile, } from "./types"; @@ -120,41 +120,6 @@ export const updateInventory = ( export const deleteInventory = (id: string): Promise => api.del(`/inventory/${id}`); -export interface ProductParseResponse { - name?: string; - brand?: string; - line_name?: string; - sku?: string; - url?: string; - barcode?: string; - category?: string; - recommended_time?: string; - texture?: string; - absorption_speed?: string; - leave_on?: boolean; - price_amount?: number; - price_currency?: string; - size_ml?: number; - pao_months?: number; - inci?: string[]; - actives?: ActiveIngredient[]; - recommended_for?: string[]; - targets?: string[]; - fragrance_free?: boolean; - essential_oils_free?: boolean; - alcohol_denat_free?: boolean; - pregnancy_safe?: boolean; - product_effect_profile?: ProductEffectProfile; - ph_min?: number; - ph_max?: number; - context_rules?: ProductContext; - min_interval_hours?: number; - max_frequency_per_week?: number; - is_medication?: boolean; - is_tool?: boolean; - needle_length_mm?: number; -} - export const parseProductText = (text: string): Promise => api.post("/products/parse-text", { text }); @@ -283,13 +248,6 @@ export interface LabResultListParams { offset?: number; } -export interface LabResultListResponse { - items: LabResult[]; - total: number; - limit: number; - offset: number; -} - export function getLabResults( params: LabResultListParams = {}, ): Promise { @@ -353,21 +311,6 @@ export const updateSkinSnapshot = ( export const deleteSkinSnapshot = (id: string): Promise => api.del(`/skincare/${id}`); -export interface SkinPhotoAnalysisResponse { - overall_state?: string; - texture?: string; - skin_type?: string; - hydration_level?: number; - sebum_tzone?: number; - sebum_cheeks?: number; - sensitivity_level?: number; - barrier_state?: string; - active_concerns?: string[]; - risks?: string[]; - priorities?: string[]; - notes?: string; -} - export async function analyzeSkinPhotos( files: File[], ): Promise { diff --git a/frontend/src/lib/api/generated/index.ts b/frontend/src/lib/api/generated/index.ts new file mode 100644 index 0000000..5b04f4e --- /dev/null +++ b/frontend/src/lib/api/generated/index.ts @@ -0,0 +1,3 @@ +// This file is auto-generated by @hey-api/openapi-ts + +export type { AbsorptionSpeed, ActiveIngredient, AddStepRoutinesRoutineIdStepsPostData, AddStepRoutinesRoutineIdStepsPostError, AddStepRoutinesRoutineIdStepsPostErrors, AddStepRoutinesRoutineIdStepsPostResponse, AddStepRoutinesRoutineIdStepsPostResponses, AiCallLog, AiCallLogPublic, AnalyzeSkinPhotosSkincareAnalyzePhotosPostData, AnalyzeSkinPhotosSkincareAnalyzePhotosPostError, AnalyzeSkinPhotosSkincareAnalyzePhotosPostErrors, AnalyzeSkinPhotosSkincareAnalyzePhotosPostResponse, AnalyzeSkinPhotosSkincareAnalyzePhotosPostResponses, BarrierState, BatchSuggestion, BodyAnalyzeSkinPhotosSkincareAnalyzePhotosPost, ClientOptions, CreateGroomingScheduleRoutinesGroomingSchedulePostData, CreateGroomingScheduleRoutinesGroomingSchedulePostError, CreateGroomingScheduleRoutinesGroomingSchedulePostErrors, CreateGroomingScheduleRoutinesGroomingSchedulePostResponse, CreateGroomingScheduleRoutinesGroomingSchedulePostResponses, CreateLabResultHealthLabResultsPostData, CreateLabResultHealthLabResultsPostError, CreateLabResultHealthLabResultsPostErrors, CreateLabResultHealthLabResultsPostResponse, CreateLabResultHealthLabResultsPostResponses, CreateMedicationHealthMedicationsPostData, CreateMedicationHealthMedicationsPostError, CreateMedicationHealthMedicationsPostErrors, CreateMedicationHealthMedicationsPostResponse, CreateMedicationHealthMedicationsPostResponses, CreateProductInventoryProductsProductIdInventoryPostData, CreateProductInventoryProductsProductIdInventoryPostError, CreateProductInventoryProductsProductIdInventoryPostErrors, CreateProductInventoryProductsProductIdInventoryPostResponse, CreateProductInventoryProductsProductIdInventoryPostResponses, CreateProductProductsPostData, CreateProductProductsPostError, CreateProductProductsPostErrors, CreateProductProductsPostResponse, CreateProductProductsPostResponses, CreateRoutineRoutinesPostData, CreateRoutineRoutinesPostError, CreateRoutineRoutinesPostErrors, CreateRoutineRoutinesPostResponse, CreateRoutineRoutinesPostResponses, CreateSnapshotSkincarePostData, CreateSnapshotSkincarePostError, CreateSnapshotSkincarePostErrors, CreateSnapshotSkincarePostResponse, CreateSnapshotSkincarePostResponses, CreateUsageHealthMedicationsMedicationIdUsagesPostData, CreateUsageHealthMedicationsMedicationIdUsagesPostError, CreateUsageHealthMedicationsMedicationIdUsagesPostErrors, CreateUsageHealthMedicationsMedicationIdUsagesPostResponse, CreateUsageHealthMedicationsMedicationIdUsagesPostResponses, DayPlan, DayTime, DeleteGroomingScheduleRoutinesGroomingScheduleEntryIdDeleteData, DeleteGroomingScheduleRoutinesGroomingScheduleEntryIdDeleteError, DeleteGroomingScheduleRoutinesGroomingScheduleEntryIdDeleteErrors, DeleteGroomingScheduleRoutinesGroomingScheduleEntryIdDeleteResponse, DeleteGroomingScheduleRoutinesGroomingScheduleEntryIdDeleteResponses, DeleteInventoryInventoryInventoryIdDeleteData, DeleteInventoryInventoryInventoryIdDeleteError, DeleteInventoryInventoryInventoryIdDeleteErrors, DeleteInventoryInventoryInventoryIdDeleteResponse, DeleteInventoryInventoryInventoryIdDeleteResponses, DeleteLabResultHealthLabResultsResultIdDeleteData, DeleteLabResultHealthLabResultsResultIdDeleteError, DeleteLabResultHealthLabResultsResultIdDeleteErrors, DeleteLabResultHealthLabResultsResultIdDeleteResponse, DeleteLabResultHealthLabResultsResultIdDeleteResponses, DeleteMedicationHealthMedicationsMedicationIdDeleteData, DeleteMedicationHealthMedicationsMedicationIdDeleteError, DeleteMedicationHealthMedicationsMedicationIdDeleteErrors, DeleteMedicationHealthMedicationsMedicationIdDeleteResponse, DeleteMedicationHealthMedicationsMedicationIdDeleteResponses, DeleteProductProductsProductIdDeleteData, DeleteProductProductsProductIdDeleteError, DeleteProductProductsProductIdDeleteErrors, DeleteProductProductsProductIdDeleteResponse, DeleteProductProductsProductIdDeleteResponses, DeleteRoutineRoutinesRoutineIdDeleteData, DeleteRoutineRoutinesRoutineIdDeleteError, DeleteRoutineRoutinesRoutineIdDeleteErrors, DeleteRoutineRoutinesRoutineIdDeleteResponse, DeleteRoutineRoutinesRoutineIdDeleteResponses, DeleteSnapshotSkincareSnapshotIdDeleteData, DeleteSnapshotSkincareSnapshotIdDeleteError, DeleteSnapshotSkincareSnapshotIdDeleteErrors, DeleteSnapshotSkincareSnapshotIdDeleteResponse, DeleteSnapshotSkincareSnapshotIdDeleteResponses, DeleteStepRoutinesStepsStepIdDeleteData, DeleteStepRoutinesStepsStepIdDeleteError, DeleteStepRoutinesStepsStepIdDeleteErrors, DeleteStepRoutinesStepsStepIdDeleteResponse, DeleteStepRoutinesStepsStepIdDeleteResponses, DeleteUsageHealthUsagesUsageIdDeleteData, DeleteUsageHealthUsagesUsageIdDeleteError, DeleteUsageHealthUsagesUsageIdDeleteErrors, DeleteUsageHealthUsagesUsageIdDeleteResponse, DeleteUsageHealthUsagesUsageIdDeleteResponses, GetAiLogAiLogsLogIdGetData, GetAiLogAiLogsLogIdGetError, GetAiLogAiLogsLogIdGetErrors, GetAiLogAiLogsLogIdGetResponse, GetAiLogAiLogsLogIdGetResponses, GetInventoryInventoryInventoryIdGetData, GetInventoryInventoryInventoryIdGetError, GetInventoryInventoryInventoryIdGetErrors, GetInventoryInventoryInventoryIdGetResponse, GetInventoryInventoryInventoryIdGetResponses, GetLabResultHealthLabResultsResultIdGetData, GetLabResultHealthLabResultsResultIdGetError, GetLabResultHealthLabResultsResultIdGetErrors, GetLabResultHealthLabResultsResultIdGetResponse, GetLabResultHealthLabResultsResultIdGetResponses, GetMedicationHealthMedicationsMedicationIdGetData, GetMedicationHealthMedicationsMedicationIdGetError, GetMedicationHealthMedicationsMedicationIdGetErrors, GetMedicationHealthMedicationsMedicationIdGetResponse, GetMedicationHealthMedicationsMedicationIdGetResponses, GetProductProductsProductIdGetData, GetProductProductsProductIdGetError, GetProductProductsProductIdGetErrors, GetProductProductsProductIdGetResponse, GetProductProductsProductIdGetResponses, GetProfileProfileGetData, GetProfileProfileGetResponse, GetProfileProfileGetResponses, GetRoutineRoutinesRoutineIdGetData, GetRoutineRoutinesRoutineIdGetError, GetRoutineRoutinesRoutineIdGetErrors, GetRoutineRoutinesRoutineIdGetResponses, GetSnapshotSkincareSnapshotIdGetData, GetSnapshotSkincareSnapshotIdGetError, GetSnapshotSkincareSnapshotIdGetErrors, GetSnapshotSkincareSnapshotIdGetResponse, GetSnapshotSkincareSnapshotIdGetResponses, GroomingAction, GroomingSchedule, GroomingScheduleCreate, GroomingScheduleUpdate, HealthCheckHealthCheckGetData, HealthCheckHealthCheckGetResponses, HttpValidationError, IngredientFunction, InventoryCreate, InventoryUpdate, LabResult, LabResultCreate, LabResultListResponse, LabResultUpdate, ListAiLogsAiLogsGetData, ListAiLogsAiLogsGetError, ListAiLogsAiLogsGetErrors, ListAiLogsAiLogsGetResponse, ListAiLogsAiLogsGetResponses, ListGroomingScheduleRoutinesGroomingScheduleGetData, ListGroomingScheduleRoutinesGroomingScheduleGetResponse, ListGroomingScheduleRoutinesGroomingScheduleGetResponses, ListLabResultsHealthLabResultsGetData, ListLabResultsHealthLabResultsGetError, ListLabResultsHealthLabResultsGetErrors, ListLabResultsHealthLabResultsGetResponse, ListLabResultsHealthLabResultsGetResponses, ListMedicationsHealthMedicationsGetData, ListMedicationsHealthMedicationsGetError, ListMedicationsHealthMedicationsGetErrors, ListMedicationsHealthMedicationsGetResponse, ListMedicationsHealthMedicationsGetResponses, ListProductInventoryProductsProductIdInventoryGetData, ListProductInventoryProductsProductIdInventoryGetError, ListProductInventoryProductsProductIdInventoryGetErrors, ListProductInventoryProductsProductIdInventoryGetResponse, ListProductInventoryProductsProductIdInventoryGetResponses, ListProductsProductsGetData, ListProductsProductsGetError, ListProductsProductsGetErrors, ListProductsProductsGetResponse, ListProductsProductsGetResponses, ListProductsSummaryProductsSummaryGetData, ListProductsSummaryProductsSummaryGetError, ListProductsSummaryProductsSummaryGetErrors, ListProductsSummaryProductsSummaryGetResponse, ListProductsSummaryProductsSummaryGetResponses, ListRoutinesRoutinesGetData, ListRoutinesRoutinesGetError, ListRoutinesRoutinesGetErrors, ListRoutinesRoutinesGetResponses, ListSnapshotsSkincareGetData, ListSnapshotsSkincareGetError, ListSnapshotsSkincareGetErrors, ListSnapshotsSkincareGetResponse, ListSnapshotsSkincareGetResponses, ListUsagesHealthMedicationsMedicationIdUsagesGetData, ListUsagesHealthMedicationsMedicationIdUsagesGetError, ListUsagesHealthMedicationsMedicationIdUsagesGetErrors, ListUsagesHealthMedicationsMedicationIdUsagesGetResponse, ListUsagesHealthMedicationsMedicationIdUsagesGetResponses, MedicationCreate, MedicationEntry, MedicationKind, MedicationUpdate, MedicationUsage, OverallSkinState, ParseProductTextProductsParseTextPostData, ParseProductTextProductsParseTextPostError, ParseProductTextProductsParseTextPostErrors, ParseProductTextProductsParseTextPostResponse, ParseProductTextProductsParseTextPostResponses, PartOfDay, PriceTier, ProductCategory, ProductContext, ProductCreate, ProductEffectProfile, ProductInventory, ProductListItem, ProductParseRequest, ProductParseResponse, ProductPublic, ProductSuggestion, ProductUpdate, ProductWithInventory, RemainingLevel, ResponseMetadata, ResultFlag, Routine, RoutineCreate, RoutineStep, RoutineStepCreate, RoutineStepUpdate, RoutineSuggestion, RoutineSuggestionSummary, RoutineUpdate, SexAtBirth, ShoppingSuggestionResponse, SkinConcern, SkinConditionSnapshotPublic, SkinPhotoAnalysisResponse, SkinTexture, SkinType, SnapshotCreate, SnapshotUpdate, StrengthLevel, SuggestBatchRequest, SuggestBatchRoutinesSuggestBatchPostData, SuggestBatchRoutinesSuggestBatchPostError, SuggestBatchRoutinesSuggestBatchPostErrors, SuggestBatchRoutinesSuggestBatchPostResponse, SuggestBatchRoutinesSuggestBatchPostResponses, SuggestedStep, SuggestRoutineRequest, SuggestRoutineRoutinesSuggestPostData, SuggestRoutineRoutinesSuggestPostError, SuggestRoutineRoutinesSuggestPostErrors, SuggestRoutineRoutinesSuggestPostResponse, SuggestRoutineRoutinesSuggestPostResponses, SuggestShoppingProductsSuggestPostData, SuggestShoppingProductsSuggestPostResponse, SuggestShoppingProductsSuggestPostResponses, TextureType, TokenMetrics, UpdateGroomingScheduleRoutinesGroomingScheduleEntryIdPatchData, UpdateGroomingScheduleRoutinesGroomingScheduleEntryIdPatchError, UpdateGroomingScheduleRoutinesGroomingScheduleEntryIdPatchErrors, UpdateGroomingScheduleRoutinesGroomingScheduleEntryIdPatchResponse, UpdateGroomingScheduleRoutinesGroomingScheduleEntryIdPatchResponses, UpdateInventoryInventoryInventoryIdPatchData, UpdateInventoryInventoryInventoryIdPatchError, UpdateInventoryInventoryInventoryIdPatchErrors, UpdateInventoryInventoryInventoryIdPatchResponse, UpdateInventoryInventoryInventoryIdPatchResponses, UpdateLabResultHealthLabResultsResultIdPatchData, UpdateLabResultHealthLabResultsResultIdPatchError, UpdateLabResultHealthLabResultsResultIdPatchErrors, UpdateLabResultHealthLabResultsResultIdPatchResponse, UpdateLabResultHealthLabResultsResultIdPatchResponses, UpdateMedicationHealthMedicationsMedicationIdPatchData, UpdateMedicationHealthMedicationsMedicationIdPatchError, UpdateMedicationHealthMedicationsMedicationIdPatchErrors, UpdateMedicationHealthMedicationsMedicationIdPatchResponse, UpdateMedicationHealthMedicationsMedicationIdPatchResponses, UpdateProductProductsProductIdPatchData, UpdateProductProductsProductIdPatchError, UpdateProductProductsProductIdPatchErrors, UpdateProductProductsProductIdPatchResponse, UpdateProductProductsProductIdPatchResponses, UpdateRoutineRoutinesRoutineIdPatchData, UpdateRoutineRoutinesRoutineIdPatchError, UpdateRoutineRoutinesRoutineIdPatchErrors, UpdateRoutineRoutinesRoutineIdPatchResponse, UpdateRoutineRoutinesRoutineIdPatchResponses, UpdateSnapshotSkincareSnapshotIdPatchData, UpdateSnapshotSkincareSnapshotIdPatchError, UpdateSnapshotSkincareSnapshotIdPatchErrors, UpdateSnapshotSkincareSnapshotIdPatchResponse, UpdateSnapshotSkincareSnapshotIdPatchResponses, UpdateStepRoutinesStepsStepIdPatchData, UpdateStepRoutinesStepsStepIdPatchError, UpdateStepRoutinesStepsStepIdPatchErrors, UpdateStepRoutinesStepsStepIdPatchResponse, UpdateStepRoutinesStepsStepIdPatchResponses, UpdateUsageHealthUsagesUsageIdPatchData, UpdateUsageHealthUsagesUsageIdPatchError, UpdateUsageHealthUsagesUsageIdPatchErrors, UpdateUsageHealthUsagesUsageIdPatchResponse, UpdateUsageHealthUsagesUsageIdPatchResponses, UpsertProfileProfilePatchData, UpsertProfileProfilePatchError, UpsertProfileProfilePatchErrors, UpsertProfileProfilePatchResponse, UpsertProfileProfilePatchResponses, UsageCreate, UsageUpdate, UserProfilePublic, UserProfileUpdate, ValidationError } from './types.gen'; diff --git a/frontend/src/lib/api/generated/types.gen.ts b/frontend/src/lib/api/generated/types.gen.ts new file mode 100644 index 0000000..d3d17d2 --- /dev/null +++ b/frontend/src/lib/api/generated/types.gen.ts @@ -0,0 +1,3922 @@ +// This file is auto-generated by @hey-api/openapi-ts + +export type ClientOptions = { + baseUrl: `${string}://${string}` | (string & {}); +}; + +/** + * AICallLog + */ +export type AiCallLog = { + /** + * Id + */ + id?: string; + /** + * Created At + */ + created_at?: string; + /** + * Endpoint + */ + endpoint: string; + /** + * Model + */ + model: string; + /** + * System Prompt + */ + system_prompt?: string | null; + /** + * User Input + */ + user_input?: string | null; + /** + * Response Text + */ + response_text?: string | null; + /** + * Prompt Tokens + */ + prompt_tokens?: number | null; + /** + * Completion Tokens + */ + completion_tokens?: number | null; + /** + * Total Tokens + */ + total_tokens?: number | null; + /** + * Duration Ms + */ + duration_ms?: number | null; + /** + * Finish Reason + */ + finish_reason?: string | null; + /** + * Tool Trace + */ + tool_trace?: { + [key: string]: unknown; + } | null; + /** + * Success + */ + success?: boolean; + /** + * Error Detail + */ + error_detail?: string | null; + /** + * Validation Errors + */ + validation_errors?: Array | null; + /** + * Validation Warnings + */ + validation_warnings?: Array | null; + /** + * Auto Fixed + */ + auto_fixed?: boolean; + /** + * Reasoning Chain + * + * LLM reasoning/thinking process (MEDIUM thinking level) + */ + reasoning_chain?: string | null; + /** + * Thoughts Tokens + * + * Thinking tokens (thoughtsTokenCount) - separate from output budget + */ + thoughts_tokens?: number | null; + /** + * Tool Use Prompt Tokens + * + * Tool use prompt tokens (toolUsePromptTokenCount) + */ + tool_use_prompt_tokens?: number | null; + /** + * Cached Content Tokens + * + * Cached content tokens (cachedContentTokenCount) + */ + cached_content_tokens?: number | null; +}; + +/** + * AICallLogPublic + * + * List-friendly view: omits large text fields. + */ +export type AiCallLogPublic = { + /** + * Id + */ + id: string; + /** + * Created At + */ + created_at: unknown; + /** + * Endpoint + */ + endpoint: string; + /** + * Model + */ + model: string; + /** + * Prompt Tokens + */ + prompt_tokens?: number | null; + /** + * Completion Tokens + */ + completion_tokens?: number | null; + /** + * Total Tokens + */ + total_tokens?: number | null; + /** + * Duration Ms + */ + duration_ms?: number | null; + /** + * Tool Trace + */ + tool_trace?: { + [key: string]: unknown; + } | null; + /** + * Success + */ + success: boolean; + /** + * Error Detail + */ + error_detail?: string | null; +}; + +/** + * AbsorptionSpeed + */ +export type AbsorptionSpeed = 'very_fast' | 'fast' | 'moderate' | 'slow' | 'very_slow'; + +/** + * ActiveIngredient + */ +export type ActiveIngredient = { + /** + * Name + */ + name: string; + /** + * Percent + */ + percent?: number | null; + /** + * Functions + */ + functions?: Array; + strength_level?: StrengthLevel | null; + irritation_potential?: StrengthLevel | null; +}; + +/** + * BarrierState + */ +export type BarrierState = 'intact' | 'mildly_compromised' | 'compromised'; + +/** + * BatchSuggestion + */ +export type BatchSuggestion = { + /** + * Days + */ + days: Array; + /** + * Overall Reasoning + */ + overall_reasoning: string; + /** + * Validation Warnings + */ + validation_warnings?: Array | null; + /** + * Auto Fixes Applied + */ + auto_fixes_applied?: Array | null; + response_metadata?: ResponseMetadata | null; +}; + +/** + * Body_analyze_skin_photos_skincare_analyze_photos_post + */ +export type BodyAnalyzeSkinPhotosSkincareAnalyzePhotosPost = { + /** + * Photos + */ + photos: Array; +}; + +/** + * DayPlan + */ +export type DayPlan = { + /** + * Date + */ + date: string; + /** + * Am Steps + */ + am_steps: Array; + /** + * Pm Steps + */ + pm_steps: Array; + /** + * Reasoning + */ + reasoning: string; +}; + +/** + * DayTime + */ +export type DayTime = 'am' | 'pm' | 'both'; + +/** + * GroomingAction + */ +export type GroomingAction = 'shaving_razor' | 'shaving_oneblade' | 'dermarolling'; + +/** + * GroomingSchedule + */ +export type GroomingSchedule = { + /** + * Id + */ + id?: string; + /** + * Day Of Week + */ + day_of_week: number; + action: GroomingAction; + /** + * Notes + */ + notes?: string | null; +}; + +/** + * GroomingScheduleCreate + */ +export type GroomingScheduleCreate = { + /** + * Day Of Week + */ + day_of_week: number; + action: GroomingAction; + /** + * Notes + */ + notes?: string | null; +}; + +/** + * GroomingScheduleUpdate + */ +export type GroomingScheduleUpdate = { + /** + * Day Of Week + */ + day_of_week?: number | null; + action?: GroomingAction | null; + /** + * Notes + */ + notes?: string | null; +}; + +/** + * HTTPValidationError + */ +export type HttpValidationError = { + /** + * Detail + */ + detail?: Array; +}; + +/** + * IngredientFunction + */ +export type IngredientFunction = 'humectant' | 'emollient' | 'occlusive' | 'exfoliant_aha' | 'exfoliant_bha' | 'exfoliant_pha' | 'retinoid' | 'antioxidant' | 'soothing' | 'barrier_support' | 'brightening' | 'anti_acne' | 'ceramide' | 'niacinamide' | 'sunscreen' | 'peptide' | 'hair_growth_stimulant' | 'prebiotic' | 'vitamin_c' | 'anti_aging'; + +/** + * InventoryCreate + */ +export type InventoryCreate = { + /** + * Is Opened + */ + is_opened?: boolean; + /** + * Opened At + */ + opened_at?: string | null; + /** + * Finished At + */ + finished_at?: string | null; + /** + * Expiry Date + */ + expiry_date?: string | null; + remaining_level?: RemainingLevel | null; + /** + * Notes + */ + notes?: string | null; +}; + +/** + * InventoryUpdate + */ +export type InventoryUpdate = { + /** + * Is Opened + */ + is_opened?: boolean | null; + /** + * Opened At + */ + opened_at?: string | null; + /** + * Finished At + */ + finished_at?: string | null; + /** + * Expiry Date + */ + expiry_date?: string | null; + remaining_level?: RemainingLevel | null; + /** + * Notes + */ + notes?: string | null; +}; + +/** + * LabResult + */ +export type LabResult = { + /** + * Record Id + */ + record_id?: string; + /** + * Collected At + */ + collected_at: string; + /** + * Test Code + */ + test_code: string; + /** + * Test Name Original + */ + test_name_original?: string | null; + /** + * Test Name Loinc + */ + test_name_loinc?: string | null; + /** + * Value Num + */ + value_num?: number | null; + /** + * Value Text + */ + value_text?: string | null; + /** + * Value Bool + */ + value_bool?: boolean | null; + /** + * Unit Original + */ + unit_original?: string | null; + /** + * Unit Ucum + */ + unit_ucum?: string | null; + /** + * Ref Low + */ + ref_low?: number | null; + /** + * Ref High + */ + ref_high?: number | null; + /** + * Ref Text + */ + ref_text?: string | null; + flag?: ResultFlag | null; + /** + * Lab + */ + lab?: string | null; + /** + * Source File + */ + source_file?: string | null; + /** + * Notes + */ + notes?: string | null; + /** + * Created At + */ + created_at?: string; + /** + * Updated At + */ + updated_at?: string; +}; + +/** + * LabResultCreate + */ +export type LabResultCreate = { + /** + * Collected At + */ + collected_at: string; + /** + * Test Code + */ + test_code: string; + /** + * Test Name Original + */ + test_name_original?: string | null; + /** + * Test Name Loinc + */ + test_name_loinc?: string | null; + /** + * Value Num + */ + value_num?: number | null; + /** + * Value Text + */ + value_text?: string | null; + /** + * Value Bool + */ + value_bool?: boolean | null; + /** + * Unit Original + */ + unit_original?: string | null; + /** + * Unit Ucum + */ + unit_ucum?: string | null; + /** + * Ref Low + */ + ref_low?: number | null; + /** + * Ref High + */ + ref_high?: number | null; + /** + * Ref Text + */ + ref_text?: string | null; + flag?: ResultFlag | null; + /** + * Lab + */ + lab?: string | null; + /** + * Source File + */ + source_file?: string | null; + /** + * Notes + */ + notes?: string | null; +}; + +/** + * LabResultListResponse + */ +export type LabResultListResponse = { + /** + * Items + */ + items: Array; + /** + * Total + */ + total: number; + /** + * Limit + */ + limit: number; + /** + * Offset + */ + offset: number; +}; + +/** + * LabResultUpdate + */ +export type LabResultUpdate = { + /** + * Collected At + */ + collected_at?: string | null; + /** + * Test Code + */ + test_code?: string | null; + /** + * Test Name Original + */ + test_name_original?: string | null; + /** + * Test Name Loinc + */ + test_name_loinc?: string | null; + /** + * Value Num + */ + value_num?: number | null; + /** + * Value Text + */ + value_text?: string | null; + /** + * Value Bool + */ + value_bool?: boolean | null; + /** + * Unit Original + */ + unit_original?: string | null; + /** + * Unit Ucum + */ + unit_ucum?: string | null; + /** + * Ref Low + */ + ref_low?: number | null; + /** + * Ref High + */ + ref_high?: number | null; + /** + * Ref Text + */ + ref_text?: string | null; + flag?: ResultFlag | null; + /** + * Lab + */ + lab?: string | null; + /** + * Source File + */ + source_file?: string | null; + /** + * Notes + */ + notes?: string | null; +}; + +/** + * MedicationCreate + */ +export type MedicationCreate = { + kind: MedicationKind; + /** + * Product Name + */ + product_name: string; + /** + * Active Substance + */ + active_substance?: string | null; + /** + * Formulation + */ + formulation?: string | null; + /** + * Route + */ + route?: string | null; + /** + * Source File + */ + source_file?: string | null; + /** + * Notes + */ + notes?: string | null; +}; + +/** + * MedicationEntry + */ +export type MedicationEntry = { + /** + * Record Id + */ + record_id?: string; + kind: MedicationKind; + /** + * Product Name + */ + product_name: string; + /** + * Active Substance + */ + active_substance?: string | null; + /** + * Formulation + */ + formulation?: string | null; + /** + * Route + */ + route?: string | null; + /** + * Source File + */ + source_file?: string | null; + /** + * Notes + */ + notes?: string | null; + /** + * Created At + */ + created_at?: string; + /** + * Updated At + */ + updated_at?: string; +}; + +/** + * MedicationKind + */ +export type MedicationKind = 'prescription' | 'otc' | 'supplement' | 'herbal' | 'other'; + +/** + * MedicationUpdate + */ +export type MedicationUpdate = { + kind?: MedicationKind | null; + /** + * Product Name + */ + product_name?: string | null; + /** + * Active Substance + */ + active_substance?: string | null; + /** + * Formulation + */ + formulation?: string | null; + /** + * Route + */ + route?: string | null; + /** + * Source File + */ + source_file?: string | null; + /** + * Notes + */ + notes?: string | null; +}; + +/** + * MedicationUsage + */ +export type MedicationUsage = { + /** + * Record Id + */ + record_id?: string; + /** + * Medication Record Id + */ + medication_record_id: string; + /** + * Dose Value + */ + dose_value?: number | null; + /** + * Dose Unit + */ + dose_unit?: string | null; + /** + * Frequency + */ + frequency?: string | null; + /** + * Schedule Text + */ + schedule_text?: string | null; + /** + * As Needed + */ + as_needed?: boolean; + /** + * Valid From + */ + valid_from: string; + /** + * Valid To + */ + valid_to?: string | null; + /** + * Source File + */ + source_file?: string | null; + /** + * Notes + */ + notes?: string | null; + /** + * Created At + */ + created_at?: string; + /** + * Updated At + */ + updated_at?: string; +}; + +/** + * OverallSkinState + */ +export type OverallSkinState = 'excellent' | 'good' | 'fair' | 'poor'; + +/** + * PartOfDay + */ +export type PartOfDay = 'am' | 'pm'; + +/** + * PriceTier + */ +export type PriceTier = 'budget' | 'mid' | 'premium' | 'luxury'; + +/** + * ProductCategory + */ +export type ProductCategory = 'cleanser' | 'toner' | 'essence' | 'serum' | 'moisturizer' | 'spf' | 'mask' | 'exfoliant' | 'hair_treatment' | 'tool' | 'spot_treatment' | 'oil'; + +/** + * ProductContext + */ +export type ProductContext = { + /** + * Safe After Shaving + */ + safe_after_shaving?: boolean | null; + /** + * Safe After Acids + */ + safe_after_acids?: boolean | null; + /** + * Safe After Retinoids + */ + safe_after_retinoids?: boolean | null; + /** + * Safe With Compromised Barrier + */ + safe_with_compromised_barrier?: boolean | null; + /** + * Low Uv Only + */ + low_uv_only?: boolean | null; +}; + +/** + * ProductCreate + */ +export type ProductCreate = { + /** + * Name + */ + name: string; + /** + * Brand + */ + brand: string; + /** + * Line Name + */ + line_name?: string | null; + /** + * Sku + */ + sku?: string | null; + /** + * Url + */ + url?: string | null; + /** + * Barcode + */ + barcode?: string | null; + category: ProductCategory; + recommended_time: DayTime; + texture?: TextureType | null; + absorption_speed?: AbsorptionSpeed | null; + /** + * Leave On + */ + leave_on: boolean; + /** + * Price Amount + */ + price_amount?: number | null; + /** + * Price Currency + */ + price_currency?: string | null; + /** + * Size Ml + */ + size_ml?: number | null; + /** + * Pao Months + */ + pao_months?: number | null; + /** + * Inci + */ + inci?: Array; + /** + * Actives + */ + actives?: Array | null; + /** + * Recommended For + */ + recommended_for?: Array; + /** + * Targets + */ + targets?: Array; + /** + * Fragrance Free + */ + fragrance_free?: boolean | null; + /** + * Essential Oils Free + */ + essential_oils_free?: boolean | null; + /** + * Alcohol Denat Free + */ + alcohol_denat_free?: boolean | null; + /** + * Pregnancy Safe + */ + pregnancy_safe?: boolean | null; + product_effect_profile?: ProductEffectProfile; + /** + * Ph Min + */ + ph_min?: number | null; + /** + * Ph Max + */ + ph_max?: number | null; + context_rules?: ProductContext | null; + /** + * Min Interval Hours + */ + min_interval_hours?: number | null; + /** + * Max Frequency Per Week + */ + max_frequency_per_week?: number | null; + /** + * Is Medication + */ + is_medication?: boolean; + /** + * Is Tool + */ + is_tool?: boolean; + /** + * Needle Length Mm + */ + needle_length_mm?: number | null; + /** + * Personal Tolerance Notes + */ + personal_tolerance_notes?: string | null; +}; + +/** + * ProductEffectProfile + */ +export type ProductEffectProfile = { + /** + * Hydration Immediate + */ + hydration_immediate?: number; + /** + * Hydration Long Term + */ + hydration_long_term?: number; + /** + * Barrier Repair Strength + */ + barrier_repair_strength?: number; + /** + * Soothing Strength + */ + soothing_strength?: number; + /** + * Exfoliation Strength + */ + exfoliation_strength?: number; + /** + * Retinoid Strength + */ + retinoid_strength?: number; + /** + * Irritation Risk + */ + irritation_risk?: number; + /** + * Comedogenic Risk + */ + comedogenic_risk?: number; + /** + * Barrier Disruption Risk + */ + barrier_disruption_risk?: number; + /** + * Dryness Risk + */ + dryness_risk?: number; + /** + * Brightening Strength + */ + brightening_strength?: number; + /** + * Anti Acne Strength + */ + anti_acne_strength?: number; + /** + * Anti Aging Strength + */ + anti_aging_strength?: number; +}; + +/** + * ProductInventory + */ +export type ProductInventory = { + /** + * Id + */ + id?: string; + /** + * Product Id + */ + product_id: string; + /** + * Is Opened + */ + is_opened?: boolean; + /** + * Opened At + */ + opened_at?: string | null; + /** + * Finished At + */ + finished_at?: string | null; + /** + * Expiry Date + */ + expiry_date?: string | null; + remaining_level?: RemainingLevel | null; + /** + * Notes + */ + notes?: string | null; + /** + * Created At + */ + created_at?: string; +}; + +/** + * ProductListItem + */ +export type ProductListItem = { + /** + * Id + */ + id: string; + /** + * Name + */ + name: string; + /** + * Brand + */ + brand: string; + category: ProductCategory; + recommended_time: DayTime; + /** + * Targets + */ + targets?: Array; + /** + * Is Owned + */ + is_owned: boolean; + price_tier?: PriceTier | null; + /** + * Price Per Use Pln + */ + price_per_use_pln?: number | null; + /** + * Price Tier Source + */ + price_tier_source?: 'category' | 'fallback' | 'insufficient_data' | null; +}; + +/** + * ProductParseRequest + */ +export type ProductParseRequest = { + /** + * Text + */ + text: string; +}; + +/** + * ProductParseResponse + */ +export type ProductParseResponse = { + /** + * Name + */ + name?: string | null; + /** + * Brand + */ + brand?: string | null; + /** + * Line Name + */ + line_name?: string | null; + /** + * Sku + */ + sku?: string | null; + /** + * Url + */ + url?: string | null; + /** + * Barcode + */ + barcode?: string | null; + category?: ProductCategory | null; + recommended_time?: DayTime | null; + texture?: TextureType | null; + absorption_speed?: AbsorptionSpeed | null; + /** + * Leave On + */ + leave_on?: boolean | null; + /** + * Price Amount + */ + price_amount?: number | null; + /** + * Price Currency + */ + price_currency?: string | null; + /** + * Size Ml + */ + size_ml?: number | null; + /** + * Pao Months + */ + pao_months?: number | null; + /** + * Inci + */ + inci?: Array | null; + /** + * Actives + */ + actives?: Array | null; + /** + * Recommended For + */ + recommended_for?: Array | null; + /** + * Targets + */ + targets?: Array | null; + /** + * Fragrance Free + */ + fragrance_free?: boolean | null; + /** + * Essential Oils Free + */ + essential_oils_free?: boolean | null; + /** + * Alcohol Denat Free + */ + alcohol_denat_free?: boolean | null; + /** + * Pregnancy Safe + */ + pregnancy_safe?: boolean | null; + product_effect_profile?: ProductEffectProfile | null; + /** + * Ph Min + */ + ph_min?: number | null; + /** + * Ph Max + */ + ph_max?: number | null; + context_rules?: ProductContext | null; + /** + * Min Interval Hours + */ + min_interval_hours?: number | null; + /** + * Max Frequency Per Week + */ + max_frequency_per_week?: number | null; + /** + * Is Medication + */ + is_medication?: boolean | null; + /** + * Is Tool + */ + is_tool?: boolean | null; + /** + * Needle Length Mm + */ + needle_length_mm?: number | null; +}; + +/** + * ProductPublic + */ +export type ProductPublic = { + /** + * Name + */ + name: string; + /** + * Brand + */ + brand: string; + /** + * Line Name + */ + line_name?: string | null; + /** + * Sku + */ + sku?: string | null; + /** + * Url + */ + url?: string | null; + /** + * Barcode + */ + barcode?: string | null; + category: ProductCategory; + recommended_time: DayTime; + texture?: TextureType | null; + absorption_speed?: AbsorptionSpeed | null; + /** + * Leave On + */ + leave_on: boolean; + /** + * Price Amount + */ + price_amount?: number | null; + /** + * Price Currency + */ + price_currency?: string | null; + /** + * Size Ml + */ + size_ml?: number | null; + /** + * Pao Months + */ + pao_months?: number | null; + /** + * Inci + */ + inci?: Array; + /** + * Actives + */ + actives?: Array | null; + /** + * Recommended For + */ + recommended_for?: Array; + /** + * Targets + */ + targets?: Array; + /** + * Fragrance Free + */ + fragrance_free?: boolean | null; + /** + * Essential Oils Free + */ + essential_oils_free?: boolean | null; + /** + * Alcohol Denat Free + */ + alcohol_denat_free?: boolean | null; + /** + * Pregnancy Safe + */ + pregnancy_safe?: boolean | null; + product_effect_profile?: ProductEffectProfile; + /** + * Ph Min + */ + ph_min?: number | null; + /** + * Ph Max + */ + ph_max?: number | null; + context_rules?: ProductContext | null; + /** + * Min Interval Hours + */ + min_interval_hours?: number | null; + /** + * Max Frequency Per Week + */ + max_frequency_per_week?: number | null; + /** + * Is Medication + */ + is_medication?: boolean; + /** + * Is Tool + */ + is_tool?: boolean; + /** + * Needle Length Mm + */ + needle_length_mm?: number | null; + /** + * Personal Tolerance Notes + */ + personal_tolerance_notes?: string | null; + /** + * Id + */ + id: string; + /** + * Created At + */ + created_at: string; + /** + * Updated At + */ + updated_at: string; + price_tier?: PriceTier | null; + /** + * Price Per Use Pln + */ + price_per_use_pln?: number | null; + /** + * Price Tier Source + */ + price_tier_source?: string | null; +}; + +/** + * ProductSuggestion + */ +export type ProductSuggestion = { + category: ProductCategory; + /** + * Product Type + */ + product_type: string; + /** + * Priority + */ + priority: 'high' | 'medium' | 'low'; + /** + * Key Ingredients + */ + key_ingredients: Array; + /** + * Target Concerns + */ + target_concerns: Array; + recommended_time: DayTime; + /** + * Frequency + */ + frequency: string; + /** + * Short Reason + */ + short_reason: string; + /** + * Reason To Buy Now + */ + reason_to_buy_now: string; + /** + * Reason Not Needed If Budget Tight + */ + reason_not_needed_if_budget_tight?: string | null; + /** + * Fit With Current Routine + */ + fit_with_current_routine: string; + /** + * Usage Cautions + */ + usage_cautions: Array; +}; + +/** + * ProductUpdate + */ +export type ProductUpdate = { + /** + * Name + */ + name?: string | null; + /** + * Brand + */ + brand?: string | null; + /** + * Line Name + */ + line_name?: string | null; + /** + * Sku + */ + sku?: string | null; + /** + * Url + */ + url?: string | null; + /** + * Barcode + */ + barcode?: string | null; + category?: ProductCategory | null; + recommended_time?: DayTime | null; + texture?: TextureType | null; + absorption_speed?: AbsorptionSpeed | null; + /** + * Leave On + */ + leave_on?: boolean | null; + /** + * Price Amount + */ + price_amount?: number | null; + /** + * Price Currency + */ + price_currency?: string | null; + /** + * Size Ml + */ + size_ml?: number | null; + /** + * Pao Months + */ + pao_months?: number | null; + /** + * Inci + */ + inci?: Array | null; + /** + * Actives + */ + actives?: Array | null; + /** + * Recommended For + */ + recommended_for?: Array | null; + /** + * Targets + */ + targets?: Array | null; + /** + * Fragrance Free + */ + fragrance_free?: boolean | null; + /** + * Essential Oils Free + */ + essential_oils_free?: boolean | null; + /** + * Alcohol Denat Free + */ + alcohol_denat_free?: boolean | null; + /** + * Pregnancy Safe + */ + pregnancy_safe?: boolean | null; + product_effect_profile?: ProductEffectProfile | null; + /** + * Ph Min + */ + ph_min?: number | null; + /** + * Ph Max + */ + ph_max?: number | null; + context_rules?: ProductContext | null; + /** + * Min Interval Hours + */ + min_interval_hours?: number | null; + /** + * Max Frequency Per Week + */ + max_frequency_per_week?: number | null; + /** + * Is Medication + */ + is_medication?: boolean | null; + /** + * Is Tool + */ + is_tool?: boolean | null; + /** + * Needle Length Mm + */ + needle_length_mm?: number | null; + /** + * Personal Tolerance Notes + */ + personal_tolerance_notes?: string | null; +}; + +/** + * ProductWithInventory + */ +export type ProductWithInventory = { + /** + * Name + */ + name: string; + /** + * Brand + */ + brand: string; + /** + * Line Name + */ + line_name?: string | null; + /** + * Sku + */ + sku?: string | null; + /** + * Url + */ + url?: string | null; + /** + * Barcode + */ + barcode?: string | null; + category: ProductCategory; + recommended_time: DayTime; + texture?: TextureType | null; + absorption_speed?: AbsorptionSpeed | null; + /** + * Leave On + */ + leave_on: boolean; + /** + * Price Amount + */ + price_amount?: number | null; + /** + * Price Currency + */ + price_currency?: string | null; + /** + * Size Ml + */ + size_ml?: number | null; + /** + * Pao Months + */ + pao_months?: number | null; + /** + * Inci + */ + inci?: Array; + /** + * Actives + */ + actives?: Array | null; + /** + * Recommended For + */ + recommended_for?: Array; + /** + * Targets + */ + targets?: Array; + /** + * Fragrance Free + */ + fragrance_free?: boolean | null; + /** + * Essential Oils Free + */ + essential_oils_free?: boolean | null; + /** + * Alcohol Denat Free + */ + alcohol_denat_free?: boolean | null; + /** + * Pregnancy Safe + */ + pregnancy_safe?: boolean | null; + product_effect_profile?: ProductEffectProfile; + /** + * Ph Min + */ + ph_min?: number | null; + /** + * Ph Max + */ + ph_max?: number | null; + context_rules?: ProductContext | null; + /** + * Min Interval Hours + */ + min_interval_hours?: number | null; + /** + * Max Frequency Per Week + */ + max_frequency_per_week?: number | null; + /** + * Is Medication + */ + is_medication?: boolean; + /** + * Is Tool + */ + is_tool?: boolean; + /** + * Needle Length Mm + */ + needle_length_mm?: number | null; + /** + * Personal Tolerance Notes + */ + personal_tolerance_notes?: string | null; + /** + * Id + */ + id: string; + /** + * Created At + */ + created_at: string; + /** + * Updated At + */ + updated_at: string; + price_tier?: PriceTier | null; + /** + * Price Per Use Pln + */ + price_per_use_pln?: number | null; + /** + * Price Tier Source + */ + price_tier_source?: string | null; + /** + * Inventory + */ + inventory?: Array; +}; + +/** + * RemainingLevel + */ +export type RemainingLevel = 'high' | 'medium' | 'low' | 'nearly_empty'; + +/** + * ResponseMetadata + * + * Metadata about the LLM response for observability. + */ +export type ResponseMetadata = { + /** + * Model Used + */ + model_used: string; + /** + * Duration Ms + */ + duration_ms: number; + /** + * Reasoning Chain + */ + reasoning_chain?: string | null; + token_metrics?: TokenMetrics | null; +}; + +/** + * ResultFlag + */ +export type ResultFlag = 'N' | 'ABN' | 'POS' | 'NEG' | 'L' | 'H'; + +/** + * Routine + */ +export type Routine = { + /** + * Id + */ + id?: string; + /** + * Routine Date + */ + routine_date: string; + part_of_day: PartOfDay; + /** + * Notes + */ + notes?: string | null; + /** + * Created At + */ + created_at?: string; + /** + * Updated At + */ + updated_at?: string; +}; + +/** + * RoutineCreate + */ +export type RoutineCreate = { + /** + * Routine Date + */ + routine_date: string; + part_of_day: PartOfDay; + /** + * Notes + */ + notes?: string | null; +}; + +/** + * RoutineStep + */ +export type RoutineStep = { + /** + * Id + */ + id?: string; + /** + * Routine Id + */ + routine_id: string; + /** + * Product Id + */ + product_id?: string | null; + /** + * Order Index + */ + order_index: number; + action_type?: GroomingAction | null; + /** + * Action Notes + */ + action_notes?: string | null; + /** + * Dose + */ + dose?: string | null; + /** + * Region + */ + region?: string | null; +}; + +/** + * RoutineStepCreate + */ +export type RoutineStepCreate = { + /** + * Product Id + */ + product_id?: string | null; + /** + * Order Index + */ + order_index: number; + action_type?: GroomingAction | null; + /** + * Action Notes + */ + action_notes?: string | null; + /** + * Dose + */ + dose?: string | null; + /** + * Region + */ + region?: string | null; +}; + +/** + * RoutineStepUpdate + */ +export type RoutineStepUpdate = { + /** + * Product Id + */ + product_id?: string | null; + /** + * Order Index + */ + order_index?: number | null; + action_type?: GroomingAction | null; + /** + * Action Notes + */ + action_notes?: string | null; + /** + * Dose + */ + dose?: string | null; + /** + * Region + */ + region?: string | null; +}; + +/** + * RoutineSuggestion + */ +export type RoutineSuggestion = { + /** + * Steps + */ + steps: Array; + /** + * Reasoning + */ + reasoning: string; + summary?: RoutineSuggestionSummary | null; + /** + * Validation Warnings + */ + validation_warnings?: Array | null; + /** + * Auto Fixes Applied + */ + auto_fixes_applied?: Array | null; + response_metadata?: ResponseMetadata | null; +}; + +/** + * RoutineSuggestionSummary + */ +export type RoutineSuggestionSummary = { + /** + * Primary Goal + */ + primary_goal?: string; + /** + * Constraints Applied + */ + constraints_applied?: Array; + /** + * Confidence + */ + confidence?: number; +}; + +/** + * RoutineUpdate + */ +export type RoutineUpdate = { + /** + * Routine Date + */ + routine_date?: string | null; + part_of_day?: PartOfDay | null; + /** + * Notes + */ + notes?: string | null; +}; + +/** + * SexAtBirth + */ +export type SexAtBirth = 'male' | 'female' | 'intersex'; + +/** + * ShoppingSuggestionResponse + */ +export type ShoppingSuggestionResponse = { + /** + * Suggestions + */ + suggestions: Array; + /** + * Reasoning + */ + reasoning: string; + /** + * Validation Warnings + */ + validation_warnings?: Array | null; + /** + * Auto Fixes Applied + */ + auto_fixes_applied?: Array | null; + response_metadata?: ResponseMetadata | null; +}; + +/** + * SkinConcern + */ +export type SkinConcern = 'acne' | 'rosacea' | 'hyperpigmentation' | 'aging' | 'dehydration' | 'redness' | 'damaged_barrier' | 'pore_visibility' | 'uneven_texture' | 'hair_growth' | 'sebum_excess'; + +/** + * SkinConditionSnapshotPublic + */ +export type SkinConditionSnapshotPublic = { + /** + * Snapshot Date + */ + snapshot_date: string; + overall_state?: OverallSkinState | null; + skin_type?: SkinType | null; + texture?: SkinTexture | null; + /** + * Hydration Level + */ + hydration_level?: number | null; + /** + * Sebum Tzone + */ + sebum_tzone?: number | null; + /** + * Sebum Cheeks + */ + sebum_cheeks?: number | null; + /** + * Sensitivity Level + */ + sensitivity_level?: number | null; + barrier_state?: BarrierState | null; + /** + * Active Concerns + */ + active_concerns?: Array; + /** + * Risks + */ + risks?: Array; + /** + * Priorities + */ + priorities?: Array; + /** + * Notes + */ + notes?: string | null; + /** + * Id + */ + id: string; + /** + * Created At + */ + created_at: string; +}; + +/** + * SkinPhotoAnalysisResponse + */ +export type SkinPhotoAnalysisResponse = { + overall_state?: OverallSkinState | null; + skin_type?: SkinType | null; + texture?: SkinTexture | null; + /** + * Hydration Level + */ + hydration_level?: number | null; + /** + * Sebum Tzone + */ + sebum_tzone?: number | null; + /** + * Sebum Cheeks + */ + sebum_cheeks?: number | null; + /** + * Sensitivity Level + */ + sensitivity_level?: number | null; + barrier_state?: BarrierState | null; + /** + * Active Concerns + */ + active_concerns?: Array | null; + /** + * Risks + */ + risks?: Array | null; + /** + * Priorities + */ + priorities?: Array | null; + /** + * Notes + */ + notes?: string | null; +}; + +/** + * SkinTexture + */ +export type SkinTexture = 'smooth' | 'rough' | 'flaky' | 'bumpy'; + +/** + * SkinType + */ +export type SkinType = 'dry' | 'oily' | 'combination' | 'sensitive' | 'normal' | 'acne_prone'; + +/** + * SnapshotCreate + */ +export type SnapshotCreate = { + /** + * Snapshot Date + */ + snapshot_date: string; + overall_state?: OverallSkinState | null; + skin_type?: SkinType | null; + texture?: SkinTexture | null; + /** + * Hydration Level + */ + hydration_level?: number | null; + /** + * Sebum Tzone + */ + sebum_tzone?: number | null; + /** + * Sebum Cheeks + */ + sebum_cheeks?: number | null; + /** + * Sensitivity Level + */ + sensitivity_level?: number | null; + barrier_state?: BarrierState | null; + /** + * Active Concerns + */ + active_concerns?: Array; + /** + * Risks + */ + risks?: Array; + /** + * Priorities + */ + priorities?: Array; + /** + * Notes + */ + notes?: string | null; +}; + +/** + * SnapshotUpdate + */ +export type SnapshotUpdate = { + /** + * Snapshot Date + */ + snapshot_date?: string | null; + overall_state?: OverallSkinState | null; + skin_type?: SkinType | null; + texture?: SkinTexture | null; + /** + * Hydration Level + */ + hydration_level?: number | null; + /** + * Sebum Tzone + */ + sebum_tzone?: number | null; + /** + * Sebum Cheeks + */ + sebum_cheeks?: number | null; + /** + * Sensitivity Level + */ + sensitivity_level?: number | null; + barrier_state?: BarrierState | null; + /** + * Active Concerns + */ + active_concerns?: Array | null; + /** + * Risks + */ + risks?: Array | null; + /** + * Priorities + */ + priorities?: Array | null; + /** + * Notes + */ + notes?: string | null; +}; + +/** + * StrengthLevel + */ +export type StrengthLevel = 1 | 2 | 3; + +/** + * SuggestBatchRequest + */ +export type SuggestBatchRequest = { + /** + * From Date + */ + from_date: string; + /** + * To Date + */ + to_date: string; + /** + * Notes + */ + notes?: string | null; + /** + * Include Minoxidil Beard + */ + include_minoxidil_beard?: boolean; + /** + * Minimize Products + */ + minimize_products?: boolean | null; +}; + +/** + * SuggestRoutineRequest + */ +export type SuggestRoutineRequest = { + /** + * Routine Date + */ + routine_date: string; + part_of_day: PartOfDay; + /** + * Notes + */ + notes?: string | null; + /** + * Include Minoxidil Beard + */ + include_minoxidil_beard?: boolean; + /** + * Leaving Home + */ + leaving_home?: boolean | null; +}; + +/** + * SuggestedStep + */ +export type SuggestedStep = { + /** + * Product Id + */ + product_id?: string | null; + action_type?: GroomingAction | null; + /** + * Action Notes + */ + action_notes?: string | null; + /** + * Region + */ + region?: string | null; + /** + * Why This Step + */ + why_this_step?: string | null; + /** + * Optional + */ + optional?: boolean | null; +}; + +/** + * TextureType + */ +export type TextureType = 'watery' | 'gel' | 'emulsion' | 'cream' | 'oil' | 'balm' | 'foam' | 'fluid'; + +/** + * TokenMetrics + * + * Token usage metrics from LLM call. + */ +export type TokenMetrics = { + /** + * Prompt Tokens + */ + prompt_tokens: number; + /** + * Completion Tokens + */ + completion_tokens: number; + /** + * Thoughts Tokens + */ + thoughts_tokens?: number | null; + /** + * Total Tokens + */ + total_tokens: number; +}; + +/** + * UsageCreate + */ +export type UsageCreate = { + /** + * Dose Value + */ + dose_value?: number | null; + /** + * Dose Unit + */ + dose_unit?: string | null; + /** + * Frequency + */ + frequency?: string | null; + /** + * Schedule Text + */ + schedule_text?: string | null; + /** + * As Needed + */ + as_needed?: boolean; + /** + * Valid From + */ + valid_from: string; + /** + * Valid To + */ + valid_to?: string | null; + /** + * Source File + */ + source_file?: string | null; + /** + * Notes + */ + notes?: string | null; +}; + +/** + * UsageUpdate + */ +export type UsageUpdate = { + /** + * Dose Value + */ + dose_value?: number | null; + /** + * Dose Unit + */ + dose_unit?: string | null; + /** + * Frequency + */ + frequency?: string | null; + /** + * Schedule Text + */ + schedule_text?: string | null; + /** + * As Needed + */ + as_needed?: boolean | null; + /** + * Valid From + */ + valid_from?: string | null; + /** + * Valid To + */ + valid_to?: string | null; + /** + * Source File + */ + source_file?: string | null; + /** + * Notes + */ + notes?: string | null; +}; + +/** + * UserProfilePublic + */ +export type UserProfilePublic = { + /** + * Id + */ + id: string; + /** + * Birth Date + */ + birth_date: string | null; + sex_at_birth: SexAtBirth | null; + /** + * Created At + */ + created_at: string; + /** + * Updated At + */ + updated_at: string; +}; + +/** + * UserProfileUpdate + */ +export type UserProfileUpdate = { + /** + * Birth Date + */ + birth_date?: string | null; + sex_at_birth?: SexAtBirth | null; +}; + +/** + * ValidationError + */ +export type ValidationError = { + /** + * Location + */ + loc: Array; + /** + * Message + */ + msg: string; + /** + * Error Type + */ + type: string; + /** + * Input + */ + input?: unknown; + /** + * Context + */ + ctx?: { + [key: string]: unknown; + }; +}; + +export type ListProductsProductsGetData = { + body?: never; + path?: never; + query?: { + /** + * Category + */ + category?: ProductCategory | null; + /** + * Brand + */ + brand?: string | null; + /** + * Targets + */ + targets?: Array | null; + /** + * Is Medication + */ + is_medication?: boolean | null; + /** + * Is Tool + */ + is_tool?: boolean | null; + }; + url: '/products'; +}; + +export type ListProductsProductsGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type ListProductsProductsGetError = ListProductsProductsGetErrors[keyof ListProductsProductsGetErrors]; + +export type ListProductsProductsGetResponses = { + /** + * Response List Products Products Get + * + * Successful Response + */ + 200: Array; +}; + +export type ListProductsProductsGetResponse = ListProductsProductsGetResponses[keyof ListProductsProductsGetResponses]; + +export type CreateProductProductsPostData = { + body: ProductCreate; + path?: never; + query?: never; + url: '/products'; +}; + +export type CreateProductProductsPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type CreateProductProductsPostError = CreateProductProductsPostErrors[keyof CreateProductProductsPostErrors]; + +export type CreateProductProductsPostResponses = { + /** + * Successful Response + */ + 201: ProductPublic; +}; + +export type CreateProductProductsPostResponse = CreateProductProductsPostResponses[keyof CreateProductProductsPostResponses]; + +export type ParseProductTextProductsParseTextPostData = { + body: ProductParseRequest; + path?: never; + query?: never; + url: '/products/parse-text'; +}; + +export type ParseProductTextProductsParseTextPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type ParseProductTextProductsParseTextPostError = ParseProductTextProductsParseTextPostErrors[keyof ParseProductTextProductsParseTextPostErrors]; + +export type ParseProductTextProductsParseTextPostResponses = { + /** + * Successful Response + */ + 200: ProductParseResponse; +}; + +export type ParseProductTextProductsParseTextPostResponse = ParseProductTextProductsParseTextPostResponses[keyof ParseProductTextProductsParseTextPostResponses]; + +export type ListProductsSummaryProductsSummaryGetData = { + body?: never; + path?: never; + query?: { + /** + * Category + */ + category?: ProductCategory | null; + /** + * Brand + */ + brand?: string | null; + /** + * Targets + */ + targets?: Array | null; + /** + * Is Medication + */ + is_medication?: boolean | null; + /** + * Is Tool + */ + is_tool?: boolean | null; + }; + url: '/products/summary'; +}; + +export type ListProductsSummaryProductsSummaryGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type ListProductsSummaryProductsSummaryGetError = ListProductsSummaryProductsSummaryGetErrors[keyof ListProductsSummaryProductsSummaryGetErrors]; + +export type ListProductsSummaryProductsSummaryGetResponses = { + /** + * Response List Products Summary Products Summary Get + * + * Successful Response + */ + 200: Array; +}; + +export type ListProductsSummaryProductsSummaryGetResponse = ListProductsSummaryProductsSummaryGetResponses[keyof ListProductsSummaryProductsSummaryGetResponses]; + +export type DeleteProductProductsProductIdDeleteData = { + body?: never; + path: { + /** + * Product Id + */ + product_id: string; + }; + query?: never; + url: '/products/{product_id}'; +}; + +export type DeleteProductProductsProductIdDeleteErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type DeleteProductProductsProductIdDeleteError = DeleteProductProductsProductIdDeleteErrors[keyof DeleteProductProductsProductIdDeleteErrors]; + +export type DeleteProductProductsProductIdDeleteResponses = { + /** + * Successful Response + */ + 204: void; +}; + +export type DeleteProductProductsProductIdDeleteResponse = DeleteProductProductsProductIdDeleteResponses[keyof DeleteProductProductsProductIdDeleteResponses]; + +export type GetProductProductsProductIdGetData = { + body?: never; + path: { + /** + * Product Id + */ + product_id: string; + }; + query?: never; + url: '/products/{product_id}'; +}; + +export type GetProductProductsProductIdGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type GetProductProductsProductIdGetError = GetProductProductsProductIdGetErrors[keyof GetProductProductsProductIdGetErrors]; + +export type GetProductProductsProductIdGetResponses = { + /** + * Successful Response + */ + 200: ProductWithInventory; +}; + +export type GetProductProductsProductIdGetResponse = GetProductProductsProductIdGetResponses[keyof GetProductProductsProductIdGetResponses]; + +export type UpdateProductProductsProductIdPatchData = { + body: ProductUpdate; + path: { + /** + * Product Id + */ + product_id: string; + }; + query?: never; + url: '/products/{product_id}'; +}; + +export type UpdateProductProductsProductIdPatchErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type UpdateProductProductsProductIdPatchError = UpdateProductProductsProductIdPatchErrors[keyof UpdateProductProductsProductIdPatchErrors]; + +export type UpdateProductProductsProductIdPatchResponses = { + /** + * Successful Response + */ + 200: ProductPublic; +}; + +export type UpdateProductProductsProductIdPatchResponse = UpdateProductProductsProductIdPatchResponses[keyof UpdateProductProductsProductIdPatchResponses]; + +export type ListProductInventoryProductsProductIdInventoryGetData = { + body?: never; + path: { + /** + * Product Id + */ + product_id: string; + }; + query?: never; + url: '/products/{product_id}/inventory'; +}; + +export type ListProductInventoryProductsProductIdInventoryGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type ListProductInventoryProductsProductIdInventoryGetError = ListProductInventoryProductsProductIdInventoryGetErrors[keyof ListProductInventoryProductsProductIdInventoryGetErrors]; + +export type ListProductInventoryProductsProductIdInventoryGetResponses = { + /** + * Response List Product Inventory Products Product Id Inventory Get + * + * Successful Response + */ + 200: Array; +}; + +export type ListProductInventoryProductsProductIdInventoryGetResponse = ListProductInventoryProductsProductIdInventoryGetResponses[keyof ListProductInventoryProductsProductIdInventoryGetResponses]; + +export type CreateProductInventoryProductsProductIdInventoryPostData = { + body: InventoryCreate; + path: { + /** + * Product Id + */ + product_id: string; + }; + query?: never; + url: '/products/{product_id}/inventory'; +}; + +export type CreateProductInventoryProductsProductIdInventoryPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type CreateProductInventoryProductsProductIdInventoryPostError = CreateProductInventoryProductsProductIdInventoryPostErrors[keyof CreateProductInventoryProductsProductIdInventoryPostErrors]; + +export type CreateProductInventoryProductsProductIdInventoryPostResponses = { + /** + * Successful Response + */ + 201: ProductInventory; +}; + +export type CreateProductInventoryProductsProductIdInventoryPostResponse = CreateProductInventoryProductsProductIdInventoryPostResponses[keyof CreateProductInventoryProductsProductIdInventoryPostResponses]; + +export type SuggestShoppingProductsSuggestPostData = { + body?: never; + path?: never; + query?: never; + url: '/products/suggest'; +}; + +export type SuggestShoppingProductsSuggestPostResponses = { + /** + * Successful Response + */ + 200: ShoppingSuggestionResponse; +}; + +export type SuggestShoppingProductsSuggestPostResponse = SuggestShoppingProductsSuggestPostResponses[keyof SuggestShoppingProductsSuggestPostResponses]; + +export type DeleteInventoryInventoryInventoryIdDeleteData = { + body?: never; + path: { + /** + * Inventory Id + */ + inventory_id: string; + }; + query?: never; + url: '/inventory/{inventory_id}'; +}; + +export type DeleteInventoryInventoryInventoryIdDeleteErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type DeleteInventoryInventoryInventoryIdDeleteError = DeleteInventoryInventoryInventoryIdDeleteErrors[keyof DeleteInventoryInventoryInventoryIdDeleteErrors]; + +export type DeleteInventoryInventoryInventoryIdDeleteResponses = { + /** + * Successful Response + */ + 204: void; +}; + +export type DeleteInventoryInventoryInventoryIdDeleteResponse = DeleteInventoryInventoryInventoryIdDeleteResponses[keyof DeleteInventoryInventoryInventoryIdDeleteResponses]; + +export type GetInventoryInventoryInventoryIdGetData = { + body?: never; + path: { + /** + * Inventory Id + */ + inventory_id: string; + }; + query?: never; + url: '/inventory/{inventory_id}'; +}; + +export type GetInventoryInventoryInventoryIdGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type GetInventoryInventoryInventoryIdGetError = GetInventoryInventoryInventoryIdGetErrors[keyof GetInventoryInventoryInventoryIdGetErrors]; + +export type GetInventoryInventoryInventoryIdGetResponses = { + /** + * Successful Response + */ + 200: ProductInventory; +}; + +export type GetInventoryInventoryInventoryIdGetResponse = GetInventoryInventoryInventoryIdGetResponses[keyof GetInventoryInventoryInventoryIdGetResponses]; + +export type UpdateInventoryInventoryInventoryIdPatchData = { + body: InventoryUpdate; + path: { + /** + * Inventory Id + */ + inventory_id: string; + }; + query?: never; + url: '/inventory/{inventory_id}'; +}; + +export type UpdateInventoryInventoryInventoryIdPatchErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type UpdateInventoryInventoryInventoryIdPatchError = UpdateInventoryInventoryInventoryIdPatchErrors[keyof UpdateInventoryInventoryInventoryIdPatchErrors]; + +export type UpdateInventoryInventoryInventoryIdPatchResponses = { + /** + * Successful Response + */ + 200: ProductInventory; +}; + +export type UpdateInventoryInventoryInventoryIdPatchResponse = UpdateInventoryInventoryInventoryIdPatchResponses[keyof UpdateInventoryInventoryInventoryIdPatchResponses]; + +export type GetProfileProfileGetData = { + body?: never; + path?: never; + query?: never; + url: '/profile'; +}; + +export type GetProfileProfileGetResponses = { + /** + * Response Get Profile Profile Get + * + * Successful Response + */ + 200: UserProfilePublic | null; +}; + +export type GetProfileProfileGetResponse = GetProfileProfileGetResponses[keyof GetProfileProfileGetResponses]; + +export type UpsertProfileProfilePatchData = { + body: UserProfileUpdate; + path?: never; + query?: never; + url: '/profile'; +}; + +export type UpsertProfileProfilePatchErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type UpsertProfileProfilePatchError = UpsertProfileProfilePatchErrors[keyof UpsertProfileProfilePatchErrors]; + +export type UpsertProfileProfilePatchResponses = { + /** + * Successful Response + */ + 200: UserProfilePublic; +}; + +export type UpsertProfileProfilePatchResponse = UpsertProfileProfilePatchResponses[keyof UpsertProfileProfilePatchResponses]; + +export type ListMedicationsHealthMedicationsGetData = { + body?: never; + path?: never; + query?: { + /** + * Kind + */ + kind?: MedicationKind | null; + /** + * Product Name + */ + product_name?: string | null; + }; + url: '/health/medications'; +}; + +export type ListMedicationsHealthMedicationsGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type ListMedicationsHealthMedicationsGetError = ListMedicationsHealthMedicationsGetErrors[keyof ListMedicationsHealthMedicationsGetErrors]; + +export type ListMedicationsHealthMedicationsGetResponses = { + /** + * Response List Medications Health Medications Get + * + * Successful Response + */ + 200: Array; +}; + +export type ListMedicationsHealthMedicationsGetResponse = ListMedicationsHealthMedicationsGetResponses[keyof ListMedicationsHealthMedicationsGetResponses]; + +export type CreateMedicationHealthMedicationsPostData = { + body: MedicationCreate; + path?: never; + query?: never; + url: '/health/medications'; +}; + +export type CreateMedicationHealthMedicationsPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type CreateMedicationHealthMedicationsPostError = CreateMedicationHealthMedicationsPostErrors[keyof CreateMedicationHealthMedicationsPostErrors]; + +export type CreateMedicationHealthMedicationsPostResponses = { + /** + * Successful Response + */ + 201: MedicationEntry; +}; + +export type CreateMedicationHealthMedicationsPostResponse = CreateMedicationHealthMedicationsPostResponses[keyof CreateMedicationHealthMedicationsPostResponses]; + +export type DeleteMedicationHealthMedicationsMedicationIdDeleteData = { + body?: never; + path: { + /** + * Medication Id + */ + medication_id: string; + }; + query?: never; + url: '/health/medications/{medication_id}'; +}; + +export type DeleteMedicationHealthMedicationsMedicationIdDeleteErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type DeleteMedicationHealthMedicationsMedicationIdDeleteError = DeleteMedicationHealthMedicationsMedicationIdDeleteErrors[keyof DeleteMedicationHealthMedicationsMedicationIdDeleteErrors]; + +export type DeleteMedicationHealthMedicationsMedicationIdDeleteResponses = { + /** + * Successful Response + */ + 204: void; +}; + +export type DeleteMedicationHealthMedicationsMedicationIdDeleteResponse = DeleteMedicationHealthMedicationsMedicationIdDeleteResponses[keyof DeleteMedicationHealthMedicationsMedicationIdDeleteResponses]; + +export type GetMedicationHealthMedicationsMedicationIdGetData = { + body?: never; + path: { + /** + * Medication Id + */ + medication_id: string; + }; + query?: never; + url: '/health/medications/{medication_id}'; +}; + +export type GetMedicationHealthMedicationsMedicationIdGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type GetMedicationHealthMedicationsMedicationIdGetError = GetMedicationHealthMedicationsMedicationIdGetErrors[keyof GetMedicationHealthMedicationsMedicationIdGetErrors]; + +export type GetMedicationHealthMedicationsMedicationIdGetResponses = { + /** + * Successful Response + */ + 200: MedicationEntry; +}; + +export type GetMedicationHealthMedicationsMedicationIdGetResponse = GetMedicationHealthMedicationsMedicationIdGetResponses[keyof GetMedicationHealthMedicationsMedicationIdGetResponses]; + +export type UpdateMedicationHealthMedicationsMedicationIdPatchData = { + body: MedicationUpdate; + path: { + /** + * Medication Id + */ + medication_id: string; + }; + query?: never; + url: '/health/medications/{medication_id}'; +}; + +export type UpdateMedicationHealthMedicationsMedicationIdPatchErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type UpdateMedicationHealthMedicationsMedicationIdPatchError = UpdateMedicationHealthMedicationsMedicationIdPatchErrors[keyof UpdateMedicationHealthMedicationsMedicationIdPatchErrors]; + +export type UpdateMedicationHealthMedicationsMedicationIdPatchResponses = { + /** + * Successful Response + */ + 200: MedicationEntry; +}; + +export type UpdateMedicationHealthMedicationsMedicationIdPatchResponse = UpdateMedicationHealthMedicationsMedicationIdPatchResponses[keyof UpdateMedicationHealthMedicationsMedicationIdPatchResponses]; + +export type ListUsagesHealthMedicationsMedicationIdUsagesGetData = { + body?: never; + path: { + /** + * Medication Id + */ + medication_id: string; + }; + query?: never; + url: '/health/medications/{medication_id}/usages'; +}; + +export type ListUsagesHealthMedicationsMedicationIdUsagesGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type ListUsagesHealthMedicationsMedicationIdUsagesGetError = ListUsagesHealthMedicationsMedicationIdUsagesGetErrors[keyof ListUsagesHealthMedicationsMedicationIdUsagesGetErrors]; + +export type ListUsagesHealthMedicationsMedicationIdUsagesGetResponses = { + /** + * Response List Usages Health Medications Medication Id Usages Get + * + * Successful Response + */ + 200: Array; +}; + +export type ListUsagesHealthMedicationsMedicationIdUsagesGetResponse = ListUsagesHealthMedicationsMedicationIdUsagesGetResponses[keyof ListUsagesHealthMedicationsMedicationIdUsagesGetResponses]; + +export type CreateUsageHealthMedicationsMedicationIdUsagesPostData = { + body: UsageCreate; + path: { + /** + * Medication Id + */ + medication_id: string; + }; + query?: never; + url: '/health/medications/{medication_id}/usages'; +}; + +export type CreateUsageHealthMedicationsMedicationIdUsagesPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type CreateUsageHealthMedicationsMedicationIdUsagesPostError = CreateUsageHealthMedicationsMedicationIdUsagesPostErrors[keyof CreateUsageHealthMedicationsMedicationIdUsagesPostErrors]; + +export type CreateUsageHealthMedicationsMedicationIdUsagesPostResponses = { + /** + * Successful Response + */ + 201: MedicationUsage; +}; + +export type CreateUsageHealthMedicationsMedicationIdUsagesPostResponse = CreateUsageHealthMedicationsMedicationIdUsagesPostResponses[keyof CreateUsageHealthMedicationsMedicationIdUsagesPostResponses]; + +export type DeleteUsageHealthUsagesUsageIdDeleteData = { + body?: never; + path: { + /** + * Usage Id + */ + usage_id: string; + }; + query?: never; + url: '/health/usages/{usage_id}'; +}; + +export type DeleteUsageHealthUsagesUsageIdDeleteErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type DeleteUsageHealthUsagesUsageIdDeleteError = DeleteUsageHealthUsagesUsageIdDeleteErrors[keyof DeleteUsageHealthUsagesUsageIdDeleteErrors]; + +export type DeleteUsageHealthUsagesUsageIdDeleteResponses = { + /** + * Successful Response + */ + 204: void; +}; + +export type DeleteUsageHealthUsagesUsageIdDeleteResponse = DeleteUsageHealthUsagesUsageIdDeleteResponses[keyof DeleteUsageHealthUsagesUsageIdDeleteResponses]; + +export type UpdateUsageHealthUsagesUsageIdPatchData = { + body: UsageUpdate; + path: { + /** + * Usage Id + */ + usage_id: string; + }; + query?: never; + url: '/health/usages/{usage_id}'; +}; + +export type UpdateUsageHealthUsagesUsageIdPatchErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type UpdateUsageHealthUsagesUsageIdPatchError = UpdateUsageHealthUsagesUsageIdPatchErrors[keyof UpdateUsageHealthUsagesUsageIdPatchErrors]; + +export type UpdateUsageHealthUsagesUsageIdPatchResponses = { + /** + * Successful Response + */ + 200: MedicationUsage; +}; + +export type UpdateUsageHealthUsagesUsageIdPatchResponse = UpdateUsageHealthUsagesUsageIdPatchResponses[keyof UpdateUsageHealthUsagesUsageIdPatchResponses]; + +export type ListLabResultsHealthLabResultsGetData = { + body?: never; + path?: never; + query?: { + /** + * Q + */ + q?: string | null; + /** + * Test Code + */ + test_code?: string | null; + /** + * Flag + */ + flag?: ResultFlag | null; + /** + * Flags + */ + flags?: Array; + /** + * Without Flag + */ + without_flag?: boolean; + /** + * From Date + */ + from_date?: string | null; + /** + * To Date + */ + to_date?: string | null; + /** + * Latest Only + */ + latest_only?: boolean; + /** + * Limit + */ + limit?: number; + /** + * Offset + */ + offset?: number; + }; + url: '/health/lab-results'; +}; + +export type ListLabResultsHealthLabResultsGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type ListLabResultsHealthLabResultsGetError = ListLabResultsHealthLabResultsGetErrors[keyof ListLabResultsHealthLabResultsGetErrors]; + +export type ListLabResultsHealthLabResultsGetResponses = { + /** + * Successful Response + */ + 200: LabResultListResponse; +}; + +export type ListLabResultsHealthLabResultsGetResponse = ListLabResultsHealthLabResultsGetResponses[keyof ListLabResultsHealthLabResultsGetResponses]; + +export type CreateLabResultHealthLabResultsPostData = { + body: LabResultCreate; + path?: never; + query?: never; + url: '/health/lab-results'; +}; + +export type CreateLabResultHealthLabResultsPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type CreateLabResultHealthLabResultsPostError = CreateLabResultHealthLabResultsPostErrors[keyof CreateLabResultHealthLabResultsPostErrors]; + +export type CreateLabResultHealthLabResultsPostResponses = { + /** + * Successful Response + */ + 201: LabResult; +}; + +export type CreateLabResultHealthLabResultsPostResponse = CreateLabResultHealthLabResultsPostResponses[keyof CreateLabResultHealthLabResultsPostResponses]; + +export type DeleteLabResultHealthLabResultsResultIdDeleteData = { + body?: never; + path: { + /** + * Result Id + */ + result_id: string; + }; + query?: never; + url: '/health/lab-results/{result_id}'; +}; + +export type DeleteLabResultHealthLabResultsResultIdDeleteErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type DeleteLabResultHealthLabResultsResultIdDeleteError = DeleteLabResultHealthLabResultsResultIdDeleteErrors[keyof DeleteLabResultHealthLabResultsResultIdDeleteErrors]; + +export type DeleteLabResultHealthLabResultsResultIdDeleteResponses = { + /** + * Successful Response + */ + 204: void; +}; + +export type DeleteLabResultHealthLabResultsResultIdDeleteResponse = DeleteLabResultHealthLabResultsResultIdDeleteResponses[keyof DeleteLabResultHealthLabResultsResultIdDeleteResponses]; + +export type GetLabResultHealthLabResultsResultIdGetData = { + body?: never; + path: { + /** + * Result Id + */ + result_id: string; + }; + query?: never; + url: '/health/lab-results/{result_id}'; +}; + +export type GetLabResultHealthLabResultsResultIdGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type GetLabResultHealthLabResultsResultIdGetError = GetLabResultHealthLabResultsResultIdGetErrors[keyof GetLabResultHealthLabResultsResultIdGetErrors]; + +export type GetLabResultHealthLabResultsResultIdGetResponses = { + /** + * Successful Response + */ + 200: LabResult; +}; + +export type GetLabResultHealthLabResultsResultIdGetResponse = GetLabResultHealthLabResultsResultIdGetResponses[keyof GetLabResultHealthLabResultsResultIdGetResponses]; + +export type UpdateLabResultHealthLabResultsResultIdPatchData = { + body: LabResultUpdate; + path: { + /** + * Result Id + */ + result_id: string; + }; + query?: never; + url: '/health/lab-results/{result_id}'; +}; + +export type UpdateLabResultHealthLabResultsResultIdPatchErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type UpdateLabResultHealthLabResultsResultIdPatchError = UpdateLabResultHealthLabResultsResultIdPatchErrors[keyof UpdateLabResultHealthLabResultsResultIdPatchErrors]; + +export type UpdateLabResultHealthLabResultsResultIdPatchResponses = { + /** + * Successful Response + */ + 200: LabResult; +}; + +export type UpdateLabResultHealthLabResultsResultIdPatchResponse = UpdateLabResultHealthLabResultsResultIdPatchResponses[keyof UpdateLabResultHealthLabResultsResultIdPatchResponses]; + +export type ListRoutinesRoutinesGetData = { + body?: never; + path?: never; + query?: { + /** + * From Date + */ + from_date?: string | null; + /** + * To Date + */ + to_date?: string | null; + /** + * Part Of Day + */ + part_of_day?: PartOfDay | null; + }; + url: '/routines'; +}; + +export type ListRoutinesRoutinesGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type ListRoutinesRoutinesGetError = ListRoutinesRoutinesGetErrors[keyof ListRoutinesRoutinesGetErrors]; + +export type ListRoutinesRoutinesGetResponses = { + /** + * Successful Response + */ + 200: unknown; +}; + +export type CreateRoutineRoutinesPostData = { + body: RoutineCreate; + path?: never; + query?: never; + url: '/routines'; +}; + +export type CreateRoutineRoutinesPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type CreateRoutineRoutinesPostError = CreateRoutineRoutinesPostErrors[keyof CreateRoutineRoutinesPostErrors]; + +export type CreateRoutineRoutinesPostResponses = { + /** + * Successful Response + */ + 201: Routine; +}; + +export type CreateRoutineRoutinesPostResponse = CreateRoutineRoutinesPostResponses[keyof CreateRoutineRoutinesPostResponses]; + +export type SuggestRoutineRoutinesSuggestPostData = { + body: SuggestRoutineRequest; + path?: never; + query?: never; + url: '/routines/suggest'; +}; + +export type SuggestRoutineRoutinesSuggestPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type SuggestRoutineRoutinesSuggestPostError = SuggestRoutineRoutinesSuggestPostErrors[keyof SuggestRoutineRoutinesSuggestPostErrors]; + +export type SuggestRoutineRoutinesSuggestPostResponses = { + /** + * Successful Response + */ + 200: RoutineSuggestion; +}; + +export type SuggestRoutineRoutinesSuggestPostResponse = SuggestRoutineRoutinesSuggestPostResponses[keyof SuggestRoutineRoutinesSuggestPostResponses]; + +export type SuggestBatchRoutinesSuggestBatchPostData = { + body: SuggestBatchRequest; + path?: never; + query?: never; + url: '/routines/suggest-batch'; +}; + +export type SuggestBatchRoutinesSuggestBatchPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type SuggestBatchRoutinesSuggestBatchPostError = SuggestBatchRoutinesSuggestBatchPostErrors[keyof SuggestBatchRoutinesSuggestBatchPostErrors]; + +export type SuggestBatchRoutinesSuggestBatchPostResponses = { + /** + * Successful Response + */ + 200: BatchSuggestion; +}; + +export type SuggestBatchRoutinesSuggestBatchPostResponse = SuggestBatchRoutinesSuggestBatchPostResponses[keyof SuggestBatchRoutinesSuggestBatchPostResponses]; + +export type ListGroomingScheduleRoutinesGroomingScheduleGetData = { + body?: never; + path?: never; + query?: never; + url: '/routines/grooming-schedule'; +}; + +export type ListGroomingScheduleRoutinesGroomingScheduleGetResponses = { + /** + * Response List Grooming Schedule Routines Grooming Schedule Get + * + * Successful Response + */ + 200: Array; +}; + +export type ListGroomingScheduleRoutinesGroomingScheduleGetResponse = ListGroomingScheduleRoutinesGroomingScheduleGetResponses[keyof ListGroomingScheduleRoutinesGroomingScheduleGetResponses]; + +export type CreateGroomingScheduleRoutinesGroomingSchedulePostData = { + body: GroomingScheduleCreate; + path?: never; + query?: never; + url: '/routines/grooming-schedule'; +}; + +export type CreateGroomingScheduleRoutinesGroomingSchedulePostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type CreateGroomingScheduleRoutinesGroomingSchedulePostError = CreateGroomingScheduleRoutinesGroomingSchedulePostErrors[keyof CreateGroomingScheduleRoutinesGroomingSchedulePostErrors]; + +export type CreateGroomingScheduleRoutinesGroomingSchedulePostResponses = { + /** + * Successful Response + */ + 201: GroomingSchedule; +}; + +export type CreateGroomingScheduleRoutinesGroomingSchedulePostResponse = CreateGroomingScheduleRoutinesGroomingSchedulePostResponses[keyof CreateGroomingScheduleRoutinesGroomingSchedulePostResponses]; + +export type DeleteRoutineRoutinesRoutineIdDeleteData = { + body?: never; + path: { + /** + * Routine Id + */ + routine_id: string; + }; + query?: never; + url: '/routines/{routine_id}'; +}; + +export type DeleteRoutineRoutinesRoutineIdDeleteErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type DeleteRoutineRoutinesRoutineIdDeleteError = DeleteRoutineRoutinesRoutineIdDeleteErrors[keyof DeleteRoutineRoutinesRoutineIdDeleteErrors]; + +export type DeleteRoutineRoutinesRoutineIdDeleteResponses = { + /** + * Successful Response + */ + 204: void; +}; + +export type DeleteRoutineRoutinesRoutineIdDeleteResponse = DeleteRoutineRoutinesRoutineIdDeleteResponses[keyof DeleteRoutineRoutinesRoutineIdDeleteResponses]; + +export type GetRoutineRoutinesRoutineIdGetData = { + body?: never; + path: { + /** + * Routine Id + */ + routine_id: string; + }; + query?: never; + url: '/routines/{routine_id}'; +}; + +export type GetRoutineRoutinesRoutineIdGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type GetRoutineRoutinesRoutineIdGetError = GetRoutineRoutinesRoutineIdGetErrors[keyof GetRoutineRoutinesRoutineIdGetErrors]; + +export type GetRoutineRoutinesRoutineIdGetResponses = { + /** + * Successful Response + */ + 200: unknown; +}; + +export type UpdateRoutineRoutinesRoutineIdPatchData = { + body: RoutineUpdate; + path: { + /** + * Routine Id + */ + routine_id: string; + }; + query?: never; + url: '/routines/{routine_id}'; +}; + +export type UpdateRoutineRoutinesRoutineIdPatchErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type UpdateRoutineRoutinesRoutineIdPatchError = UpdateRoutineRoutinesRoutineIdPatchErrors[keyof UpdateRoutineRoutinesRoutineIdPatchErrors]; + +export type UpdateRoutineRoutinesRoutineIdPatchResponses = { + /** + * Successful Response + */ + 200: Routine; +}; + +export type UpdateRoutineRoutinesRoutineIdPatchResponse = UpdateRoutineRoutinesRoutineIdPatchResponses[keyof UpdateRoutineRoutinesRoutineIdPatchResponses]; + +export type AddStepRoutinesRoutineIdStepsPostData = { + body: RoutineStepCreate; + path: { + /** + * Routine Id + */ + routine_id: string; + }; + query?: never; + url: '/routines/{routine_id}/steps'; +}; + +export type AddStepRoutinesRoutineIdStepsPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type AddStepRoutinesRoutineIdStepsPostError = AddStepRoutinesRoutineIdStepsPostErrors[keyof AddStepRoutinesRoutineIdStepsPostErrors]; + +export type AddStepRoutinesRoutineIdStepsPostResponses = { + /** + * Successful Response + */ + 201: RoutineStep; +}; + +export type AddStepRoutinesRoutineIdStepsPostResponse = AddStepRoutinesRoutineIdStepsPostResponses[keyof AddStepRoutinesRoutineIdStepsPostResponses]; + +export type DeleteStepRoutinesStepsStepIdDeleteData = { + body?: never; + path: { + /** + * Step Id + */ + step_id: string; + }; + query?: never; + url: '/routines/steps/{step_id}'; +}; + +export type DeleteStepRoutinesStepsStepIdDeleteErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type DeleteStepRoutinesStepsStepIdDeleteError = DeleteStepRoutinesStepsStepIdDeleteErrors[keyof DeleteStepRoutinesStepsStepIdDeleteErrors]; + +export type DeleteStepRoutinesStepsStepIdDeleteResponses = { + /** + * Successful Response + */ + 204: void; +}; + +export type DeleteStepRoutinesStepsStepIdDeleteResponse = DeleteStepRoutinesStepsStepIdDeleteResponses[keyof DeleteStepRoutinesStepsStepIdDeleteResponses]; + +export type UpdateStepRoutinesStepsStepIdPatchData = { + body: RoutineStepUpdate; + path: { + /** + * Step Id + */ + step_id: string; + }; + query?: never; + url: '/routines/steps/{step_id}'; +}; + +export type UpdateStepRoutinesStepsStepIdPatchErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type UpdateStepRoutinesStepsStepIdPatchError = UpdateStepRoutinesStepsStepIdPatchErrors[keyof UpdateStepRoutinesStepsStepIdPatchErrors]; + +export type UpdateStepRoutinesStepsStepIdPatchResponses = { + /** + * Successful Response + */ + 200: RoutineStep; +}; + +export type UpdateStepRoutinesStepsStepIdPatchResponse = UpdateStepRoutinesStepsStepIdPatchResponses[keyof UpdateStepRoutinesStepsStepIdPatchResponses]; + +export type DeleteGroomingScheduleRoutinesGroomingScheduleEntryIdDeleteData = { + body?: never; + path: { + /** + * Entry Id + */ + entry_id: string; + }; + query?: never; + url: '/routines/grooming-schedule/{entry_id}'; +}; + +export type DeleteGroomingScheduleRoutinesGroomingScheduleEntryIdDeleteErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type DeleteGroomingScheduleRoutinesGroomingScheduleEntryIdDeleteError = DeleteGroomingScheduleRoutinesGroomingScheduleEntryIdDeleteErrors[keyof DeleteGroomingScheduleRoutinesGroomingScheduleEntryIdDeleteErrors]; + +export type DeleteGroomingScheduleRoutinesGroomingScheduleEntryIdDeleteResponses = { + /** + * Successful Response + */ + 204: void; +}; + +export type DeleteGroomingScheduleRoutinesGroomingScheduleEntryIdDeleteResponse = DeleteGroomingScheduleRoutinesGroomingScheduleEntryIdDeleteResponses[keyof DeleteGroomingScheduleRoutinesGroomingScheduleEntryIdDeleteResponses]; + +export type UpdateGroomingScheduleRoutinesGroomingScheduleEntryIdPatchData = { + body: GroomingScheduleUpdate; + path: { + /** + * Entry Id + */ + entry_id: string; + }; + query?: never; + url: '/routines/grooming-schedule/{entry_id}'; +}; + +export type UpdateGroomingScheduleRoutinesGroomingScheduleEntryIdPatchErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type UpdateGroomingScheduleRoutinesGroomingScheduleEntryIdPatchError = UpdateGroomingScheduleRoutinesGroomingScheduleEntryIdPatchErrors[keyof UpdateGroomingScheduleRoutinesGroomingScheduleEntryIdPatchErrors]; + +export type UpdateGroomingScheduleRoutinesGroomingScheduleEntryIdPatchResponses = { + /** + * Successful Response + */ + 200: GroomingSchedule; +}; + +export type UpdateGroomingScheduleRoutinesGroomingScheduleEntryIdPatchResponse = UpdateGroomingScheduleRoutinesGroomingScheduleEntryIdPatchResponses[keyof UpdateGroomingScheduleRoutinesGroomingScheduleEntryIdPatchResponses]; + +export type AnalyzeSkinPhotosSkincareAnalyzePhotosPostData = { + body: BodyAnalyzeSkinPhotosSkincareAnalyzePhotosPost; + path?: never; + query?: never; + url: '/skincare/analyze-photos'; +}; + +export type AnalyzeSkinPhotosSkincareAnalyzePhotosPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type AnalyzeSkinPhotosSkincareAnalyzePhotosPostError = AnalyzeSkinPhotosSkincareAnalyzePhotosPostErrors[keyof AnalyzeSkinPhotosSkincareAnalyzePhotosPostErrors]; + +export type AnalyzeSkinPhotosSkincareAnalyzePhotosPostResponses = { + /** + * Successful Response + */ + 200: SkinPhotoAnalysisResponse; +}; + +export type AnalyzeSkinPhotosSkincareAnalyzePhotosPostResponse = AnalyzeSkinPhotosSkincareAnalyzePhotosPostResponses[keyof AnalyzeSkinPhotosSkincareAnalyzePhotosPostResponses]; + +export type ListSnapshotsSkincareGetData = { + body?: never; + path?: never; + query?: { + /** + * From Date + */ + from_date?: string | null; + /** + * To Date + */ + to_date?: string | null; + /** + * Overall State + */ + overall_state?: OverallSkinState | null; + }; + url: '/skincare'; +}; + +export type ListSnapshotsSkincareGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type ListSnapshotsSkincareGetError = ListSnapshotsSkincareGetErrors[keyof ListSnapshotsSkincareGetErrors]; + +export type ListSnapshotsSkincareGetResponses = { + /** + * Response List Snapshots Skincare Get + * + * Successful Response + */ + 200: Array; +}; + +export type ListSnapshotsSkincareGetResponse = ListSnapshotsSkincareGetResponses[keyof ListSnapshotsSkincareGetResponses]; + +export type CreateSnapshotSkincarePostData = { + body: SnapshotCreate; + path?: never; + query?: never; + url: '/skincare'; +}; + +export type CreateSnapshotSkincarePostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type CreateSnapshotSkincarePostError = CreateSnapshotSkincarePostErrors[keyof CreateSnapshotSkincarePostErrors]; + +export type CreateSnapshotSkincarePostResponses = { + /** + * Successful Response + */ + 201: SkinConditionSnapshotPublic; +}; + +export type CreateSnapshotSkincarePostResponse = CreateSnapshotSkincarePostResponses[keyof CreateSnapshotSkincarePostResponses]; + +export type DeleteSnapshotSkincareSnapshotIdDeleteData = { + body?: never; + path: { + /** + * Snapshot Id + */ + snapshot_id: string; + }; + query?: never; + url: '/skincare/{snapshot_id}'; +}; + +export type DeleteSnapshotSkincareSnapshotIdDeleteErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type DeleteSnapshotSkincareSnapshotIdDeleteError = DeleteSnapshotSkincareSnapshotIdDeleteErrors[keyof DeleteSnapshotSkincareSnapshotIdDeleteErrors]; + +export type DeleteSnapshotSkincareSnapshotIdDeleteResponses = { + /** + * Successful Response + */ + 204: void; +}; + +export type DeleteSnapshotSkincareSnapshotIdDeleteResponse = DeleteSnapshotSkincareSnapshotIdDeleteResponses[keyof DeleteSnapshotSkincareSnapshotIdDeleteResponses]; + +export type GetSnapshotSkincareSnapshotIdGetData = { + body?: never; + path: { + /** + * Snapshot Id + */ + snapshot_id: string; + }; + query?: never; + url: '/skincare/{snapshot_id}'; +}; + +export type GetSnapshotSkincareSnapshotIdGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type GetSnapshotSkincareSnapshotIdGetError = GetSnapshotSkincareSnapshotIdGetErrors[keyof GetSnapshotSkincareSnapshotIdGetErrors]; + +export type GetSnapshotSkincareSnapshotIdGetResponses = { + /** + * Successful Response + */ + 200: SkinConditionSnapshotPublic; +}; + +export type GetSnapshotSkincareSnapshotIdGetResponse = GetSnapshotSkincareSnapshotIdGetResponses[keyof GetSnapshotSkincareSnapshotIdGetResponses]; + +export type UpdateSnapshotSkincareSnapshotIdPatchData = { + body: SnapshotUpdate; + path: { + /** + * Snapshot Id + */ + snapshot_id: string; + }; + query?: never; + url: '/skincare/{snapshot_id}'; +}; + +export type UpdateSnapshotSkincareSnapshotIdPatchErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type UpdateSnapshotSkincareSnapshotIdPatchError = UpdateSnapshotSkincareSnapshotIdPatchErrors[keyof UpdateSnapshotSkincareSnapshotIdPatchErrors]; + +export type UpdateSnapshotSkincareSnapshotIdPatchResponses = { + /** + * Successful Response + */ + 200: SkinConditionSnapshotPublic; +}; + +export type UpdateSnapshotSkincareSnapshotIdPatchResponse = UpdateSnapshotSkincareSnapshotIdPatchResponses[keyof UpdateSnapshotSkincareSnapshotIdPatchResponses]; + +export type ListAiLogsAiLogsGetData = { + body?: never; + path?: never; + query?: { + /** + * Endpoint + */ + endpoint?: string | null; + /** + * Success + */ + success?: boolean | null; + /** + * Limit + */ + limit?: number; + }; + url: '/ai-logs'; +}; + +export type ListAiLogsAiLogsGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type ListAiLogsAiLogsGetError = ListAiLogsAiLogsGetErrors[keyof ListAiLogsAiLogsGetErrors]; + +export type ListAiLogsAiLogsGetResponses = { + /** + * Response List Ai Logs Ai Logs Get + * + * Successful Response + */ + 200: Array; +}; + +export type ListAiLogsAiLogsGetResponse = ListAiLogsAiLogsGetResponses[keyof ListAiLogsAiLogsGetResponses]; + +export type GetAiLogAiLogsLogIdGetData = { + body?: never; + path: { + /** + * Log Id + */ + log_id: string; + }; + query?: never; + url: '/ai-logs/{log_id}'; +}; + +export type GetAiLogAiLogsLogIdGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type GetAiLogAiLogsLogIdGetError = GetAiLogAiLogsLogIdGetErrors[keyof GetAiLogAiLogsLogIdGetErrors]; + +export type GetAiLogAiLogsLogIdGetResponses = { + /** + * Successful Response + */ + 200: AiCallLog; +}; + +export type GetAiLogAiLogsLogIdGetResponse = GetAiLogAiLogsLogIdGetResponses[keyof GetAiLogAiLogsLogIdGetResponses]; + +export type HealthCheckHealthCheckGetData = { + body?: never; + path?: never; + query?: never; + url: '/health-check'; +}; + +export type HealthCheckHealthCheckGetResponses = { + /** + * Successful Response + */ + 200: unknown; +}; diff --git a/frontend/src/lib/components/ProductForm.svelte b/frontend/src/lib/components/ProductForm.svelte index 1eba4a0..23dc172 100644 --- a/frontend/src/lib/components/ProductForm.svelte +++ b/frontend/src/lib/components/ProductForm.svelte @@ -1,14 +1,12 @@