@cravery/core 0.0.6 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/collections.d.ts +5 -0
- package/dist/config/collections.d.ts.map +1 -1
- package/dist/config/collections.js +5 -0
- package/dist/config/collections.js.map +1 -1
- package/dist/config/common.js +1 -1
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +2 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/limits.d.ts +8 -0
- package/dist/config/limits.d.ts.map +1 -0
- package/dist/config/limits.js +36 -0
- package/dist/config/limits.js.map +1 -0
- package/dist/config/subscription.d.ts +2 -0
- package/dist/config/subscription.d.ts.map +1 -0
- package/dist/config/subscription.js +5 -0
- package/dist/config/subscription.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/errors/index.d.ts +11 -2
- package/dist/lib/errors/index.d.ts.map +1 -1
- package/dist/lib/errors/index.js +31 -4
- package/dist/lib/errors/index.js.map +1 -1
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +1 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/repository/equipment.repository.d.ts +15 -0
- package/dist/lib/repository/equipment.repository.d.ts.map +1 -0
- package/dist/lib/repository/equipment.repository.js +65 -0
- package/dist/lib/repository/equipment.repository.js.map +1 -0
- package/dist/lib/repository/factory.d.ts +10 -0
- package/dist/lib/repository/factory.d.ts.map +1 -1
- package/dist/lib/repository/factory.js +15 -0
- package/dist/lib/repository/factory.js.map +1 -1
- package/dist/lib/repository/index.d.ts +5 -0
- package/dist/lib/repository/index.d.ts.map +1 -1
- package/dist/lib/repository/index.js +5 -0
- package/dist/lib/repository/index.js.map +1 -1
- package/dist/lib/repository/ingredient.repository.d.ts +15 -0
- package/dist/lib/repository/ingredient.repository.d.ts.map +1 -0
- package/dist/lib/repository/ingredient.repository.js +65 -0
- package/dist/lib/repository/ingredient.repository.js.map +1 -0
- package/dist/lib/repository/profile.repository.d.ts +1 -1
- package/dist/lib/repository/profile.repository.d.ts.map +1 -1
- package/dist/lib/repository/profile.repository.js +1 -1
- package/dist/lib/repository/profile.repository.js.map +1 -1
- package/dist/lib/repository/recipe-queue.repository.d.ts +10 -0
- package/dist/lib/repository/recipe-queue.repository.d.ts.map +1 -0
- package/dist/lib/repository/recipe-queue.repository.js +37 -0
- package/dist/lib/repository/recipe-queue.repository.js.map +1 -0
- package/dist/lib/repository/recipe.repository.d.ts +10 -0
- package/dist/lib/repository/recipe.repository.d.ts.map +1 -0
- package/dist/lib/repository/recipe.repository.js +40 -0
- package/dist/lib/repository/recipe.repository.js.map +1 -0
- package/dist/lib/repository/report.repository.d.ts +15 -0
- package/dist/lib/repository/report.repository.d.ts.map +1 -0
- package/dist/lib/repository/report.repository.js +47 -0
- package/dist/lib/repository/report.repository.js.map +1 -0
- package/dist/lib/repository/user.repository.d.ts +1 -1
- package/dist/lib/repository/user.repository.d.ts.map +1 -1
- package/dist/lib/repository/user.repository.js +1 -1
- package/dist/lib/repository/user.repository.js.map +1 -1
- package/dist/lib/usage/index.d.ts +2 -0
- package/dist/lib/usage/index.d.ts.map +1 -0
- package/dist/lib/usage/index.js +18 -0
- package/dist/lib/usage/index.js.map +1 -0
- package/dist/lib/usage/usage.service.d.ts +28 -0
- package/dist/lib/usage/usage.service.d.ts.map +1 -0
- package/dist/lib/usage/usage.service.js +131 -0
- package/dist/lib/usage/usage.service.js.map +1 -0
- package/dist/lib/utils/index.d.ts +1 -0
- package/dist/lib/utils/index.d.ts.map +1 -1
- package/dist/lib/utils/index.js +1 -0
- package/dist/lib/utils/index.js.map +1 -1
- package/dist/lib/utils/slug.d.ts +13 -0
- package/dist/lib/utils/slug.d.ts.map +1 -0
- package/dist/lib/utils/slug.js +33 -0
- package/dist/lib/utils/slug.js.map +1 -0
- package/dist/types/ai/filters.js +1 -1
- package/dist/types/ai/filters.js.map +1 -1
- package/dist/types/ai/genkit.d.ts +246 -0
- package/dist/types/ai/genkit.d.ts.map +1 -0
- package/dist/types/ai/genkit.js +68 -0
- package/dist/types/ai/genkit.js.map +1 -0
- package/dist/types/ai/index.d.ts +1 -0
- package/dist/types/ai/index.d.ts.map +1 -1
- package/dist/types/ai/index.js +1 -0
- package/dist/types/ai/index.js.map +1 -1
- package/dist/types/ai/recipe.js +5 -5
- package/dist/types/ai/recipe.js.map +1 -1
- package/dist/types/ai/translation.js +3 -3
- package/dist/types/ai/translation.js.map +1 -1
- package/dist/types/asset.d.ts +21 -0
- package/dist/types/asset.d.ts.map +1 -0
- package/dist/types/asset.js +18 -0
- package/dist/types/asset.js.map +1 -0
- package/dist/types/enums/allergen.d.ts +19 -0
- package/dist/types/enums/allergen.d.ts.map +1 -0
- package/dist/types/enums/allergen.js +21 -0
- package/dist/types/enums/allergen.js.map +1 -0
- package/dist/types/enums/cuisine.d.ts +39 -0
- package/dist/types/enums/cuisine.d.ts.map +1 -0
- package/dist/types/enums/cuisine.js +41 -0
- package/dist/types/enums/cuisine.js.map +1 -0
- package/dist/types/enums/dietary_tag.d.ts +21 -0
- package/dist/types/enums/dietary_tag.d.ts.map +1 -0
- package/dist/types/enums/dietary_tag.js +23 -0
- package/dist/types/enums/dietary_tag.js.map +1 -0
- package/dist/types/enums/difficulty.d.ts +10 -0
- package/dist/types/enums/difficulty.d.ts.map +1 -0
- package/dist/types/enums/difficulty.js +12 -0
- package/dist/types/enums/difficulty.js.map +1 -0
- package/dist/types/enums/image_type.d.ts +8 -0
- package/dist/types/enums/image_type.d.ts.map +1 -0
- package/dist/types/enums/image_type.js +7 -0
- package/dist/types/enums/image_type.js.map +1 -0
- package/dist/types/enums/index.d.ts +22 -0
- package/dist/types/enums/index.d.ts.map +1 -0
- package/dist/types/enums/index.js +38 -0
- package/dist/types/enums/index.js.map +1 -0
- package/dist/types/enums/locale.d.ts +11 -0
- package/dist/types/enums/locale.d.ts.map +1 -0
- package/dist/types/enums/locale.js +7 -0
- package/dist/types/enums/locale.js.map +1 -0
- package/dist/types/enums/meal_type.d.ts +14 -0
- package/dist/types/enums/meal_type.d.ts.map +1 -0
- package/dist/types/enums/meal_type.js +16 -0
- package/dist/types/enums/meal_type.js.map +1 -0
- package/dist/types/enums/moderation_status.d.ts +9 -0
- package/dist/types/enums/moderation_status.d.ts.map +1 -0
- package/dist/types/enums/moderation_status.js +11 -0
- package/dist/types/enums/moderation_status.js.map +1 -0
- package/dist/types/enums/priority.d.ts +9 -0
- package/dist/types/enums/priority.d.ts.map +1 -0
- package/dist/types/enums/priority.js +7 -0
- package/dist/types/enums/priority.js.map +1 -0
- package/dist/types/enums/profile_status.d.ts +10 -0
- package/dist/types/enums/profile_status.d.ts.map +1 -0
- package/dist/types/enums/profile_status.js +12 -0
- package/dist/types/enums/profile_status.js.map +1 -0
- package/dist/types/enums/recipe_source.d.ts +10 -0
- package/dist/types/enums/recipe_source.d.ts.map +1 -0
- package/dist/types/enums/recipe_source.js +7 -0
- package/dist/types/enums/recipe_source.js.map +1 -0
- package/dist/types/enums/recipe_status.d.ts +13 -0
- package/dist/types/enums/recipe_status.d.ts.map +1 -0
- package/dist/types/enums/recipe_status.js +15 -0
- package/dist/types/enums/recipe_status.js.map +1 -0
- package/dist/types/enums/role.d.ts +11 -0
- package/dist/types/enums/role.d.ts.map +1 -0
- package/dist/types/enums/role.js +13 -0
- package/dist/types/enums/role.js.map +1 -0
- package/dist/types/enums/severity.d.ts +9 -0
- package/dist/types/enums/severity.d.ts.map +1 -0
- package/dist/types/enums/severity.js +7 -0
- package/dist/types/enums/severity.js.map +1 -0
- package/dist/types/enums/spiciness.d.ts +10 -0
- package/dist/types/enums/spiciness.d.ts.map +1 -0
- package/dist/types/enums/spiciness.js +7 -0
- package/dist/types/enums/spiciness.js.map +1 -0
- package/dist/types/enums/status.d.ts +11 -0
- package/dist/types/enums/status.d.ts.map +1 -0
- package/dist/types/enums/status.js +13 -0
- package/dist/types/enums/status.js.map +1 -0
- package/dist/types/enums/subscription_tier.d.ts +8 -0
- package/dist/types/enums/subscription_tier.d.ts.map +1 -0
- package/dist/types/enums/subscription_tier.js +6 -0
- package/dist/types/enums/subscription_tier.js.map +1 -0
- package/dist/types/enums/suggestion_category.d.ts +11 -0
- package/dist/types/enums/suggestion_category.d.ts.map +1 -0
- package/dist/types/enums/suggestion_category.js +13 -0
- package/dist/types/enums/suggestion_category.js.map +1 -0
- package/dist/types/enums/temperature_unit.d.ts +8 -0
- package/dist/types/enums/temperature_unit.d.ts.map +1 -0
- package/dist/types/enums/temperature_unit.js +7 -0
- package/dist/types/enums/temperature_unit.js.map +1 -0
- package/dist/types/enums/unit.d.ts +43 -0
- package/dist/types/enums/unit.d.ts.map +1 -0
- package/dist/types/enums/unit.js +53 -0
- package/dist/types/enums/unit.js.map +1 -0
- package/dist/types/enums/url_type.d.ts +13 -0
- package/dist/types/enums/url_type.d.ts.map +1 -0
- package/dist/types/enums/url_type.js +15 -0
- package/dist/types/enums/url_type.js.map +1 -0
- package/dist/types/enums/user_status.d.ts +10 -0
- package/dist/types/enums/user_status.d.ts.map +1 -0
- package/dist/types/enums/user_status.js +12 -0
- package/dist/types/enums/user_status.js.map +1 -0
- package/dist/types/equipment-entry.d.ts +21 -0
- package/dist/types/equipment-entry.d.ts.map +1 -0
- package/dist/types/equipment-entry.js +17 -0
- package/dist/types/equipment-entry.js.map +1 -0
- package/dist/types/global-asset.d.ts +21 -0
- package/dist/types/global-asset.d.ts.map +1 -0
- package/dist/types/global-asset.js +18 -0
- package/dist/types/global-asset.js.map +1 -0
- package/dist/types/iam/index.d.ts +4 -0
- package/dist/types/iam/index.d.ts.map +1 -0
- package/dist/types/iam/index.js +20 -0
- package/dist/types/iam/index.js.map +1 -0
- package/dist/types/iam/profile.d.ts +30 -0
- package/dist/types/iam/profile.d.ts.map +1 -0
- package/dist/types/iam/profile.js +26 -0
- package/dist/types/iam/profile.js.map +1 -0
- package/dist/types/iam/subscription.d.ts +43 -0
- package/dist/types/iam/subscription.d.ts.map +1 -0
- package/dist/types/iam/subscription.js +22 -0
- package/dist/types/iam/subscription.js.map +1 -0
- package/dist/types/iam/user.d.ts +27 -0
- package/dist/types/iam/user.d.ts.map +1 -0
- package/dist/types/iam/user.js +18 -0
- package/dist/types/iam/user.js.map +1 -0
- package/dist/types/idempotency.d.ts +32 -0
- package/dist/types/idempotency.d.ts.map +1 -0
- package/dist/types/idempotency.js +25 -0
- package/dist/types/idempotency.js.map +1 -0
- package/dist/types/index.d.ts +3 -8
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +3 -8
- package/dist/types/index.js.map +1 -1
- package/dist/types/ingredient-entry.d.ts +21 -0
- package/dist/types/ingredient-entry.d.ts.map +1 -0
- package/dist/types/ingredient-entry.js +17 -0
- package/dist/types/ingredient-entry.js.map +1 -0
- package/dist/types/moderation.d.ts +24 -17
- package/dist/types/moderation.d.ts.map +1 -1
- package/dist/types/moderation.js +9 -8
- package/dist/types/moderation.js.map +1 -1
- package/dist/types/rate-limit.d.ts +26 -0
- package/dist/types/rate-limit.d.ts.map +1 -0
- package/dist/types/rate-limit.js +22 -0
- package/dist/types/rate-limit.js.map +1 -0
- package/dist/types/recipe/equipment.d.ts +20 -0
- package/dist/types/recipe/equipment.d.ts.map +1 -0
- package/dist/types/recipe/equipment.js +16 -0
- package/dist/types/recipe/equipment.js.map +1 -0
- package/dist/types/recipe/index.d.ts +7 -0
- package/dist/types/recipe/index.d.ts.map +1 -0
- package/dist/types/recipe/index.js +23 -0
- package/dist/types/recipe/index.js.map +1 -0
- package/dist/types/recipe/ingredient.d.ts +209 -0
- package/dist/types/recipe/ingredient.d.ts.map +1 -0
- package/dist/types/recipe/ingredient.js +33 -0
- package/dist/types/recipe/ingredient.js.map +1 -0
- package/dist/types/recipe/instruction.d.ts +32 -0
- package/dist/types/recipe/instruction.d.ts.map +1 -0
- package/dist/types/recipe/instruction.js +16 -0
- package/dist/types/recipe/instruction.js.map +1 -0
- package/dist/types/recipe/nutrition.d.ts +18 -0
- package/dist/types/recipe/nutrition.d.ts.map +1 -0
- package/dist/types/recipe/nutrition.js +20 -0
- package/dist/types/recipe/nutrition.js.map +1 -0
- package/dist/types/recipe/recipe.d.ts +453 -0
- package/dist/types/recipe/recipe.d.ts.map +1 -0
- package/dist/types/recipe/recipe.js +82 -0
- package/dist/types/recipe/recipe.js.map +1 -0
- package/dist/types/recipe/temperature.d.ts +10 -0
- package/dist/types/recipe/temperature.d.ts.map +1 -0
- package/dist/types/recipe/temperature.js +10 -0
- package/dist/types/recipe/temperature.js.map +1 -0
- package/dist/types/report.d.ts +91 -0
- package/dist/types/report.d.ts.map +1 -0
- package/dist/types/report.js +61 -0
- package/dist/types/report.js.map +1 -0
- package/dist/types/settings.js +6 -6
- package/dist/types/settings.js.map +1 -1
- package/dist/types/user-recipe-ref.d.ts +29 -0
- package/dist/types/user-recipe-ref.d.ts.map +1 -0
- package/dist/types/user-recipe-ref.js +22 -0
- package/dist/types/user-recipe-ref.js.map +1 -0
- package/package.json +25 -1
- package/src/config/collections.ts +5 -0
- package/src/config/common.ts +1 -1
- package/src/config/index.ts +2 -0
- package/src/config/limits.ts +41 -0
- package/src/config/subscription.ts +1 -0
- package/src/index.ts +1 -1
- package/src/lib/errors/index.ts +30 -3
- package/src/lib/iam.ts +1 -1
- package/src/lib/index.ts +1 -0
- package/src/lib/repository/equipment.repository.ts +93 -0
- package/src/lib/repository/factory.ts +15 -0
- package/src/lib/repository/index.ts +5 -0
- package/src/lib/repository/ingredient.repository.ts +93 -0
- package/src/lib/repository/profile.repository.ts +2 -2
- package/src/lib/repository/recipe-queue.repository.ts +49 -0
- package/src/lib/repository/recipe.repository.ts +51 -0
- package/src/lib/repository/report.repository.ts +79 -0
- package/src/lib/repository/user.repository.ts +2 -2
- package/src/lib/usage/index.ts +1 -0
- package/src/lib/usage/usage.service.ts +187 -0
- package/src/lib/utils/index.ts +1 -0
- package/src/lib/utils/slug.ts +33 -0
- package/src/types/ai/filters.ts +1 -1
- package/src/types/ai/genkit.ts +77 -0
- package/src/types/ai/index.ts +1 -0
- package/src/types/ai/recipe.ts +5 -5
- package/src/types/ai/translation.ts +3 -3
- package/src/types/asset.ts +19 -0
- package/src/{enums → types/enums}/recipe_status.ts +3 -0
- package/src/types/iam/index.ts +3 -0
- package/src/types/{profile.ts → iam/profile.ts} +1 -1
- package/src/types/iam/subscription.ts +23 -0
- package/src/types/{user.ts → iam/user.ts} +2 -1
- package/src/types/index.ts +3 -8
- package/src/types/moderation.ts +11 -9
- package/src/types/{equipment.ts → recipe/equipment.ts} +1 -1
- package/src/types/recipe/index.ts +6 -0
- package/src/types/{ingredient.ts → recipe/ingredient.ts} +1 -1
- package/src/types/{recipe.ts → recipe/recipe.ts} +7 -7
- package/src/types/report.ts +70 -0
- package/src/types/settings.ts +7 -7
- package/src/types/subscription.ts +0 -13
- /package/src/{enums → types/enums}/allergen.ts +0 -0
- /package/src/{enums → types/enums}/cuisine.ts +0 -0
- /package/src/{enums → types/enums}/dietary_tag.ts +0 -0
- /package/src/{enums → types/enums}/difficulty.ts +0 -0
- /package/src/{enums → types/enums}/image_type.ts +0 -0
- /package/src/{enums → types/enums}/index.ts +0 -0
- /package/src/{enums → types/enums}/locale.ts +0 -0
- /package/src/{enums → types/enums}/meal_type.ts +0 -0
- /package/src/{enums → types/enums}/moderation_status.ts +0 -0
- /package/src/{enums → types/enums}/priority.ts +0 -0
- /package/src/{enums → types/enums}/profile_status.ts +0 -0
- /package/src/{enums → types/enums}/recipe_source.ts +0 -0
- /package/src/{enums → types/enums}/role.ts +0 -0
- /package/src/{enums → types/enums}/severity.ts +0 -0
- /package/src/{enums → types/enums}/spiciness.ts +0 -0
- /package/src/{enums → types/enums}/status.ts +0 -0
- /package/src/{enums → types/enums}/subscription_tier.ts +0 -0
- /package/src/{enums → types/enums}/suggestion_category.ts +0 -0
- /package/src/{enums → types/enums}/temperature_unit.ts +0 -0
- /package/src/{enums → types/enums}/unit.ts +0 -0
- /package/src/{enums → types/enums}/url_type.ts +0 -0
- /package/src/{enums → types/enums}/user_status.ts +0 -0
- /package/src/types/{instruction.ts → recipe/instruction.ts} +0 -0
- /package/src/types/{nutrition.ts → recipe/nutrition.ts} +0 -0
- /package/src/types/{temperature.ts → recipe/temperature.ts} +0 -0
package/src/types/moderation.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { Timestamp } from "firebase-admin/firestore";
|
|
2
|
+
import type { Timestamp } from "firebase-admin/firestore";
|
|
3
3
|
import {
|
|
4
|
+
LocaleSchema,
|
|
4
5
|
ModerationStatusSchema,
|
|
5
6
|
PrioritySchema,
|
|
6
7
|
SeveritySchema,
|
|
7
8
|
SuggestionCategorySchema,
|
|
8
|
-
} from "
|
|
9
|
+
} from "./enums";
|
|
9
10
|
|
|
10
11
|
export const ModerationSuggestionSchema = z.object({
|
|
11
12
|
category: SuggestionCategorySchema,
|
|
@@ -16,18 +17,19 @@ export const ModerationSuggestionSchema = z.object({
|
|
|
16
17
|
export type ModerationSuggestion = z.infer<typeof ModerationSuggestionSchema>;
|
|
17
18
|
|
|
18
19
|
export const ModerationSchema = z.object({
|
|
20
|
+
aiSuggestions: z.array(ModerationSuggestionSchema).optional(),
|
|
21
|
+
assessedAt: z.custom<Timestamp>().optional(),
|
|
22
|
+
createdAt: z.custom<Timestamp>(),
|
|
19
23
|
id: z.string(),
|
|
20
|
-
|
|
21
|
-
userId: z.string(),
|
|
22
|
-
status: ModerationStatusSchema,
|
|
24
|
+
originalLocale: LocaleSchema,
|
|
23
25
|
priority: PrioritySchema,
|
|
24
26
|
qualityScore: z.number().min(0).max(1).optional(),
|
|
25
|
-
|
|
27
|
+
recipeId: z.string(),
|
|
26
28
|
rejectionReason: z.string().optional(),
|
|
27
|
-
createdAt: z.custom<Timestamp>(),
|
|
28
|
-
assessedAt: z.custom<Timestamp>().optional(),
|
|
29
|
-
reviewedBy: z.string().optional(),
|
|
30
29
|
reviewedAt: z.custom<Timestamp>().optional(),
|
|
30
|
+
reviewedBy: z.string().optional(),
|
|
31
|
+
status: ModerationStatusSchema,
|
|
32
|
+
userId: z.string(),
|
|
31
33
|
});
|
|
32
34
|
export type Moderation = z.infer<typeof ModerationSchema>;
|
|
33
35
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { Timestamp } from "firebase-admin/firestore";
|
|
2
|
+
import type { Timestamp } from "firebase-admin/firestore";
|
|
3
3
|
import {
|
|
4
4
|
AllergenSchema,
|
|
5
5
|
CuisineSchema,
|
|
@@ -37,11 +37,11 @@ export const RecipeMetaSchema = z.object({
|
|
|
37
37
|
deletedAt: z.custom<Timestamp>().optional(),
|
|
38
38
|
dietaryTags: z.array(DietaryTagSchema),
|
|
39
39
|
difficulty: DifficultySchema,
|
|
40
|
-
equipment: z.array(EquipmentMetaSchema).optional(),
|
|
40
|
+
equipment: z.array(EquipmentMetaSchema).max(30).optional(),
|
|
41
41
|
id: z.string(),
|
|
42
42
|
imageUrl: z.string().optional(),
|
|
43
|
-
ingredientSections: z.array(IngredientSectionMetaSchema).min(1),
|
|
44
|
-
instructions: z.array(InstructionMetaSchema).min(1),
|
|
43
|
+
ingredientSections: z.array(IngredientSectionMetaSchema).min(1).max(20),
|
|
44
|
+
instructions: z.array(InstructionMetaSchema).min(1).max(100),
|
|
45
45
|
mealTypes: z.array(MealTypeSchema).min(1),
|
|
46
46
|
nutrition: NutritionSchema.optional(),
|
|
47
47
|
originalLocale: LocaleSchema,
|
|
@@ -58,10 +58,10 @@ export type RecipeMeta = z.infer<typeof RecipeMetaSchema>;
|
|
|
58
58
|
export const RecipeContentSchema = z.object({
|
|
59
59
|
description: z.string().min(10).max(2000),
|
|
60
60
|
equipment: z.array(EquipmentContentSchema).optional(),
|
|
61
|
-
ingredientSections: z.array(IngredientSectionContentSchema).min(1),
|
|
62
|
-
instructions: z.array(InstructionContentSchema).min(1),
|
|
61
|
+
ingredientSections: z.array(IngredientSectionContentSchema).min(1).max(20),
|
|
62
|
+
instructions: z.array(InstructionContentSchema).min(1).max(100),
|
|
63
63
|
locale: LocaleSchema,
|
|
64
|
-
tips: z.array(z.string().max(500)).optional(),
|
|
64
|
+
tips: z.array(z.string().max(500)).max(20).optional(),
|
|
65
65
|
title: z.string().min(3).max(200),
|
|
66
66
|
});
|
|
67
67
|
export type RecipeContent = z.infer<typeof RecipeContentSchema>;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { Timestamp } from "firebase-admin/firestore";
|
|
3
|
+
|
|
4
|
+
export const REPORT_TYPE_VALUES = [
|
|
5
|
+
"auto_rejected",
|
|
6
|
+
"manual_rejected",
|
|
7
|
+
"repeated_violations",
|
|
8
|
+
"unsafe_generated",
|
|
9
|
+
"unsafe_upload",
|
|
10
|
+
"user_report",
|
|
11
|
+
] as const;
|
|
12
|
+
export const ReportTypeSchema = z.enum(REPORT_TYPE_VALUES);
|
|
13
|
+
export type ReportType = (typeof REPORT_TYPE_VALUES)[number];
|
|
14
|
+
|
|
15
|
+
export const REPORT_STATUS_VALUES = [
|
|
16
|
+
"escalated",
|
|
17
|
+
"pending",
|
|
18
|
+
"resolved",
|
|
19
|
+
"reviewed",
|
|
20
|
+
] as const;
|
|
21
|
+
export const ReportStatusSchema = z.enum(REPORT_STATUS_VALUES);
|
|
22
|
+
export type ReportStatus = (typeof REPORT_STATUS_VALUES)[number];
|
|
23
|
+
|
|
24
|
+
export const REPORT_PRIORITY_VALUES = [
|
|
25
|
+
"critical",
|
|
26
|
+
"high",
|
|
27
|
+
"low",
|
|
28
|
+
"medium",
|
|
29
|
+
] as const;
|
|
30
|
+
export const ReportPrioritySchema = z.enum(REPORT_PRIORITY_VALUES);
|
|
31
|
+
export type ReportPriority = (typeof REPORT_PRIORITY_VALUES)[number];
|
|
32
|
+
|
|
33
|
+
export const REPORT_TARGET_TYPE_VALUES = [
|
|
34
|
+
"image",
|
|
35
|
+
"profile",
|
|
36
|
+
"recipe",
|
|
37
|
+
"user",
|
|
38
|
+
] as const;
|
|
39
|
+
export const ReportTargetTypeSchema = z.enum(REPORT_TARGET_TYPE_VALUES);
|
|
40
|
+
export type ReportTargetType = (typeof REPORT_TARGET_TYPE_VALUES)[number];
|
|
41
|
+
|
|
42
|
+
export const ReportEvidenceSchema = z.object({
|
|
43
|
+
aiScore: z.number().min(0).max(1).optional(),
|
|
44
|
+
aiSuggestions: z.array(z.record(z.string(), z.unknown())).optional(),
|
|
45
|
+
contentSnapshot: z.string().optional(),
|
|
46
|
+
imageHashes: z.array(z.string()).optional(),
|
|
47
|
+
});
|
|
48
|
+
export type ReportEvidence = z.infer<typeof ReportEvidenceSchema>;
|
|
49
|
+
|
|
50
|
+
export const ReportSchema = z.object({
|
|
51
|
+
categories: z.array(z.string()),
|
|
52
|
+
createdAt: z.custom<Timestamp>(),
|
|
53
|
+
description: z.string(),
|
|
54
|
+
evidence: ReportEvidenceSchema.optional(),
|
|
55
|
+
id: z.string(),
|
|
56
|
+
notes: z.string().optional(),
|
|
57
|
+
priority: ReportPrioritySchema,
|
|
58
|
+
reason: z.string(),
|
|
59
|
+
reportedBy: z.string().optional(),
|
|
60
|
+
resolution: z.string().optional(),
|
|
61
|
+
reviewedAt: z.custom<Timestamp>().optional(),
|
|
62
|
+
reviewedBy: z.string().optional(),
|
|
63
|
+
status: ReportStatusSchema,
|
|
64
|
+
targetId: z.string(),
|
|
65
|
+
targetType: ReportTargetTypeSchema,
|
|
66
|
+
type: ReportTypeSchema,
|
|
67
|
+
updatedAt: z.custom<Timestamp>(),
|
|
68
|
+
userId: z.string(),
|
|
69
|
+
});
|
|
70
|
+
export type Report = z.infer<typeof ReportSchema>;
|
package/src/types/settings.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { Timestamp } from "firebase-admin/firestore";
|
|
3
|
-
import { AllergenSchema } from "
|
|
4
|
-
import { DietaryTagSchema } from "
|
|
5
|
-
import { CuisineSchema } from "
|
|
6
|
-
import { SpicinessSchema } from "
|
|
7
|
-
import { LocaleSchema } from "
|
|
8
|
-
import { TemperatureUnitSchema } from "
|
|
2
|
+
import type { Timestamp } from "firebase-admin/firestore";
|
|
3
|
+
import { AllergenSchema } from "./enums/allergen";
|
|
4
|
+
import { DietaryTagSchema } from "./enums/dietary_tag";
|
|
5
|
+
import { CuisineSchema } from "./enums/cuisine";
|
|
6
|
+
import { SpicinessSchema } from "./enums/spiciness";
|
|
7
|
+
import { LocaleSchema } from "./enums/locale";
|
|
8
|
+
import { TemperatureUnitSchema } from "./enums/temperature_unit";
|
|
9
9
|
|
|
10
10
|
export const MEASUREMENT_SYSTEM_VALUES = ["metric", "imperial"] as const;
|
|
11
11
|
export const MeasurementSystemSchema = z.enum(MEASUREMENT_SYSTEM_VALUES);
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { Timestamp } from "firebase-admin/firestore";
|
|
3
|
-
import { SubscriptionTierSchema } from "../enums";
|
|
4
|
-
|
|
5
|
-
export const SubscriptionSchema = z.object({
|
|
6
|
-
expiresAt: z.custom<Timestamp>(),
|
|
7
|
-
familyMembers: z.array(z.string()).max(3).optional(),
|
|
8
|
-
id: z.string(),
|
|
9
|
-
revenuecatId: z.string(),
|
|
10
|
-
tier: SubscriptionTierSchema,
|
|
11
|
-
updatedAt: z.custom<Timestamp>(),
|
|
12
|
-
});
|
|
13
|
-
export type Subscription = z.infer<typeof SubscriptionSchema>;
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|