feat: add TypeScript definitions for next-auth session with accessToken and user details
Test Suite / test (24.15.0) (push) Has been cancelled

This commit is contained in:
Nils-Johan Gynther
2026-05-04 20:09:21 +02:00
parent afd2607000
commit ffe50e5151
135 changed files with 5 additions and 38 deletions
@@ -0,0 +1,163 @@
export type Tag = {
id: number;
name: string;
};
export type ProductTag = {
productId: number;
tagId: number;
tag: Tag;
};
export type Nutrition = {
id: number;
productId: number;
calories: number | null;
protein: number | null;
fat: number | null;
carbohydrates: number | null;
salt: number | null;
sugar: number | null;
fiber: number | null;
};
export type Category = {
id: number;
name: string;
parentId: number | null;
parent: Category | null;
};
export type Product = {
id: number;
name: string;
normalizedName: string;
category: string | null;
subcategory: string | null;
brand: string | null;
canonicalName: string | null;
isActive: boolean;
deletedAt: string | null;
createdAt: string;
updatedAt: string;
tags?: ProductTag[];
nutrition?: Nutrition | null;
categoryId?: number | null;
categoryRef?: Category | null;
};
export type InventoryItem = {
id: number;
productId: number;
quantity: string;
unit: string;
location: string | null;
purchaseDate: string | null;
opened: boolean | null;
suitableFor: string | null;
bestBeforeDate: string | null;
brand: string | null;
comment: string | null;
createdAt: string;
updatedAt: string;
product: Product;
};
export type MergePreviewProduct = Product & {
inventoryCount: number;
};
export type MergePreview = {
source: MergePreviewProduct;
target: MergePreviewProduct;
outcome: {
inventoryItemsToMove: number;
sourceWillBeSoftDeleted: boolean;
targetWillRemainActive: boolean;
};
};
export type InventoryConsumption = {
id: number;
inventoryItemId: number;
amountUsed: string;
comment: string | null;
createdAt: string;
inventoryItem?: { unit: string };
};
export type RecipeIngredient = {
id: number;
recipeId: number;
productId: number;
quantity: string;
unit: string;
note: string | null;
createdAt: string;
updatedAt: string;
product: Product;
};
export type Recipe = {
id: number;
name: string;
description: string | null;
instructions: string | null;
imageUrl: string | null;
servings: number | null;
isPublic: boolean;
ownerId: number | null;
owner: { id: number; username: string } | null;
shares: { userId: number }[];
createdAt: string;
updatedAt: string;
ingredients: RecipeIngredient[];
};
export type RecipePreviewInventoryItem = {
id: number;
quantity: string;
unit: string;
};
export type RecipePreviewMatchingInventoryItem = RecipePreviewInventoryItem & {
brand: string | null;
location: string | null;
bestBeforeDate: string | null;
};
export type RecipePreviewOtherInventoryItem = RecipePreviewInventoryItem & {
location: string | null;
canConvert: boolean;
convertedQuantity: number;
};
export type RecipeInventoryPreviewIngredient = {
ingredientId: number;
productId: number;
productName: string;
requiredQuantity: number;
requiredUnit: string;
note: string | null;
availableQuantity: number;
availableUnit: string | null;
matchingInventoryItems: RecipePreviewMatchingInventoryItem[];
otherInventoryItems: RecipePreviewOtherInventoryItem[];
status: 'enough' | 'missing' | 'unit_mismatch';
missingQuantity: number;
};
export type RecipeInventoryPreview = {
recipe: {
id: number;
name: string;
description: string | null;
};
ingredients: RecipeInventoryPreviewIngredient[];
summary: {
totalIngredients: number;
enoughCount: number;
missingCount: number;
unitMismatchCount: number;
canCookExactly: boolean;
};
};