@cravery/core 0.0.16 → 0.0.19

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.
Files changed (240) hide show
  1. package/dist/lib/ai/flow.d.ts +1 -1
  2. package/dist/lib/ai/flow.d.ts.map +1 -1
  3. package/dist/lib/ai/flow.js +11 -11
  4. package/dist/lib/ai/flow.js.map +1 -1
  5. package/dist/lib/api.d.ts +1 -1
  6. package/dist/lib/api.d.ts.map +1 -1
  7. package/dist/lib/api.js +2 -2
  8. package/dist/lib/api.js.map +1 -1
  9. package/dist/lib/utils/sanitize.d.ts +1 -1
  10. package/dist/lib/utils/sanitize.d.ts.map +1 -1
  11. package/dist/types/ai/recipe.d.ts +1 -1
  12. package/dist/types/ai/recipe.d.ts.map +1 -1
  13. package/dist/types/ai/recipe.js +14 -14
  14. package/dist/types/ai/recipe.js.map +1 -1
  15. package/dist/types/ai/translation.d.ts +1 -1
  16. package/dist/types/ai/translation.d.ts.map +1 -1
  17. package/dist/types/ai/translation.js +8 -8
  18. package/dist/types/ai/translation.js.map +1 -1
  19. package/dist/types/core/asset.d.ts +1 -1
  20. package/dist/types/core/asset.d.ts.map +1 -1
  21. package/dist/types/core/asset.js +6 -6
  22. package/dist/types/core/asset.js.map +1 -1
  23. package/dist/types/core/enums/image_type.d.ts +1 -1
  24. package/dist/types/core/enums/image_type.d.ts.map +1 -1
  25. package/dist/types/core/enums/image_type.js +2 -2
  26. package/dist/types/core/enums/image_type.js.map +1 -1
  27. package/dist/types/core/enums/locale.d.ts +1 -1
  28. package/dist/types/core/enums/locale.d.ts.map +1 -1
  29. package/dist/types/core/enums/locale.js +2 -2
  30. package/dist/types/core/enums/locale.js.map +1 -1
  31. package/dist/types/core/enums/measurement_system.d.ts +1 -1
  32. package/dist/types/core/enums/measurement_system.d.ts.map +1 -1
  33. package/dist/types/core/enums/measurement_system.js +2 -2
  34. package/dist/types/core/enums/measurement_system.js.map +1 -1
  35. package/dist/types/core/enums/theme.d.ts +1 -1
  36. package/dist/types/core/enums/theme.d.ts.map +1 -1
  37. package/dist/types/core/enums/theme.js +2 -2
  38. package/dist/types/core/enums/theme.js.map +1 -1
  39. package/dist/types/core/enums/url_type.d.ts +1 -1
  40. package/dist/types/core/enums/url_type.d.ts.map +1 -1
  41. package/dist/types/core/enums/url_type.js +2 -2
  42. package/dist/types/core/enums/url_type.js.map +1 -1
  43. package/dist/types/core/settings.d.ts +1 -1
  44. package/dist/types/core/settings.d.ts.map +1 -1
  45. package/dist/types/core/settings.js +14 -14
  46. package/dist/types/core/settings.js.map +1 -1
  47. package/dist/types/iam/enums/profile_status.d.ts +1 -1
  48. package/dist/types/iam/enums/profile_status.d.ts.map +1 -1
  49. package/dist/types/iam/enums/profile_status.js +2 -2
  50. package/dist/types/iam/enums/profile_status.js.map +1 -1
  51. package/dist/types/iam/enums/subscription_role.d.ts +1 -1
  52. package/dist/types/iam/enums/subscription_role.d.ts.map +1 -1
  53. package/dist/types/iam/enums/subscription_role.js +2 -2
  54. package/dist/types/iam/enums/subscription_role.js.map +1 -1
  55. package/dist/types/iam/enums/subscription_status.d.ts +1 -1
  56. package/dist/types/iam/enums/subscription_status.d.ts.map +1 -1
  57. package/dist/types/iam/enums/subscription_status.js +2 -2
  58. package/dist/types/iam/enums/subscription_status.js.map +1 -1
  59. package/dist/types/iam/enums/subscription_tier.d.ts +1 -1
  60. package/dist/types/iam/enums/subscription_tier.d.ts.map +1 -1
  61. package/dist/types/iam/enums/subscription_tier.js +2 -2
  62. package/dist/types/iam/enums/subscription_tier.js.map +1 -1
  63. package/dist/types/iam/enums/user_role.d.ts +1 -1
  64. package/dist/types/iam/enums/user_role.d.ts.map +1 -1
  65. package/dist/types/iam/enums/user_role.js +2 -2
  66. package/dist/types/iam/enums/user_role.js.map +1 -1
  67. package/dist/types/iam/enums/user_status.d.ts +1 -1
  68. package/dist/types/iam/enums/user_status.d.ts.map +1 -1
  69. package/dist/types/iam/enums/user_status.js +2 -2
  70. package/dist/types/iam/enums/user_status.js.map +1 -1
  71. package/dist/types/iam/profile.d.ts +1 -1
  72. package/dist/types/iam/profile.d.ts.map +1 -1
  73. package/dist/types/iam/profile.js +17 -17
  74. package/dist/types/iam/profile.js.map +1 -1
  75. package/dist/types/iam/subscription.d.ts +1 -1
  76. package/dist/types/iam/subscription.d.ts.map +1 -1
  77. package/dist/types/iam/subscription.js +11 -11
  78. package/dist/types/iam/subscription.js.map +1 -1
  79. package/dist/types/iam/user.d.ts +1 -1
  80. package/dist/types/iam/user.d.ts.map +1 -1
  81. package/dist/types/iam/user.js +10 -10
  82. package/dist/types/iam/user.js.map +1 -1
  83. package/dist/types/moderation/enums/moderation_status.d.ts +1 -1
  84. package/dist/types/moderation/enums/moderation_status.d.ts.map +1 -1
  85. package/dist/types/moderation/enums/moderation_status.js +2 -2
  86. package/dist/types/moderation/enums/moderation_status.js.map +1 -1
  87. package/dist/types/moderation/enums/priority.d.ts +1 -1
  88. package/dist/types/moderation/enums/priority.d.ts.map +1 -1
  89. package/dist/types/moderation/enums/priority.js +2 -2
  90. package/dist/types/moderation/enums/priority.js.map +1 -1
  91. package/dist/types/moderation/enums/severity.d.ts +1 -1
  92. package/dist/types/moderation/enums/severity.d.ts.map +1 -1
  93. package/dist/types/moderation/enums/severity.js +2 -2
  94. package/dist/types/moderation/enums/severity.js.map +1 -1
  95. package/dist/types/moderation/enums/suggestion_category.d.ts +1 -1
  96. package/dist/types/moderation/enums/suggestion_category.d.ts.map +1 -1
  97. package/dist/types/moderation/enums/suggestion_category.js +2 -2
  98. package/dist/types/moderation/enums/suggestion_category.js.map +1 -1
  99. package/dist/types/moderation/moderation.d.ts +1 -1
  100. package/dist/types/moderation/moderation.d.ts.map +1 -1
  101. package/dist/types/moderation/moderation.js +25 -25
  102. package/dist/types/moderation/moderation.js.map +1 -1
  103. package/dist/types/recipe/enums/allergen.d.ts +1 -1
  104. package/dist/types/recipe/enums/allergen.d.ts.map +1 -1
  105. package/dist/types/recipe/enums/allergen.js +2 -2
  106. package/dist/types/recipe/enums/allergen.js.map +1 -1
  107. package/dist/types/recipe/enums/cuisine.d.ts +1 -1
  108. package/dist/types/recipe/enums/cuisine.d.ts.map +1 -1
  109. package/dist/types/recipe/enums/cuisine.js +2 -2
  110. package/dist/types/recipe/enums/cuisine.js.map +1 -1
  111. package/dist/types/recipe/enums/dietary_tag.d.ts +1 -1
  112. package/dist/types/recipe/enums/dietary_tag.d.ts.map +1 -1
  113. package/dist/types/recipe/enums/dietary_tag.js +2 -2
  114. package/dist/types/recipe/enums/dietary_tag.js.map +1 -1
  115. package/dist/types/recipe/enums/difficulty.d.ts +1 -1
  116. package/dist/types/recipe/enums/difficulty.d.ts.map +1 -1
  117. package/dist/types/recipe/enums/difficulty.js +2 -2
  118. package/dist/types/recipe/enums/difficulty.js.map +1 -1
  119. package/dist/types/recipe/enums/meal_type.d.ts +1 -1
  120. package/dist/types/recipe/enums/meal_type.d.ts.map +1 -1
  121. package/dist/types/recipe/enums/meal_type.js +2 -2
  122. package/dist/types/recipe/enums/meal_type.js.map +1 -1
  123. package/dist/types/recipe/enums/recipe_source.d.ts +1 -1
  124. package/dist/types/recipe/enums/recipe_source.d.ts.map +1 -1
  125. package/dist/types/recipe/enums/recipe_source.js +2 -2
  126. package/dist/types/recipe/enums/recipe_source.js.map +1 -1
  127. package/dist/types/recipe/enums/recipe_status.d.ts +1 -1
  128. package/dist/types/recipe/enums/recipe_status.d.ts.map +1 -1
  129. package/dist/types/recipe/enums/recipe_status.js +2 -2
  130. package/dist/types/recipe/enums/recipe_status.js.map +1 -1
  131. package/dist/types/recipe/enums/spiciness.d.ts +1 -1
  132. package/dist/types/recipe/enums/spiciness.d.ts.map +1 -1
  133. package/dist/types/recipe/enums/spiciness.js +2 -2
  134. package/dist/types/recipe/enums/spiciness.js.map +1 -1
  135. package/dist/types/recipe/enums/temperature_unit.d.ts +1 -1
  136. package/dist/types/recipe/enums/temperature_unit.d.ts.map +1 -1
  137. package/dist/types/recipe/enums/temperature_unit.js +2 -2
  138. package/dist/types/recipe/enums/temperature_unit.js.map +1 -1
  139. package/dist/types/recipe/enums/unit.d.ts +1 -1
  140. package/dist/types/recipe/enums/unit.d.ts.map +1 -1
  141. package/dist/types/recipe/enums/unit.js +2 -2
  142. package/dist/types/recipe/enums/unit.js.map +1 -1
  143. package/dist/types/recipe/equipment.d.ts +1 -1
  144. package/dist/types/recipe/equipment.d.ts.map +1 -1
  145. package/dist/types/recipe/equipment.js +9 -9
  146. package/dist/types/recipe/equipment.js.map +1 -1
  147. package/dist/types/recipe/filters.d.ts +1 -1
  148. package/dist/types/recipe/filters.d.ts.map +1 -1
  149. package/dist/types/recipe/filters.js +8 -8
  150. package/dist/types/recipe/filters.js.map +1 -1
  151. package/dist/types/recipe/ingredient.d.ts +1 -1
  152. package/dist/types/recipe/ingredient.d.ts.map +1 -1
  153. package/dist/types/recipe/ingredient.js +21 -21
  154. package/dist/types/recipe/ingredient.js.map +1 -1
  155. package/dist/types/recipe/instruction.d.ts +1 -1
  156. package/dist/types/recipe/instruction.d.ts.map +1 -1
  157. package/dist/types/recipe/instruction.js +8 -8
  158. package/dist/types/recipe/instruction.js.map +1 -1
  159. package/dist/types/recipe/nutrition.d.ts +1 -1
  160. package/dist/types/recipe/nutrition.d.ts.map +1 -1
  161. package/dist/types/recipe/nutrition.js +11 -11
  162. package/dist/types/recipe/nutrition.js.map +1 -1
  163. package/dist/types/recipe/recipe.d.ts +1 -1
  164. package/dist/types/recipe/recipe.d.ts.map +1 -1
  165. package/dist/types/recipe/recipe.js +53 -53
  166. package/dist/types/recipe/recipe.js.map +1 -1
  167. package/dist/types/recipe/temperature.d.ts +1 -1
  168. package/dist/types/recipe/temperature.d.ts.map +1 -1
  169. package/dist/types/recipe/temperature.js +3 -3
  170. package/dist/types/recipe/temperature.js.map +1 -1
  171. package/dist/types/report/enums/report_priority.d.ts +1 -1
  172. package/dist/types/report/enums/report_priority.d.ts.map +1 -1
  173. package/dist/types/report/enums/report_priority.js +2 -2
  174. package/dist/types/report/enums/report_priority.js.map +1 -1
  175. package/dist/types/report/enums/report_status.d.ts +1 -1
  176. package/dist/types/report/enums/report_status.d.ts.map +1 -1
  177. package/dist/types/report/enums/report_status.js +2 -2
  178. package/dist/types/report/enums/report_status.js.map +1 -1
  179. package/dist/types/report/enums/report_target_type.d.ts +1 -1
  180. package/dist/types/report/enums/report_target_type.d.ts.map +1 -1
  181. package/dist/types/report/enums/report_target_type.js +2 -2
  182. package/dist/types/report/enums/report_target_type.js.map +1 -1
  183. package/dist/types/report/enums/report_type.d.ts +1 -1
  184. package/dist/types/report/enums/report_type.d.ts.map +1 -1
  185. package/dist/types/report/enums/report_type.js +2 -2
  186. package/dist/types/report/enums/report_type.js.map +1 -1
  187. package/dist/types/report/report.d.ts +1 -1
  188. package/dist/types/report/report.d.ts.map +1 -1
  189. package/dist/types/report/report.js +20 -20
  190. package/dist/types/report/report.js.map +1 -1
  191. package/package.json +56 -57
  192. package/src/lib/ai/flow.ts +89 -89
  193. package/src/lib/api.ts +103 -103
  194. package/src/lib/utils/sanitize.ts +38 -38
  195. package/src/types/ai/recipe.ts +34 -34
  196. package/src/types/ai/translation.ts +16 -16
  197. package/src/types/core/asset.ts +11 -11
  198. package/src/types/core/enums/image_type.ts +5 -5
  199. package/src/types/core/enums/locale.ts +5 -5
  200. package/src/types/core/enums/measurement_system.ts +5 -5
  201. package/src/types/core/enums/theme.ts +5 -5
  202. package/src/types/core/enums/url_type.ts +13 -13
  203. package/src/types/core/settings.ts +35 -35
  204. package/src/types/iam/enums/profile_status.ts +10 -10
  205. package/src/types/iam/enums/subscription_role.ts +5 -5
  206. package/src/types/iam/enums/subscription_status.ts +10 -10
  207. package/src/types/iam/enums/subscription_tier.ts +4 -4
  208. package/src/types/iam/enums/user_role.ts +11 -11
  209. package/src/types/iam/enums/user_status.ts +10 -10
  210. package/src/types/iam/profile.ts +26 -26
  211. package/src/types/iam/subscription.ts +27 -27
  212. package/src/types/iam/user.ts +17 -17
  213. package/src/types/moderation/enums/moderation_status.ts +9 -9
  214. package/src/types/moderation/enums/priority.ts +5 -5
  215. package/src/types/moderation/enums/severity.ts +5 -5
  216. package/src/types/moderation/enums/suggestion_category.ts +11 -11
  217. package/src/types/moderation/moderation.ts +50 -50
  218. package/src/types/recipe/enums/allergen.ts +19 -19
  219. package/src/types/recipe/enums/cuisine.ts +39 -39
  220. package/src/types/recipe/enums/dietary_tag.ts +21 -21
  221. package/src/types/recipe/enums/difficulty.ts +10 -10
  222. package/src/types/recipe/enums/meal_type.ts +14 -14
  223. package/src/types/recipe/enums/recipe_source.ts +5 -5
  224. package/src/types/recipe/enums/recipe_status.ts +12 -12
  225. package/src/types/recipe/enums/spiciness.ts +5 -5
  226. package/src/types/recipe/enums/temperature_unit.ts +5 -5
  227. package/src/types/recipe/enums/unit.ts +51 -51
  228. package/src/types/recipe/equipment.ts +21 -21
  229. package/src/types/recipe/filters.ts +20 -20
  230. package/src/types/recipe/ingredient.ts +46 -46
  231. package/src/types/recipe/instruction.ts +21 -21
  232. package/src/types/recipe/nutrition.ts +18 -18
  233. package/src/types/recipe/recipe.ts +109 -109
  234. package/src/types/recipe/temperature.ts +8 -8
  235. package/src/types/report/enums/report_priority.ts +10 -10
  236. package/src/types/report/enums/report_status.ts +10 -10
  237. package/src/types/report/enums/report_target_type.ts +10 -10
  238. package/src/types/report/enums/report_type.ts +12 -12
  239. package/src/types/report/report.ts +38 -38
  240. package/src/nul +0 -0
@@ -1,109 +1,109 @@
1
- import { z } from "zod";
2
- import type { Timestamp } from "firebase-admin/firestore";
3
- import { LocaleSchema } from "../core";
4
- import {
5
- AllergenSchema,
6
- CuisineSchema,
7
- DietaryTagSchema,
8
- DifficultySchema,
9
- MealTypeSchema,
10
- RecipeSourceSchema,
11
- RecipeStatusSchema,
12
- SpicinessSchema,
13
- } from "./enums";
14
- import {
15
- EquipmentContentSchema,
16
- EquipmentMetaSchema,
17
- EquipmentSchema,
18
- } from "./equipment";
19
- import {
20
- IngredientSectionContentSchema,
21
- IngredientSectionMetaSchema,
22
- IngredientSectionSchema,
23
- } from "./ingredient";
24
- import {
25
- InstructionContentSchema,
26
- InstructionMetaSchema,
27
- InstructionSchema,
28
- } from "./instruction";
29
- import { NutritionSchema } from "./nutrition";
30
-
31
- export const RecipeMetaSchema = z.object({
32
- allergens: z.array(AllergenSchema),
33
- confidence: z.number().min(0).max(1),
34
- createdAt: z.custom<Timestamp>(),
35
- createdBy: z.string(),
36
- cuisine: CuisineSchema,
37
- deletedAt: z.custom<Timestamp>().optional(),
38
- dietaryTags: z.array(DietaryTagSchema),
39
- difficulty: DifficultySchema,
40
- equipment: z.array(EquipmentMetaSchema).max(30).optional(),
41
- id: z.string(),
42
- imageUrl: z.string().optional(),
43
- ingredientSections: z.array(IngredientSectionMetaSchema).min(1).max(20),
44
- instructions: z.array(InstructionMetaSchema).min(1).max(100),
45
- mealTypes: z.array(MealTypeSchema).min(1),
46
- nutrition: NutritionSchema.optional(),
47
- originalLocale: LocaleSchema,
48
- servings: z.number().int().min(1).max(100),
49
- source: RecipeSourceSchema,
50
- sourceUrl: z.string().optional(),
51
- spiciness: SpicinessSchema,
52
- status: RecipeStatusSchema,
53
- time: z.number().int().min(1).max(1440),
54
- updatedAt: z.custom<Timestamp>(),
55
- });
56
- export type RecipeMeta = z.infer<typeof RecipeMetaSchema>;
57
-
58
- export const RecipeContentSchema = z.object({
59
- description: z.string().min(10).max(2000),
60
- equipment: z.array(EquipmentContentSchema).optional(),
61
- ingredientSections: z.array(IngredientSectionContentSchema).min(1).max(20),
62
- instructions: z.array(InstructionContentSchema).min(1).max(100),
63
- locale: LocaleSchema,
64
- tips: z.array(z.string().max(500)).max(20).optional(),
65
- title: z.string().min(3).max(200),
66
- });
67
- export type RecipeContent = z.infer<typeof RecipeContentSchema>;
68
-
69
- export const RecipeSchema = z.object({
70
- allergens: z.array(AllergenSchema),
71
- confidence: z.number().min(0).max(1),
72
- createdAt: z.custom<Timestamp>(),
73
- createdBy: z.string(),
74
- cuisine: CuisineSchema,
75
- deletedAt: z.custom<Timestamp>().optional(),
76
- description: z.string().min(10).max(2000),
77
- dietaryTags: z.array(DietaryTagSchema),
78
- difficulty: DifficultySchema,
79
- equipment: z.array(EquipmentSchema).optional(),
80
- id: z.string(),
81
- imageUrl: z.string().optional(),
82
- ingredientSections: z.array(IngredientSectionSchema).min(1),
83
- instructions: z.array(InstructionSchema).min(1),
84
- locale: LocaleSchema,
85
- mealTypes: z.array(MealTypeSchema).min(1),
86
- nutrition: NutritionSchema.optional(),
87
- originalLocale: LocaleSchema,
88
- servings: z.number().int().min(1).max(100),
89
- source: RecipeSourceSchema,
90
- sourceUrl: z.string().optional(),
91
- spiciness: SpicinessSchema,
92
- status: RecipeStatusSchema,
93
- time: z.number().int().min(1).max(1440),
94
- tips: z.array(z.string().max(500)).optional(),
95
- title: z.string().min(3).max(200),
96
- updatedAt: z.custom<Timestamp>(),
97
- });
98
- export type Recipe = z.infer<typeof RecipeSchema>;
99
-
100
- export const RecipeStatsSchema = z.object({
101
- comments: z.number().int().nonnegative(),
102
- likes: z.number().int().nonnegative(),
103
- rating: z.number().min(0).max(5),
104
- ratingCount: z.number().int().nonnegative(),
105
- saves: z.number().int().nonnegative(),
106
- updatedAt: z.number().int(),
107
- views: z.number().int().nonnegative(),
108
- });
109
- export type RecipeStats = z.infer<typeof RecipeStatsSchema>;
1
+ import { z } from "genkit";
2
+ import type { Timestamp } from "firebase-admin/firestore";
3
+ import { LocaleSchema } from "../core";
4
+ import {
5
+ AllergenSchema,
6
+ CuisineSchema,
7
+ DietaryTagSchema,
8
+ DifficultySchema,
9
+ MealTypeSchema,
10
+ RecipeSourceSchema,
11
+ RecipeStatusSchema,
12
+ SpicinessSchema,
13
+ } from "./enums";
14
+ import {
15
+ EquipmentContentSchema,
16
+ EquipmentMetaSchema,
17
+ EquipmentSchema,
18
+ } from "./equipment";
19
+ import {
20
+ IngredientSectionContentSchema,
21
+ IngredientSectionMetaSchema,
22
+ IngredientSectionSchema,
23
+ } from "./ingredient";
24
+ import {
25
+ InstructionContentSchema,
26
+ InstructionMetaSchema,
27
+ InstructionSchema,
28
+ } from "./instruction";
29
+ import { NutritionSchema } from "./nutrition";
30
+
31
+ export const RecipeMetaSchema = z.object({
32
+ allergens: z.array(AllergenSchema),
33
+ confidence: z.number().min(0).max(1),
34
+ createdAt: z.custom<Timestamp>(),
35
+ createdBy: z.string(),
36
+ cuisine: CuisineSchema,
37
+ deletedAt: z.custom<Timestamp>().optional(),
38
+ dietaryTags: z.array(DietaryTagSchema),
39
+ difficulty: DifficultySchema,
40
+ equipment: z.array(EquipmentMetaSchema).max(30).optional(),
41
+ id: z.string(),
42
+ imageUrl: z.string().optional(),
43
+ ingredientSections: z.array(IngredientSectionMetaSchema).min(1).max(20),
44
+ instructions: z.array(InstructionMetaSchema).min(1).max(100),
45
+ mealTypes: z.array(MealTypeSchema).min(1),
46
+ nutrition: NutritionSchema.optional(),
47
+ originalLocale: LocaleSchema,
48
+ servings: z.number().int().min(1).max(100),
49
+ source: RecipeSourceSchema,
50
+ sourceUrl: z.string().optional(),
51
+ spiciness: SpicinessSchema,
52
+ status: RecipeStatusSchema,
53
+ time: z.number().int().min(1).max(1440),
54
+ updatedAt: z.custom<Timestamp>(),
55
+ });
56
+ export type RecipeMeta = z.infer<typeof RecipeMetaSchema>;
57
+
58
+ export const RecipeContentSchema = z.object({
59
+ description: z.string().min(10).max(2000),
60
+ equipment: z.array(EquipmentContentSchema).optional(),
61
+ ingredientSections: z.array(IngredientSectionContentSchema).min(1).max(20),
62
+ instructions: z.array(InstructionContentSchema).min(1).max(100),
63
+ locale: LocaleSchema,
64
+ tips: z.array(z.string().max(500)).max(20).optional(),
65
+ title: z.string().min(3).max(200),
66
+ });
67
+ export type RecipeContent = z.infer<typeof RecipeContentSchema>;
68
+
69
+ export const RecipeSchema = z.object({
70
+ allergens: z.array(AllergenSchema),
71
+ confidence: z.number().min(0).max(1),
72
+ createdAt: z.custom<Timestamp>(),
73
+ createdBy: z.string(),
74
+ cuisine: CuisineSchema,
75
+ deletedAt: z.custom<Timestamp>().optional(),
76
+ description: z.string().min(10).max(2000),
77
+ dietaryTags: z.array(DietaryTagSchema),
78
+ difficulty: DifficultySchema,
79
+ equipment: z.array(EquipmentSchema).optional(),
80
+ id: z.string(),
81
+ imageUrl: z.string().optional(),
82
+ ingredientSections: z.array(IngredientSectionSchema).min(1),
83
+ instructions: z.array(InstructionSchema).min(1),
84
+ locale: LocaleSchema,
85
+ mealTypes: z.array(MealTypeSchema).min(1),
86
+ nutrition: NutritionSchema.optional(),
87
+ originalLocale: LocaleSchema,
88
+ servings: z.number().int().min(1).max(100),
89
+ source: RecipeSourceSchema,
90
+ sourceUrl: z.string().optional(),
91
+ spiciness: SpicinessSchema,
92
+ status: RecipeStatusSchema,
93
+ time: z.number().int().min(1).max(1440),
94
+ tips: z.array(z.string().max(500)).optional(),
95
+ title: z.string().min(3).max(200),
96
+ updatedAt: z.custom<Timestamp>(),
97
+ });
98
+ export type Recipe = z.infer<typeof RecipeSchema>;
99
+
100
+ export const RecipeStatsSchema = z.object({
101
+ comments: z.number().int().nonnegative(),
102
+ likes: z.number().int().nonnegative(),
103
+ rating: z.number().min(0).max(5),
104
+ ratingCount: z.number().int().nonnegative(),
105
+ saves: z.number().int().nonnegative(),
106
+ updatedAt: z.number().int(),
107
+ views: z.number().int().nonnegative(),
108
+ });
109
+ export type RecipeStats = z.infer<typeof RecipeStatsSchema>;
@@ -1,8 +1,8 @@
1
- import { z } from "zod";
2
- import { TemperatureUnitSchema } from "./enums";
3
-
4
- export const TemperatureSchema = z.object({
5
- unit: TemperatureUnitSchema,
6
- value: z.number().min(-50).max(1000),
7
- });
8
- export type Temperature = z.infer<typeof TemperatureSchema>;
1
+ import { z } from "genkit";
2
+ import { TemperatureUnitSchema } from "./enums";
3
+
4
+ export const TemperatureSchema = z.object({
5
+ unit: TemperatureUnitSchema,
6
+ value: z.number().min(-50).max(1000),
7
+ });
8
+ export type Temperature = z.infer<typeof TemperatureSchema>;
@@ -1,10 +1,10 @@
1
- import { z } from "zod";
2
-
3
- export const REPORT_PRIORITY_VALUES = [
4
- "critical",
5
- "high",
6
- "low",
7
- "medium",
8
- ] as const;
9
- export const ReportPrioritySchema = z.enum(REPORT_PRIORITY_VALUES);
10
- export type ReportPriority = (typeof REPORT_PRIORITY_VALUES)[number];
1
+ import { z } from "genkit";
2
+
3
+ export const REPORT_PRIORITY_VALUES = [
4
+ "critical",
5
+ "high",
6
+ "low",
7
+ "medium",
8
+ ] as const;
9
+ export const ReportPrioritySchema = z.enum(REPORT_PRIORITY_VALUES);
10
+ export type ReportPriority = (typeof REPORT_PRIORITY_VALUES)[number];
@@ -1,10 +1,10 @@
1
- import { z } from "zod";
2
-
3
- export const REPORT_STATUS_VALUES = [
4
- "escalated",
5
- "pending",
6
- "resolved",
7
- "reviewed",
8
- ] as const;
9
- export const ReportStatusSchema = z.enum(REPORT_STATUS_VALUES);
10
- export type ReportStatus = (typeof REPORT_STATUS_VALUES)[number];
1
+ import { z } from "genkit";
2
+
3
+ export const REPORT_STATUS_VALUES = [
4
+ "escalated",
5
+ "pending",
6
+ "resolved",
7
+ "reviewed",
8
+ ] as const;
9
+ export const ReportStatusSchema = z.enum(REPORT_STATUS_VALUES);
10
+ export type ReportStatus = (typeof REPORT_STATUS_VALUES)[number];
@@ -1,10 +1,10 @@
1
- import { z } from "zod";
2
-
3
- export const REPORT_TARGET_TYPE_VALUES = [
4
- "image",
5
- "profile",
6
- "recipe",
7
- "user",
8
- ] as const;
9
- export const ReportTargetTypeSchema = z.enum(REPORT_TARGET_TYPE_VALUES);
10
- export type ReportTargetType = (typeof REPORT_TARGET_TYPE_VALUES)[number];
1
+ import { z } from "genkit";
2
+
3
+ export const REPORT_TARGET_TYPE_VALUES = [
4
+ "image",
5
+ "profile",
6
+ "recipe",
7
+ "user",
8
+ ] as const;
9
+ export const ReportTargetTypeSchema = z.enum(REPORT_TARGET_TYPE_VALUES);
10
+ export type ReportTargetType = (typeof REPORT_TARGET_TYPE_VALUES)[number];
@@ -1,12 +1,12 @@
1
- import { z } from "zod";
2
-
3
- export const REPORT_TYPE_VALUES = [
4
- "auto_rejected",
5
- "manual_rejected",
6
- "repeated_violations",
7
- "unsafe_generated",
8
- "unsafe_upload",
9
- "user_report",
10
- ] as const;
11
- export const ReportTypeSchema = z.enum(REPORT_TYPE_VALUES);
12
- export type ReportType = (typeof REPORT_TYPE_VALUES)[number];
1
+ import { z } from "genkit";
2
+
3
+ export const REPORT_TYPE_VALUES = [
4
+ "auto_rejected",
5
+ "manual_rejected",
6
+ "repeated_violations",
7
+ "unsafe_generated",
8
+ "unsafe_upload",
9
+ "user_report",
10
+ ] as const;
11
+ export const ReportTypeSchema = z.enum(REPORT_TYPE_VALUES);
12
+ export type ReportType = (typeof REPORT_TYPE_VALUES)[number];
@@ -1,38 +1,38 @@
1
- import { z } from "zod";
2
- import type { Timestamp } from "firebase-admin/firestore";
3
- import {
4
- ReportPrioritySchema,
5
- ReportStatusSchema,
6
- ReportTargetTypeSchema,
7
- ReportTypeSchema,
8
- } from "./enums";
9
-
10
- export const ReportEvidenceSchema = z.object({
11
- aiScore: z.number().min(0).max(1).optional(),
12
- aiSuggestions: z.array(z.record(z.string(), z.unknown())).optional(),
13
- contentSnapshot: z.string().optional(),
14
- imageHashes: z.array(z.string()).optional(),
15
- });
16
- export type ReportEvidence = z.infer<typeof ReportEvidenceSchema>;
17
-
18
- export const ReportSchema = z.object({
19
- categories: z.array(z.string()),
20
- createdAt: z.custom<Timestamp>(),
21
- description: z.string(),
22
- evidence: ReportEvidenceSchema.optional(),
23
- id: z.string(),
24
- notes: z.string().optional(),
25
- priority: ReportPrioritySchema,
26
- reason: z.string(),
27
- reportedBy: z.string().optional(),
28
- resolution: z.string().optional(),
29
- reviewedAt: z.custom<Timestamp>().optional(),
30
- reviewedBy: z.string().optional(),
31
- status: ReportStatusSchema,
32
- targetId: z.string(),
33
- targetType: ReportTargetTypeSchema,
34
- type: ReportTypeSchema,
35
- updatedAt: z.custom<Timestamp>(),
36
- userId: z.string(),
37
- });
38
- export type Report = z.infer<typeof ReportSchema>;
1
+ import { z } from "genkit";
2
+ import type { Timestamp } from "firebase-admin/firestore";
3
+ import {
4
+ ReportPrioritySchema,
5
+ ReportStatusSchema,
6
+ ReportTargetTypeSchema,
7
+ ReportTypeSchema,
8
+ } from "./enums";
9
+
10
+ export const ReportEvidenceSchema = z.object({
11
+ aiScore: z.number().min(0).max(1).optional(),
12
+ aiSuggestions: z.array(z.record(z.string(), z.unknown())).optional(),
13
+ contentSnapshot: z.string().optional(),
14
+ imageHashes: z.array(z.string()).optional(),
15
+ });
16
+ export type ReportEvidence = z.infer<typeof ReportEvidenceSchema>;
17
+
18
+ export const ReportSchema = z.object({
19
+ categories: z.array(z.string()),
20
+ createdAt: z.custom<Timestamp>(),
21
+ description: z.string(),
22
+ evidence: ReportEvidenceSchema.optional(),
23
+ id: z.string(),
24
+ notes: z.string().optional(),
25
+ priority: ReportPrioritySchema,
26
+ reason: z.string(),
27
+ reportedBy: z.string().optional(),
28
+ resolution: z.string().optional(),
29
+ reviewedAt: z.custom<Timestamp>().optional(),
30
+ reviewedBy: z.string().optional(),
31
+ status: ReportStatusSchema,
32
+ targetId: z.string(),
33
+ targetType: ReportTargetTypeSchema,
34
+ type: ReportTypeSchema,
35
+ updatedAt: z.custom<Timestamp>(),
36
+ userId: z.string(),
37
+ });
38
+ export type Report = z.infer<typeof ReportSchema>;
package/src/nul DELETED
File without changes