@cravery/core 0.0.2 → 0.0.3

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 (100) hide show
  1. package/dist/config/ai.d.ts +3 -0
  2. package/dist/config/ai.d.ts.map +1 -0
  3. package/dist/config/ai.js +36 -0
  4. package/dist/config/ai.js.map +1 -0
  5. package/dist/config/index.d.ts +1 -0
  6. package/dist/config/index.d.ts.map +1 -1
  7. package/dist/config/index.js +1 -0
  8. package/dist/config/index.js.map +1 -1
  9. package/dist/enums/cuisine.d.ts +1 -1
  10. package/dist/enums/difficulty.d.ts +1 -1
  11. package/dist/enums/moderation_status.d.ts +1 -1
  12. package/dist/enums/priority.d.ts +1 -1
  13. package/dist/enums/profile_status.d.ts +2 -2
  14. package/dist/enums/recipe_source.d.ts +2 -2
  15. package/dist/enums/recipe_status.d.ts +2 -2
  16. package/dist/enums/role.d.ts +1 -1
  17. package/dist/enums/severity.d.ts +1 -1
  18. package/dist/enums/spiciness.d.ts +1 -1
  19. package/dist/enums/status.d.ts +2 -2
  20. package/dist/enums/unit.d.ts +5 -5
  21. package/dist/enums/user_status.d.ts +2 -2
  22. package/dist/lib/api.d.ts +18 -0
  23. package/dist/lib/api.d.ts.map +1 -0
  24. package/dist/lib/api.js +69 -0
  25. package/dist/lib/api.js.map +1 -0
  26. package/dist/lib/cost.d.ts +22 -0
  27. package/dist/lib/cost.d.ts.map +1 -0
  28. package/dist/lib/cost.js +45 -0
  29. package/dist/lib/cost.js.map +1 -0
  30. package/dist/lib/embedding.d.ts +4 -0
  31. package/dist/lib/embedding.d.ts.map +1 -0
  32. package/dist/lib/embedding.js +48 -0
  33. package/dist/lib/embedding.js.map +1 -0
  34. package/dist/lib/firebase.d.ts +3 -0
  35. package/dist/lib/firebase.d.ts.map +1 -0
  36. package/dist/lib/firebase.js +8 -0
  37. package/dist/lib/firebase.js.map +1 -0
  38. package/dist/lib/flow.d.ts +53 -0
  39. package/dist/lib/flow.d.ts.map +1 -0
  40. package/dist/lib/flow.js +60 -0
  41. package/dist/lib/flow.js.map +1 -0
  42. package/dist/lib/genkit.d.ts +4 -0
  43. package/dist/lib/genkit.d.ts.map +1 -0
  44. package/dist/lib/genkit.js +16 -0
  45. package/dist/lib/genkit.js.map +1 -0
  46. package/dist/lib/iam.d.ts +3 -0
  47. package/dist/lib/iam.d.ts.map +1 -0
  48. package/dist/lib/iam.js +57 -0
  49. package/dist/lib/iam.js.map +1 -0
  50. package/dist/lib/image.d.ts +7 -0
  51. package/dist/lib/image.d.ts.map +1 -0
  52. package/dist/lib/image.js +24 -0
  53. package/dist/lib/image.js.map +1 -0
  54. package/dist/lib/index.d.ts +9 -1
  55. package/dist/lib/index.d.ts.map +1 -1
  56. package/dist/lib/index.js +23 -0
  57. package/dist/lib/index.js.map +1 -1
  58. package/dist/lib/storage.d.ts +6 -0
  59. package/dist/lib/storage.d.ts.map +1 -0
  60. package/dist/lib/storage.js +34 -0
  61. package/dist/lib/storage.js.map +1 -0
  62. package/dist/types/ai/config.d.ts +2 -2
  63. package/dist/types/ai/config.d.ts.map +1 -1
  64. package/dist/types/ai/filters.d.ts +3 -3
  65. package/dist/types/ai/recipe.d.ts +10 -10
  66. package/dist/types/equipment.d.ts +2 -2
  67. package/dist/types/equipment.js +1 -1
  68. package/dist/types/error.d.ts +14 -0
  69. package/dist/types/error.d.ts.map +1 -0
  70. package/dist/types/error.js +40 -0
  71. package/dist/types/error.js.map +1 -0
  72. package/dist/types/index.d.ts +1 -0
  73. package/dist/types/index.d.ts.map +1 -1
  74. package/dist/types/index.js +1 -0
  75. package/dist/types/index.js.map +1 -1
  76. package/dist/types/ingredient.d.ts +24 -24
  77. package/dist/types/ingredient.js +1 -1
  78. package/dist/types/ingredient.js.map +1 -1
  79. package/dist/types/moderation.d.ts +5 -5
  80. package/dist/types/profile.d.ts +2 -2
  81. package/dist/types/recipe.d.ts +28 -28
  82. package/dist/types/user.d.ts +3 -3
  83. package/package.json +2 -2
  84. package/src/config/ai.ts +34 -0
  85. package/src/config/index.ts +1 -0
  86. package/src/lib/api.ts +90 -0
  87. package/src/lib/cost.ts +72 -0
  88. package/src/lib/embedding.ts +53 -0
  89. package/src/lib/firebase.ts +5 -0
  90. package/src/lib/flow.ts +88 -0
  91. package/src/lib/genkit.ts +18 -0
  92. package/src/lib/iam.ts +22 -0
  93. package/src/lib/image.ts +28 -0
  94. package/src/lib/index.ts +9 -0
  95. package/src/lib/storage.ts +42 -0
  96. package/src/types/ai/config.ts +3 -2
  97. package/src/types/equipment.ts +1 -1
  98. package/src/types/error.ts +43 -0
  99. package/src/types/index.ts +1 -0
  100. package/src/types/ingredient.ts +1 -1
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createImagenFlow = exports.createGeminiFlow = exports.ImagenOutputSchema = void 0;
4
+ const genkit_1 = require("genkit");
5
+ const ai_1 = require("../config/ai");
6
+ const cost_1 = require("./cost");
7
+ const genkit_2 = require("./genkit");
8
+ const storage_1 = require("./storage");
9
+ exports.ImagenOutputSchema = genkit_1.z.object({
10
+ images: genkit_1.z.array(genkit_1.z.object({
11
+ url: genkit_1.z.string(),
12
+ path: genkit_1.z.string(),
13
+ })),
14
+ });
15
+ const createGeminiFlow = (name, inputSchema, outputSchema, handler, model = ai_1.AI_MODELS.Gemini25Flash) => {
16
+ const FlowInputSchema = genkit_2.ai.defineSchema(`${name}InputSchema`, inputSchema);
17
+ const FlowOutputSchema = genkit_2.ai.defineSchema(`${name}OutputSchema`, outputSchema);
18
+ const prompt = genkit_2.ai.prompt(name);
19
+ return genkit_2.ai.defineFlow({
20
+ name: name,
21
+ inputSchema: inputSchema,
22
+ outputSchema: outputSchema,
23
+ }, async (input) => {
24
+ var _a, _b;
25
+ const response = await prompt(input);
26
+ (0, cost_1.logAIUsage)({
27
+ type: "multimodal",
28
+ flowName: name,
29
+ model,
30
+ inputTokens: ((_a = response.usage) === null || _a === void 0 ? void 0 : _a.inputTokens) || 0,
31
+ outputTokens: ((_b = response.usage) === null || _b === void 0 ? void 0 : _b.outputTokens) || 0,
32
+ });
33
+ return handler(input, response.output);
34
+ });
35
+ };
36
+ exports.createGeminiFlow = createGeminiFlow;
37
+ const createImagenFlow = (name, inputSchema, handler, model = ai_1.AI_MODELS.Imagen4Fast) => {
38
+ return genkit_2.ai.defineFlow({
39
+ name: name,
40
+ inputSchema: inputSchema,
41
+ outputSchema: exports.ImagenOutputSchema,
42
+ }, async (input) => {
43
+ const imageData = await handler(input, name);
44
+ const uploadPromises = imageData.map(({ base64Data, storagePath }) => (0, storage_1.uploadImageToStorage)(base64Data, storagePath).catch((err) => {
45
+ throw err;
46
+ }));
47
+ const uploadedImages = await Promise.all(uploadPromises);
48
+ (0, cost_1.logAIUsage)({
49
+ type: "image",
50
+ flowName: name,
51
+ model,
52
+ imageCount: imageData.length,
53
+ });
54
+ return {
55
+ images: uploadedImages,
56
+ };
57
+ });
58
+ };
59
+ exports.createImagenFlow = createImagenFlow;
60
+ //# sourceMappingURL=flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow.js","sourceRoot":"","sources":["../../src/lib/flow.ts"],"names":[],"mappings":";;;AAAA,mCAA2B;AAC3B,qCAAyC;AACzC,iCAAoC;AACpC,qCAA8B;AAC9B,uCAAiD;AAGpC,QAAA,kBAAkB,GAAG,UAAC,CAAC,MAAM,CAAC;IACzC,MAAM,EAAE,UAAC,CAAC,KAAK,CACb,UAAC,CAAC,MAAM,CAAC;QACP,GAAG,EAAE,UAAC,CAAC,MAAM,EAAE;QACf,IAAI,EAAE,UAAC,CAAC,MAAM,EAAE;KACjB,CAAC,CACH;CACF,CAAC,CAAC;AAOI,MAAM,gBAAgB,GAAG,CAC9B,IAAY,EACZ,WAA2B,EAC3B,YAA4B,EAC5B,OAA0B,EAC1B,QAAuB,cAAS,CAAC,aAAa,EAC9C,EAAE;IACF,MAAM,eAAe,GAAG,WAAE,CAAC,YAAY,CAAC,GAAG,IAAI,aAAa,EAAE,WAAW,CAAC,CAAC;IAC3E,MAAM,gBAAgB,GAAG,WAAE,CAAC,YAAY,CAAC,GAAG,IAAI,cAAc,EAAE,YAAY,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG,WAAE,CAAC,MAAM,CAItB,IAAI,CAAC,CAAC;IAER,OAAO,WAAE,CAAC,UAAU,CAClB;QACE,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,WAAW;QACxB,YAAY,EAAE,YAAY;KAC3B,EACD,KAAK,EAAE,KAAQ,EAAE,EAAE;;QACjB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;QACrC,IAAA,iBAAU,EAAC;YACT,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,IAAI;YACd,KAAK;YACL,WAAW,EAAE,CAAA,MAAA,QAAQ,CAAC,KAAK,0CAAE,WAAW,KAAI,CAAC;YAC7C,YAAY,EAAE,CAAA,MAAA,QAAQ,CAAC,KAAK,0CAAE,YAAY,KAAI,CAAC;SAChD,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC,CACF,CAAC;AACJ,CAAC,CAAC;AAjCW,QAAA,gBAAgB,oBAiC3B;AAEK,MAAM,gBAAgB,GAAG,CAC9B,IAAY,EACZ,WAA2B,EAC3B,OAA4B,EAC5B,QAAuB,cAAS,CAAC,WAAW,EAC5C,EAAE;IACF,OAAO,WAAE,CAAC,UAAU,CAClB;QACE,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,WAAW;QACxB,YAAY,EAAE,0BAAkB;KACjC,EACD,KAAK,EAAE,KAAQ,EAAE,EAAE;QACjB,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7C,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,EAAE,CACnE,IAAA,8BAAoB,EAAC,UAAU,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAC1D,MAAM,GAAG,CAAC;QACZ,CAAC,CAAC,CACH,CAAC;QACF,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACzD,IAAA,iBAAU,EAAC;YACT,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,IAAI;YACd,KAAK;YACL,UAAU,EAAE,SAAS,CAAC,MAAM;SAC7B,CAAC,CAAC;QACH,OAAO;YACL,MAAM,EAAE,cAAc;SACvB,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC,CAAC;AA/BW,QAAA,gBAAgB,oBA+B3B"}
@@ -0,0 +1,4 @@
1
+ import { EmbedderReference } from "genkit";
2
+ export declare const ai: import("genkit").Genkit;
3
+ export declare const geminiEmbedding001: EmbedderReference;
4
+ //# sourceMappingURL=genkit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genkit.d.ts","sourceRoot":"","sources":["../../src/lib/genkit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAMnD,eAAO,MAAM,EAAE,yBAOb,CAAC;AAEH,eAAO,MAAM,kBAAkB,EAAE,iBAEhC,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.geminiEmbedding001 = exports.ai = void 0;
4
+ const genkit_1 = require("genkit");
5
+ const google_genai_1 = require("@genkit-ai/google-genai");
6
+ const projectId = process.env.GCLOUD_PROJECT || process.env.GCP_PROJECT || "canary-cravery";
7
+ exports.ai = (0, genkit_1.genkit)({
8
+ plugins: [
9
+ (0, google_genai_1.vertexAI)({
10
+ location: "us-central1",
11
+ projectId,
12
+ }),
13
+ ],
14
+ });
15
+ exports.geminiEmbedding001 = google_genai_1.vertexAI.embedder("gemini-embedding-001");
16
+ //# sourceMappingURL=genkit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genkit.js","sourceRoot":"","sources":["../../src/lib/genkit.ts"],"names":[],"mappings":";;;AAAA,mCAAmD;AACnD,0DAAmD;AAEnD,MAAM,SAAS,GACb,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,gBAAgB,CAAC;AAE/D,QAAA,EAAE,GAAG,IAAA,eAAM,EAAC;IACvB,OAAO,EAAE;QACP,IAAA,uBAAQ,EAAC;YACP,QAAQ,EAAE,aAAa;YACvB,SAAS;SACV,CAAC;KACH;CACF,CAAC,CAAC;AAEU,QAAA,kBAAkB,GAAsB,uBAAQ,CAAC,QAAQ,CACpE,sBAAsB,CACvB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const isAdmin: (uid: string) => Promise<boolean>;
2
+ export declare const isModerator: (uid: string) => Promise<boolean>;
3
+ //# sourceMappingURL=iam.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iam.d.ts","sourceRoot":"","sources":["../../src/lib/iam.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,OAAO,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,OAAO,CAG1D,CAAC;AAEF,eAAO,MAAM,WAAW,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,OAAO,CAG9D,CAAC"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.isModerator = exports.isAdmin = void 0;
37
+ const admin = __importStar(require("firebase-admin"));
38
+ const getUserRole = async (uid) => {
39
+ let role = "guest";
40
+ const userDoc = await admin.firestore().collection("users").doc(uid).get();
41
+ if (userDoc.exists) {
42
+ const userData = userDoc.data();
43
+ role = (userData === null || userData === void 0 ? void 0 : userData.role) || "user";
44
+ }
45
+ return role;
46
+ };
47
+ const isAdmin = async (uid) => {
48
+ const role = await getUserRole(uid);
49
+ return role === "admin";
50
+ };
51
+ exports.isAdmin = isAdmin;
52
+ const isModerator = async (uid) => {
53
+ const role = await getUserRole(uid);
54
+ return role === "admin" || role === "moderator";
55
+ };
56
+ exports.isModerator = isModerator;
57
+ //# sourceMappingURL=iam.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iam.js","sourceRoot":"","sources":["../../src/lib/iam.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAAwC;AAGxC,MAAM,WAAW,GAAG,KAAK,EAAE,GAAW,EAAiB,EAAE;IACvD,IAAI,IAAI,GAAS,OAAO,CAAC;IACzB,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAC3E,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,GAAG,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,KAAI,MAAM,CAAC;IAClC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEK,MAAM,OAAO,GAAG,KAAK,EAAE,GAAW,EAAoB,EAAE;IAC7D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO,IAAI,KAAK,OAAO,CAAC;AAC1B,CAAC,CAAC;AAHW,QAAA,OAAO,WAGlB;AAEK,MAAM,WAAW,GAAG,KAAK,EAAE,GAAW,EAAoB,EAAE;IACjE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,WAAW,CAAC;AAClD,CAAC,CAAC;AAHW,QAAA,WAAW,eAGtB"}
@@ -0,0 +1,7 @@
1
+ import type { GenerateResponse } from "genkit";
2
+ export interface ImageData {
3
+ base64: string;
4
+ contentType: string;
5
+ }
6
+ export declare const getImageData: (response: GenerateResponse) => ImageData;
7
+ //# sourceMappingURL=image.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/lib/image.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAG/C,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,YAAY,GAAI,UAAU,gBAAgB,KAAG,SAmBzD,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getImageData = void 0;
4
+ const types_1 = require("../types");
5
+ const getImageData = (response) => {
6
+ var _a;
7
+ const media = response.media;
8
+ if (!(media === null || media === void 0 ? void 0 : media.url)) {
9
+ throw new types_1.AIFlowError("model_error", "No image data in response", [
10
+ "Try with a different recipe description",
11
+ ]);
12
+ }
13
+ const url = media.url;
14
+ const contentType = (_a = media.contentType) !== null && _a !== void 0 ? _a : "image/png";
15
+ // Extract base64 from data URI if present
16
+ if (url.startsWith("data:")) {
17
+ const base64Part = url.split(",")[1];
18
+ if (base64Part)
19
+ return { base64: base64Part, contentType };
20
+ }
21
+ return { base64: url, contentType };
22
+ };
23
+ exports.getImageData = getImageData;
24
+ //# sourceMappingURL=image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/lib/image.ts"],"names":[],"mappings":";;;AACA,oCAAuC;AAOhC,MAAM,YAAY,GAAG,CAAC,QAA0B,EAAa,EAAE;;IACpE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;IAE7B,IAAI,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,GAAG,CAAA,EAAE,CAAC;QAChB,MAAM,IAAI,mBAAW,CAAC,aAAa,EAAE,2BAA2B,EAAE;YAChE,yCAAyC;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACtB,MAAM,WAAW,GAAG,MAAA,KAAK,CAAC,WAAW,mCAAI,WAAW,CAAC;IAErD,0CAA0C;IAC1C,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,UAAU;YAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;IAC7D,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;AACtC,CAAC,CAAC;AAnBW,QAAA,YAAY,gBAmBvB"}
@@ -1,2 +1,10 @@
1
- export {};
1
+ export * from "./api";
2
+ export * from "./cost";
3
+ export * from "./embedding";
4
+ export * from "./firebase";
5
+ export * from "./flow";
6
+ export * from "./genkit";
7
+ export * from "./iam";
8
+ export * from "./image";
9
+ export * from "./storage";
2
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC"}
package/dist/lib/index.js CHANGED
@@ -1,3 +1,26 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./api"), exports);
18
+ __exportStar(require("./cost"), exports);
19
+ __exportStar(require("./embedding"), exports);
20
+ __exportStar(require("./firebase"), exports);
21
+ __exportStar(require("./flow"), exports);
22
+ __exportStar(require("./genkit"), exports);
23
+ __exportStar(require("./iam"), exports);
24
+ __exportStar(require("./image"), exports);
25
+ __exportStar(require("./storage"), exports);
3
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB;AACtB,yCAAuB;AACvB,8CAA4B;AAC5B,6CAA2B;AAC3B,yCAAuB;AACvB,2CAAyB;AACzB,wCAAsB;AACtB,0CAAwB;AACxB,4CAA0B"}
@@ -0,0 +1,6 @@
1
+ export interface UploadImageResult {
2
+ url: string;
3
+ path: string;
4
+ }
5
+ export declare const uploadImageToStorage: (base64Data: string, path: string, contentType?: string) => Promise<UploadImageResult>;
6
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/lib/storage.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,oBAAoB,GAC/B,YAAY,MAAM,EAClB,MAAM,MAAM,EACZ,cAAa,MAAoB,KAChC,OAAO,CAAC,iBAAiB,CA8B3B,CAAC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.uploadImageToStorage = void 0;
4
+ const storage_1 = require("firebase-admin/storage");
5
+ const uploadImageToStorage = async (base64Data, path, contentType = "image/png") => {
6
+ try {
7
+ const bucket = (0, storage_1.getStorage)().bucket();
8
+ const buffer = Buffer.from(base64Data, "base64");
9
+ const file = bucket.file(path);
10
+ const fileExists = await file.exists();
11
+ if (fileExists[0]) {
12
+ await file.delete();
13
+ }
14
+ await file.save(buffer, {
15
+ metadata: {
16
+ contentType,
17
+ cacheControl: "public",
18
+ },
19
+ resumable: false,
20
+ });
21
+ const publicUrl = `https://storage.googleapis.com/${bucket.name}/${path}`;
22
+ return {
23
+ url: publicUrl,
24
+ path,
25
+ };
26
+ }
27
+ catch (_a) {
28
+ const uploadError = new Error("Image upload failed");
29
+ uploadError.name = "UPLOAD_FAILED";
30
+ throw uploadError;
31
+ }
32
+ };
33
+ exports.uploadImageToStorage = uploadImageToStorage;
34
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/lib/storage.ts"],"names":[],"mappings":";;;AAAA,oDAAoD;AAO7C,MAAM,oBAAoB,GAAG,KAAK,EACvC,UAAkB,EAClB,IAAY,EACZ,cAAsB,WAAW,EACL,EAAE;IAC9B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,oBAAU,GAAE,CAAC,MAAM,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACvC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACtB,CAAC;QAED,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACtB,QAAQ,EAAE;gBACR,WAAW;gBACX,YAAY,EAAE,QAAQ;aACvB;YACD,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,kCAAkC,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;QAE1E,OAAO;YACL,GAAG,EAAE,SAAS;YACd,IAAI;SACL,CAAC;IACJ,CAAC;IAAC,WAAM,CAAC;QACP,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACrD,WAAW,CAAC,IAAI,GAAG,eAAe,CAAC;QACnC,MAAM,WAAW,CAAC;IACpB,CAAC;AACH,CAAC,CAAC;AAlCW,QAAA,oBAAoB,wBAkC/B"}
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * AI model configuration, costs are in USD:
3
3
  * - multimodal: cost per 1,000,000 input/output tokens
4
- * - image: cost per image
4
+ * - image: cost per image (stored in cost.output)
5
5
  * - embedding: cost per 1,000 input tokens
6
6
  */
7
- export type AIModel = "Gemini25Flash" | "Gemini25Pro" | "Imagen4Fast" | "TextEmbedding005";
7
+ export type AIModel = "Gemini25Flash" | "Gemini25Pro" | "Gemini3Flash" | "Imagen4Fast" | "GeminiEmbedding001";
8
8
  export type AIModelType = "multimodal" | "image" | "embedding";
9
9
  export interface AIModelCost {
10
10
  input: number;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/types/ai/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GACf,eAAe,GACf,aAAa,GACb,aAAa,GACb,kBAAkB,CAAC;AACvB,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,OAAO,GAAG,WAAW,CAAC;AAE/D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/types/ai/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GACf,eAAe,GACf,aAAa,GACb,cAAc,GACd,aAAa,GACb,oBAAoB,CAAC;AACzB,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,OAAO,GAAG,WAAW,CAAC;AAE/D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC"}
@@ -1,7 +1,6 @@
1
1
  import { z } from "zod";
2
2
  export declare const RecipeFiltersSchema: z.ZodObject<{
3
3
  cuisines: z.ZodOptional<z.ZodArray<z.ZodEnum<{
4
- other: "other";
5
4
  african: "african";
6
5
  american: "american";
7
6
  brazilian: "brazilian";
@@ -34,6 +33,7 @@ export declare const RecipeFiltersSchema: z.ZodObject<{
34
33
  thai: "thai";
35
34
  turkish: "turkish";
36
35
  vietnamese: "vietnamese";
36
+ other: "other";
37
37
  }>>>;
38
38
  dietaryTags: z.ZodOptional<z.ZodArray<z.ZodEnum<{
39
39
  dairy_free: "dairy_free";
@@ -53,9 +53,9 @@ export declare const RecipeFiltersSchema: z.ZodObject<{
53
53
  vegetarian: "vegetarian";
54
54
  }>>>;
55
55
  difficulty: z.ZodOptional<z.ZodEnum<{
56
- advanced: "advanced";
57
56
  beginner: "beginner";
58
57
  intermediate: "intermediate";
58
+ advanced: "advanced";
59
59
  expert: "expert";
60
60
  }>>;
61
61
  excludeIngredients: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -71,8 +71,8 @@ export declare const RecipeFiltersSchema: z.ZodObject<{
71
71
  snack: "snack";
72
72
  }>>>;
73
73
  spiciness: z.ZodOptional<z.ZodEnum<{
74
- none: "none";
75
74
  medium: "medium";
75
+ none: "none";
76
76
  mild: "mild";
77
77
  hot: "hot";
78
78
  }>>;
@@ -17,7 +17,6 @@ export declare const AIRecipeSchema: z.ZodObject<{
17
17
  }>>;
18
18
  confidence: z.ZodNumber;
19
19
  cuisine: z.ZodEnum<{
20
- other: "other";
21
20
  african: "african";
22
21
  american: "american";
23
22
  brazilian: "brazilian";
@@ -50,6 +49,7 @@ export declare const AIRecipeSchema: z.ZodObject<{
50
49
  thai: "thai";
51
50
  turkish: "turkish";
52
51
  vietnamese: "vietnamese";
52
+ other: "other";
53
53
  }>;
54
54
  description: z.ZodString;
55
55
  dietaryTags: z.ZodArray<z.ZodEnum<{
@@ -70,30 +70,25 @@ export declare const AIRecipeSchema: z.ZodObject<{
70
70
  vegetarian: "vegetarian";
71
71
  }>>;
72
72
  difficulty: z.ZodEnum<{
73
- advanced: "advanced";
74
73
  beginner: "beginner";
75
74
  intermediate: "intermediate";
75
+ advanced: "advanced";
76
76
  expert: "expert";
77
77
  }>;
78
78
  equipment: z.ZodOptional<z.ZodArray<z.ZodObject<{
79
79
  name: z.ZodString;
80
80
  notes: z.ZodOptional<z.ZodString>;
81
81
  slug: z.ZodString;
82
- optional: z.ZodOptional<z.ZodBoolean>;
82
+ required: z.ZodOptional<z.ZodBoolean>;
83
83
  }, z.core.$strip>>>;
84
84
  ingredientSections: z.ZodArray<z.ZodObject<{
85
85
  ingredients: z.ZodArray<z.ZodObject<{
86
86
  name: z.ZodString;
87
87
  notes: z.ZodOptional<z.ZodString>;
88
88
  slug: z.ZodString;
89
- optional: z.ZodOptional<z.ZodBoolean>;
90
89
  quantity: z.ZodOptional<z.ZodNumber>;
90
+ required: z.ZodOptional<z.ZodBoolean>;
91
91
  unit: z.ZodOptional<z.ZodEnum<{
92
- slice: "slice";
93
- head: "head";
94
- g: "g";
95
- drop: "drop";
96
- quarter: "quarter";
97
92
  ml: "ml";
98
93
  l: "l";
99
94
  tsp: "tsp";
@@ -104,18 +99,22 @@ export declare const AIRecipeSchema: z.ZodObject<{
104
99
  quart: "quart";
105
100
  gallon: "gallon";
106
101
  mg: "mg";
102
+ g: "g";
107
103
  kg: "kg";
108
104
  oz: "oz";
109
105
  lb: "lb";
110
106
  piece: "piece";
111
107
  whole: "whole";
112
108
  half: "half";
109
+ quarter: "quarter";
110
+ slice: "slice";
113
111
  serving: "serving";
114
112
  clove: "clove";
115
113
  stalk: "stalk";
116
114
  sprig: "sprig";
117
115
  leaf: "leaf";
118
116
  bunch: "bunch";
117
+ head: "head";
119
118
  fillet: "fillet";
120
119
  stick: "stick";
121
120
  sheet: "sheet";
@@ -126,6 +125,7 @@ export declare const AIRecipeSchema: z.ZodObject<{
126
125
  handful: "handful";
127
126
  pinch: "pinch";
128
127
  dash: "dash";
128
+ drop: "drop";
129
129
  }>>;
130
130
  }, z.core.$strip>>;
131
131
  slug: z.ZodString;
@@ -166,8 +166,8 @@ export declare const AIRecipeSchema: z.ZodObject<{
166
166
  }, z.core.$strip>>;
167
167
  servings: z.ZodNumber;
168
168
  spiciness: z.ZodEnum<{
169
- none: "none";
170
169
  medium: "medium";
170
+ none: "none";
171
171
  mild: "mild";
172
172
  hot: "hot";
173
173
  }>;
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
2
  export declare const EquipmentMetaSchema: z.ZodObject<{
3
- optional: z.ZodOptional<z.ZodBoolean>;
3
+ required: z.ZodOptional<z.ZodBoolean>;
4
4
  slug: z.ZodString;
5
5
  }, z.core.$strip>;
6
6
  export type EquipmentMeta = z.infer<typeof EquipmentMetaSchema>;
@@ -14,7 +14,7 @@ export declare const EquipmentSchema: z.ZodObject<{
14
14
  name: z.ZodString;
15
15
  notes: z.ZodOptional<z.ZodString>;
16
16
  slug: z.ZodString;
17
- optional: z.ZodOptional<z.ZodBoolean>;
17
+ required: z.ZodOptional<z.ZodBoolean>;
18
18
  }, z.core.$strip>;
19
19
  export type Equipment = z.infer<typeof EquipmentSchema>;
20
20
  //# sourceMappingURL=equipment.d.ts.map
@@ -4,7 +4,7 @@ exports.EquipmentSchema = exports.EquipmentContentSchema = exports.EquipmentMeta
4
4
  const zod_1 = require("zod");
5
5
  const config_1 = require("../config");
6
6
  exports.EquipmentMetaSchema = zod_1.z.object({
7
- optional: zod_1.z.boolean().optional(),
7
+ required: zod_1.z.boolean().optional(),
8
8
  slug: zod_1.z.string().regex(config_1.SlugRegex),
9
9
  });
10
10
  exports.EquipmentContentSchema = zod_1.z.object({
@@ -0,0 +1,14 @@
1
+ export declare const AI_ERROR_CODE_VALUES: readonly ["hallucination_detected", "image_unclear", "impossible_constraint", "invalid_input", "invalid_url", "low_confidence", "model_error", "no_recipe_found", "nonsense_input", "rate_limit", "timeout", "translation_failed", "unsafe_input", "url_not_accessible"];
2
+ export type AIErrorCode = (typeof AI_ERROR_CODE_VALUES)[number];
3
+ export declare class AIFlowError extends Error {
4
+ readonly code: AIErrorCode;
5
+ readonly suggestions?: string[];
6
+ constructor(code: AIErrorCode, message: string, suggestions?: string[]);
7
+ toJSON(): {
8
+ name: string;
9
+ code: "hallucination_detected" | "image_unclear" | "impossible_constraint" | "invalid_input" | "invalid_url" | "low_confidence" | "model_error" | "no_recipe_found" | "nonsense_input" | "rate_limit" | "timeout" | "translation_failed" | "unsafe_input" | "url_not_accessible";
10
+ message: string;
11
+ suggestions: string[] | undefined;
12
+ };
13
+ }
14
+ //# sourceMappingURL=error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/types/error.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,0QAevB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,qBAAa,WAAY,SAAQ,KAAK;IACpC,SAAgB,IAAI,EAAE,WAAW,CAAC;IAClC,SAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;gBAE3B,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE;IAWtE,MAAM;;;;;;CAQP"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AIFlowError = exports.AI_ERROR_CODE_VALUES = void 0;
4
+ exports.AI_ERROR_CODE_VALUES = [
5
+ "hallucination_detected",
6
+ "image_unclear",
7
+ "impossible_constraint",
8
+ "invalid_input",
9
+ "invalid_url",
10
+ "low_confidence",
11
+ "model_error",
12
+ "no_recipe_found",
13
+ "nonsense_input",
14
+ "rate_limit",
15
+ "timeout",
16
+ "translation_failed",
17
+ "unsafe_input",
18
+ "url_not_accessible",
19
+ ];
20
+ class AIFlowError extends Error {
21
+ constructor(code, message, suggestions) {
22
+ super(message);
23
+ this.name = "AIFlowError";
24
+ this.code = code;
25
+ this.suggestions = suggestions;
26
+ if (Error.captureStackTrace) {
27
+ Error.captureStackTrace(this, AIFlowError);
28
+ }
29
+ }
30
+ toJSON() {
31
+ return {
32
+ name: this.name,
33
+ code: this.code,
34
+ message: this.message,
35
+ suggestions: this.suggestions,
36
+ };
37
+ }
38
+ }
39
+ exports.AIFlowError = AIFlowError;
40
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/types/error.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG;IAClC,wBAAwB;IACxB,eAAe;IACf,uBAAuB;IACvB,eAAe;IACf,aAAa;IACb,gBAAgB;IAChB,aAAa;IACb,iBAAiB;IACjB,gBAAgB;IAChB,YAAY;IACZ,SAAS;IACT,oBAAoB;IACpB,cAAc;IACd,oBAAoB;CACZ,CAAC;AAIX,MAAa,WAAY,SAAQ,KAAK;IAIpC,YAAY,IAAiB,EAAE,OAAe,EAAE,WAAsB;QACpE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAE/B,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC;IACJ,CAAC;CACF;AAvBD,kCAuBC"}
@@ -1,5 +1,6 @@
1
1
  export * from "./ai";
2
2
  export * from "./equipment";
3
+ export * from "./error";
3
4
  export * from "./ingredient";
4
5
  export * from "./instruction";
5
6
  export * from "./moderation";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,MAAM,CAAC;AACrB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,MAAM,CAAC;AACrB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC"}
@@ -16,6 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./ai"), exports);
18
18
  __exportStar(require("./equipment"), exports);
19
+ __exportStar(require("./error"), exports);
19
20
  __exportStar(require("./ingredient"), exports);
20
21
  __exportStar(require("./instruction"), exports);
21
22
  __exportStar(require("./moderation"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uCAAqB;AACrB,8CAA4B;AAC5B,+CAA6B;AAC7B,gDAA8B;AAC9B,+CAA6B;AAC7B,8CAA4B;AAC5B,4CAA0B;AAC1B,2CAAyB;AACzB,iDAA+B;AAC/B,gDAA8B;AAC9B,yCAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uCAAqB;AACrB,8CAA4B;AAC5B,0CAAwB;AACxB,+CAA6B;AAC7B,gDAA8B;AAC9B,+CAA6B;AAC7B,8CAA4B;AAC5B,4CAA0B;AAC1B,2CAAyB;AACzB,iDAA+B;AAC/B,gDAA8B;AAC9B,yCAAuB"}