@cravery/core 0.0.30 → 0.0.31

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 (215) hide show
  1. package/dist/config/ai.d.ts.map +1 -1
  2. package/dist/config/ai.js +0 -7
  3. package/dist/config/ai.js.map +1 -1
  4. package/dist/types/ai/config.d.ts +2 -3
  5. package/dist/types/ai/config.d.ts.map +1 -1
  6. package/dist/types/recipe/recipe.d.ts +0 -9
  7. package/dist/types/recipe/recipe.d.ts.map +1 -1
  8. package/package.json +45 -45
  9. package/src/config/ai.ts +39 -46
  10. package/src/types/ai/config.ts +28 -30
  11. package/src/types/recipe/recipe.ts +92 -108
  12. package/dist/lib/ai/cost.d.ts +0 -22
  13. package/dist/lib/ai/cost.d.ts.map +0 -1
  14. package/dist/lib/ai/cost.js +0 -55
  15. package/dist/lib/ai/cost.js.map +0 -1
  16. package/dist/lib/ai/embedding.d.ts +0 -5
  17. package/dist/lib/ai/embedding.d.ts.map +0 -1
  18. package/dist/lib/ai/embedding.js +0 -43
  19. package/dist/lib/ai/embedding.js.map +0 -1
  20. package/dist/lib/ai/errors.d.ts +0 -14
  21. package/dist/lib/ai/errors.d.ts.map +0 -1
  22. package/dist/lib/ai/errors.js +0 -40
  23. package/dist/lib/ai/errors.js.map +0 -1
  24. package/dist/lib/ai/flow.d.ts +0 -33
  25. package/dist/lib/ai/flow.d.ts.map +0 -1
  26. package/dist/lib/ai/flow.js +0 -97
  27. package/dist/lib/ai/flow.js.map +0 -1
  28. package/dist/lib/ai/genkit.d.ts +0 -5
  29. package/dist/lib/ai/genkit.d.ts.map +0 -1
  30. package/dist/lib/ai/genkit.js +0 -33
  31. package/dist/lib/ai/genkit.js.map +0 -1
  32. package/dist/lib/ai/image.d.ts +0 -7
  33. package/dist/lib/ai/image.d.ts.map +0 -1
  34. package/dist/lib/ai/image.js +0 -23
  35. package/dist/lib/ai/image.js.map +0 -1
  36. package/dist/lib/ai/index.d.ts +0 -7
  37. package/dist/lib/ai/index.d.ts.map +0 -1
  38. package/dist/lib/ai/index.js +0 -23
  39. package/dist/lib/ai/index.js.map +0 -1
  40. package/dist/lib/api.d.ts +0 -20
  41. package/dist/lib/api.d.ts.map +0 -1
  42. package/dist/lib/api.js +0 -79
  43. package/dist/lib/api.js.map +0 -1
  44. package/dist/lib/firebase.d.ts +0 -3
  45. package/dist/lib/firebase.d.ts.map +0 -1
  46. package/dist/lib/firebase.js +0 -8
  47. package/dist/lib/firebase.js.map +0 -1
  48. package/dist/lib/iam.d.ts +0 -6
  49. package/dist/lib/iam.d.ts.map +0 -1
  50. package/dist/lib/iam.js +0 -72
  51. package/dist/lib/iam.js.map +0 -1
  52. package/dist/lib/index.d.ts +0 -8
  53. package/dist/lib/index.d.ts.map +0 -1
  54. package/dist/lib/index.js +0 -24
  55. package/dist/lib/index.js.map +0 -1
  56. package/dist/lib/storage.d.ts +0 -6
  57. package/dist/lib/storage.d.ts.map +0 -1
  58. package/dist/lib/storage.js +0 -50
  59. package/dist/lib/storage.js.map +0 -1
  60. package/dist/lib/usage/index.d.ts +0 -2
  61. package/dist/lib/usage/index.d.ts.map +0 -1
  62. package/dist/lib/usage/index.js +0 -18
  63. package/dist/lib/usage/index.js.map +0 -1
  64. package/dist/lib/usage/usage.service.d.ts +0 -27
  65. package/dist/lib/usage/usage.service.d.ts.map +0 -1
  66. package/dist/lib/usage/usage.service.js +0 -131
  67. package/dist/lib/usage/usage.service.js.map +0 -1
  68. package/dist/lib/utils/index.d.ts +0 -3
  69. package/dist/lib/utils/index.d.ts.map +0 -1
  70. package/dist/lib/utils/index.js +0 -19
  71. package/dist/lib/utils/index.js.map +0 -1
  72. package/dist/lib/utils/sanitize.d.ts +0 -20
  73. package/dist/lib/utils/sanitize.d.ts.map +0 -1
  74. package/dist/lib/utils/sanitize.js +0 -40
  75. package/dist/lib/utils/sanitize.js.map +0 -1
  76. package/dist/lib/utils/slug.d.ts +0 -13
  77. package/dist/lib/utils/slug.d.ts.map +0 -1
  78. package/dist/lib/utils/slug.js +0 -33
  79. package/dist/lib/utils/slug.js.map +0 -1
  80. package/dist/types/core/enums/image_type.d.ts +0 -5
  81. package/dist/types/core/enums/image_type.d.ts.map +0 -1
  82. package/dist/types/core/enums/image_type.js +0 -7
  83. package/dist/types/core/enums/image_type.js.map +0 -1
  84. package/dist/types/core/enums/index.d.ts +0 -6
  85. package/dist/types/core/enums/index.d.ts.map +0 -1
  86. package/dist/types/core/enums/index.js +0 -22
  87. package/dist/types/core/enums/index.js.map +0 -1
  88. package/dist/types/core/enums/locale.d.ts +0 -5
  89. package/dist/types/core/enums/locale.d.ts.map +0 -1
  90. package/dist/types/core/enums/locale.js +0 -7
  91. package/dist/types/core/enums/locale.js.map +0 -1
  92. package/dist/types/core/enums/measurement_system.d.ts +0 -5
  93. package/dist/types/core/enums/measurement_system.d.ts.map +0 -1
  94. package/dist/types/core/enums/measurement_system.js +0 -7
  95. package/dist/types/core/enums/measurement_system.js.map +0 -1
  96. package/dist/types/core/enums/theme.d.ts +0 -5
  97. package/dist/types/core/enums/theme.d.ts.map +0 -1
  98. package/dist/types/core/enums/theme.js +0 -7
  99. package/dist/types/core/enums/theme.js.map +0 -1
  100. package/dist/types/core/enums/url_type.d.ts +0 -5
  101. package/dist/types/core/enums/url_type.d.ts.map +0 -1
  102. package/dist/types/core/enums/url_type.js +0 -15
  103. package/dist/types/core/enums/url_type.js.map +0 -1
  104. package/dist/types/iam/enums/index.d.ts +0 -7
  105. package/dist/types/iam/enums/index.d.ts.map +0 -1
  106. package/dist/types/iam/enums/index.js +0 -23
  107. package/dist/types/iam/enums/index.js.map +0 -1
  108. package/dist/types/iam/enums/profile_status.d.ts +0 -5
  109. package/dist/types/iam/enums/profile_status.d.ts.map +0 -1
  110. package/dist/types/iam/enums/profile_status.js +0 -12
  111. package/dist/types/iam/enums/profile_status.js.map +0 -1
  112. package/dist/types/iam/enums/subscription_role.d.ts +0 -5
  113. package/dist/types/iam/enums/subscription_role.d.ts.map +0 -1
  114. package/dist/types/iam/enums/subscription_role.js +0 -7
  115. package/dist/types/iam/enums/subscription_role.js.map +0 -1
  116. package/dist/types/iam/enums/subscription_status.d.ts +0 -5
  117. package/dist/types/iam/enums/subscription_status.d.ts.map +0 -1
  118. package/dist/types/iam/enums/subscription_status.js +0 -12
  119. package/dist/types/iam/enums/subscription_status.js.map +0 -1
  120. package/dist/types/iam/enums/subscription_tier.d.ts +0 -4
  121. package/dist/types/iam/enums/subscription_tier.d.ts.map +0 -1
  122. package/dist/types/iam/enums/subscription_tier.js +0 -6
  123. package/dist/types/iam/enums/subscription_tier.js.map +0 -1
  124. package/dist/types/iam/enums/user_role.d.ts +0 -5
  125. package/dist/types/iam/enums/user_role.d.ts.map +0 -1
  126. package/dist/types/iam/enums/user_role.js +0 -13
  127. package/dist/types/iam/enums/user_role.js.map +0 -1
  128. package/dist/types/iam/enums/user_status.d.ts +0 -5
  129. package/dist/types/iam/enums/user_status.d.ts.map +0 -1
  130. package/dist/types/iam/enums/user_status.js +0 -12
  131. package/dist/types/iam/enums/user_status.js.map +0 -1
  132. package/dist/types/moderation/enums/index.d.ts +0 -5
  133. package/dist/types/moderation/enums/index.d.ts.map +0 -1
  134. package/dist/types/moderation/enums/index.js +0 -21
  135. package/dist/types/moderation/enums/index.js.map +0 -1
  136. package/dist/types/moderation/enums/moderation_status.d.ts +0 -5
  137. package/dist/types/moderation/enums/moderation_status.d.ts.map +0 -1
  138. package/dist/types/moderation/enums/moderation_status.js +0 -11
  139. package/dist/types/moderation/enums/moderation_status.js.map +0 -1
  140. package/dist/types/moderation/enums/priority.d.ts +0 -5
  141. package/dist/types/moderation/enums/priority.d.ts.map +0 -1
  142. package/dist/types/moderation/enums/priority.js +0 -7
  143. package/dist/types/moderation/enums/priority.js.map +0 -1
  144. package/dist/types/moderation/enums/severity.d.ts +0 -5
  145. package/dist/types/moderation/enums/severity.d.ts.map +0 -1
  146. package/dist/types/moderation/enums/severity.js +0 -7
  147. package/dist/types/moderation/enums/severity.js.map +0 -1
  148. package/dist/types/moderation/enums/suggestion_category.d.ts +0 -5
  149. package/dist/types/moderation/enums/suggestion_category.d.ts.map +0 -1
  150. package/dist/types/moderation/enums/suggestion_category.js +0 -13
  151. package/dist/types/moderation/enums/suggestion_category.js.map +0 -1
  152. package/dist/types/recipe/enums/allergen.d.ts +0 -5
  153. package/dist/types/recipe/enums/allergen.d.ts.map +0 -1
  154. package/dist/types/recipe/enums/allergen.js +0 -21
  155. package/dist/types/recipe/enums/allergen.js.map +0 -1
  156. package/dist/types/recipe/enums/cuisine.d.ts +0 -5
  157. package/dist/types/recipe/enums/cuisine.d.ts.map +0 -1
  158. package/dist/types/recipe/enums/cuisine.js +0 -41
  159. package/dist/types/recipe/enums/cuisine.js.map +0 -1
  160. package/dist/types/recipe/enums/dietary_tag.d.ts +0 -5
  161. package/dist/types/recipe/enums/dietary_tag.d.ts.map +0 -1
  162. package/dist/types/recipe/enums/dietary_tag.js +0 -23
  163. package/dist/types/recipe/enums/dietary_tag.js.map +0 -1
  164. package/dist/types/recipe/enums/difficulty.d.ts +0 -5
  165. package/dist/types/recipe/enums/difficulty.d.ts.map +0 -1
  166. package/dist/types/recipe/enums/difficulty.js +0 -12
  167. package/dist/types/recipe/enums/difficulty.js.map +0 -1
  168. package/dist/types/recipe/enums/index.d.ts +0 -11
  169. package/dist/types/recipe/enums/index.d.ts.map +0 -1
  170. package/dist/types/recipe/enums/index.js +0 -27
  171. package/dist/types/recipe/enums/index.js.map +0 -1
  172. package/dist/types/recipe/enums/meal_type.d.ts +0 -5
  173. package/dist/types/recipe/enums/meal_type.d.ts.map +0 -1
  174. package/dist/types/recipe/enums/meal_type.js +0 -16
  175. package/dist/types/recipe/enums/meal_type.js.map +0 -1
  176. package/dist/types/recipe/enums/recipe_source.d.ts +0 -5
  177. package/dist/types/recipe/enums/recipe_source.d.ts.map +0 -1
  178. package/dist/types/recipe/enums/recipe_source.js +0 -7
  179. package/dist/types/recipe/enums/recipe_source.js.map +0 -1
  180. package/dist/types/recipe/enums/recipe_status.d.ts +0 -5
  181. package/dist/types/recipe/enums/recipe_status.d.ts.map +0 -1
  182. package/dist/types/recipe/enums/recipe_status.js +0 -14
  183. package/dist/types/recipe/enums/recipe_status.js.map +0 -1
  184. package/dist/types/recipe/enums/spiciness.d.ts +0 -5
  185. package/dist/types/recipe/enums/spiciness.d.ts.map +0 -1
  186. package/dist/types/recipe/enums/spiciness.js +0 -7
  187. package/dist/types/recipe/enums/spiciness.js.map +0 -1
  188. package/dist/types/recipe/enums/temperature_unit.d.ts +0 -5
  189. package/dist/types/recipe/enums/temperature_unit.d.ts.map +0 -1
  190. package/dist/types/recipe/enums/temperature_unit.js +0 -7
  191. package/dist/types/recipe/enums/temperature_unit.js.map +0 -1
  192. package/dist/types/recipe/enums/unit.d.ts +0 -5
  193. package/dist/types/recipe/enums/unit.d.ts.map +0 -1
  194. package/dist/types/recipe/enums/unit.js +0 -53
  195. package/dist/types/recipe/enums/unit.js.map +0 -1
  196. package/dist/types/report/enums/index.d.ts +0 -5
  197. package/dist/types/report/enums/index.d.ts.map +0 -1
  198. package/dist/types/report/enums/index.js +0 -21
  199. package/dist/types/report/enums/index.js.map +0 -1
  200. package/dist/types/report/enums/report_priority.d.ts +0 -5
  201. package/dist/types/report/enums/report_priority.d.ts.map +0 -1
  202. package/dist/types/report/enums/report_priority.js +0 -12
  203. package/dist/types/report/enums/report_priority.js.map +0 -1
  204. package/dist/types/report/enums/report_status.d.ts +0 -5
  205. package/dist/types/report/enums/report_status.d.ts.map +0 -1
  206. package/dist/types/report/enums/report_status.js +0 -12
  207. package/dist/types/report/enums/report_status.js.map +0 -1
  208. package/dist/types/report/enums/report_target_type.d.ts +0 -5
  209. package/dist/types/report/enums/report_target_type.d.ts.map +0 -1
  210. package/dist/types/report/enums/report_target_type.js +0 -12
  211. package/dist/types/report/enums/report_target_type.js.map +0 -1
  212. package/dist/types/report/enums/report_type.d.ts +0 -5
  213. package/dist/types/report/enums/report_type.d.ts.map +0 -1
  214. package/dist/types/report/enums/report_type.js +0 -14
  215. package/dist/types/report/enums/report_type.js.map +0 -1
@@ -1,43 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.storeEmbedding = exports.generateEmbedding = exports.recipesRetriever = void 0;
4
- const firestore_1 = require("firebase-admin/firestore");
5
- const firebase_1 = require("../firebase");
6
- const genkit_1 = require("./genkit");
7
- Object.defineProperty(exports, "recipesRetriever", { enumerable: true, get: function () { return genkit_1.recipesRetriever; } });
8
- const cost_1 = require("./cost");
9
- const ai_1 = require("../../config/ai");
10
- const types_1 = require("../../types");
11
- const generateEmbedding = async (text, flowName) => {
12
- var _a;
13
- if (text.length < 1 || text.length > 7500) {
14
- throw new types_1.ValidationError("Text must be between 1 and 7500 characters", {
15
- length: text.length,
16
- minLength: 1,
17
- maxLength: 7500,
18
- });
19
- }
20
- const response = await genkit_1.ai.embed({
21
- embedder: genkit_1.geminiEmbedding001,
22
- content: text,
23
- });
24
- (0, cost_1.logAIUsage)({
25
- type: "embedding",
26
- flowName,
27
- model: ai_1.AI_MODELS.GeminiEmbedding001,
28
- tokenCount: text.length,
29
- });
30
- return (_a = response[0]) === null || _a === void 0 ? void 0 : _a.embedding;
31
- };
32
- exports.generateEmbedding = generateEmbedding;
33
- const storeEmbedding = async (collection, docId, text, flowName, vectorField = "embedding") => {
34
- const embedding = await (0, exports.generateEmbedding)(text, flowName || `${collection}:embedding`);
35
- await firebase_1.firestore
36
- .collection(collection)
37
- .doc(docId)
38
- .update({
39
- [vectorField]: firestore_1.FieldValue.vector(embedding),
40
- });
41
- };
42
- exports.storeEmbedding = storeEmbedding;
43
- //# sourceMappingURL=embedding.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"embedding.js","sourceRoot":"","sources":["../../../src/lib/ai/embedding.ts"],"names":[],"mappings":";;;AAAA,wDAAsD;AACtD,0CAAwC;AACxC,qCAAoE;AAM3D,iGANwB,yBAAgB,OAMxB;AALzB,iCAAoC;AACpC,wCAA4C;AAC5C,uCAA8C;AAKvC,MAAM,iBAAiB,GAAG,KAAK,EAAE,IAAY,EAAE,QAAgB,EAAE,EAAE;;IACxE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;QAC1C,MAAM,IAAI,uBAAe,CAAC,4CAA4C,EAAE;YACtE,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,CAAC;YACZ,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,WAAE,CAAC,KAAK,CAAC;QAC9B,QAAQ,EAAE,2BAAkB;QAC5B,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IACH,IAAA,iBAAU,EAAC;QACT,IAAI,EAAE,WAAW;QACjB,QAAQ;QACR,KAAK,EAAE,cAAS,CAAC,kBAAkB;QACnC,UAAU,EAAE,IAAI,CAAC,MAAM;KACxB,CAAC,CAAC;IACH,OAAO,MAAA,QAAQ,CAAC,CAAC,CAAC,0CAAE,SAAS,CAAC;AAChC,CAAC,CAAC;AAnBW,QAAA,iBAAiB,qBAmB5B;AAEK,MAAM,cAAc,GAAG,KAAK,EACjC,UAAkB,EAClB,KAAa,EACb,IAAY,EACZ,QAAiB,EACjB,cAAsB,WAAW,EACjC,EAAE;IACF,MAAM,SAAS,GAAG,MAAM,IAAA,yBAAiB,EACvC,IAAI,EACJ,QAAQ,IAAI,GAAG,UAAU,YAAY,CACtC,CAAC;IACF,MAAM,oBAAS;SACZ,UAAU,CAAC,UAAU,CAAC;SACtB,GAAG,CAAC,KAAK,CAAC;SACV,MAAM,CAAC;QACN,CAAC,WAAW,CAAC,EAAE,sBAAU,CAAC,MAAM,CAAC,SAAS,CAAC;KAC5C,CAAC,CAAC;AACP,CAAC,CAAC;AAjBW,QAAA,cAAc,kBAiBzB"}
@@ -1,14 +0,0 @@
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: "low_confidence" | "no_recipe_found" | "hallucination_detected" | "image_unclear" | "impossible_constraint" | "invalid_input" | "invalid_url" | "model_error" | "nonsense_input" | "rate_limit" | "timeout" | "translation_failed" | "unsafe_input" | "url_not_accessible";
10
- message: string;
11
- suggestions: string[] | undefined;
12
- };
13
- }
14
- //# sourceMappingURL=errors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/lib/ai/errors.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"}
@@ -1,40 +0,0 @@
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=errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/lib/ai/errors.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,33 +0,0 @@
1
- import { z } from "genkit";
2
- import { ai } from "./genkit";
3
- import { AIModelConfig } from "../../types";
4
- export declare const ImagenOutputSchema: z.ZodObject<{
5
- images: z.ZodArray<z.ZodObject<{
6
- url: z.ZodString;
7
- path: z.ZodString;
8
- }, "strip", z.ZodTypeAny, {
9
- url: string;
10
- path: string;
11
- }, {
12
- url: string;
13
- path: string;
14
- }>, "many">;
15
- }, "strip", z.ZodTypeAny, {
16
- images: {
17
- url: string;
18
- path: string;
19
- }[];
20
- }, {
21
- images: {
22
- url: string;
23
- path: string;
24
- }[];
25
- }>;
26
- export type FlowHandler<T, R> = (input: T, output: R | null) => Promise<R>;
27
- export type ImageFlowHandler<T> = (input: T, prompt: string) => Promise<{
28
- base64Data: string;
29
- storagePath: string;
30
- }[]>;
31
- export declare const createGeminiFlow: <T, R>(name: string, inputSchema: z.ZodSchema<T>, outputSchema: z.ZodSchema<R>, handler: FlowHandler<T, R>, model?: AIModelConfig) => ReturnType<typeof ai.defineFlow>;
32
- export declare const createImagenFlow: <T>(name: string, inputSchema: z.ZodSchema<T>, handler: ImageFlowHandler<T>, model?: AIModelConfig) => ReturnType<typeof ai.defineFlow>;
33
- //# sourceMappingURL=flow.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"flow.d.ts","sourceRoot":"","sources":["../../../src/lib/ai/flow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAG3B,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAE9B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;EAO7B,CAAC;AAEH,MAAM,MAAM,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3E,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAChC,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,MAAM,KACX,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAAC;AAE5D,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAAE,CAAC,EACnC,MAAM,MAAM,EACZ,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAC3B,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAC5B,SAAS,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,QAAO,aAAuC,KAmDxC,UAAU,CAAC,OAAO,EAAE,CAAC,UAAU,CACtC,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAChC,MAAM,MAAM,EACZ,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAC3B,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAC5B,QAAO,aAAqC,KA+CtC,UAAU,CAAC,OAAO,EAAE,CAAC,UAAU,CACtC,CAAC"}
@@ -1,97 +0,0 @@
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
- // Lazy initialization - don't access ai until the flow is actually called
17
- let initialized = false;
18
- let FlowInputSchema;
19
- let FlowOutputSchema;
20
- let prompt;
21
- let flow;
22
- const initializeFlow = () => {
23
- if (!initialized) {
24
- if (!genkit_2.ai) {
25
- throw new Error("Genkit AI not initialized. Make sure Firebase Functions onInit has been called.");
26
- }
27
- FlowInputSchema = genkit_2.ai.defineSchema(`${name}InputSchema`, inputSchema);
28
- FlowOutputSchema = genkit_2.ai.defineSchema(`${name}OutputSchema`, outputSchema);
29
- prompt = genkit_2.ai.prompt(name);
30
- flow = genkit_2.ai.defineFlow({
31
- name: name,
32
- inputSchema: inputSchema,
33
- outputSchema: outputSchema,
34
- }, async (input) => {
35
- var _a, _b;
36
- const response = await prompt(input);
37
- (0, cost_1.logAIUsage)({
38
- type: "multimodal",
39
- flowName: name,
40
- model,
41
- inputTokens: ((_a = response.usage) === null || _a === void 0 ? void 0 : _a.inputTokens) || 0,
42
- outputTokens: ((_b = response.usage) === null || _b === void 0 ? void 0 : _b.outputTokens) || 0,
43
- });
44
- return handler(input, response.output);
45
- });
46
- initialized = true;
47
- }
48
- return flow;
49
- };
50
- // Return a proxy function that initializes on first call
51
- return (async (input) => {
52
- const actualFlow = initializeFlow();
53
- return actualFlow(input);
54
- });
55
- };
56
- exports.createGeminiFlow = createGeminiFlow;
57
- const createImagenFlow = (name, inputSchema, handler, model = ai_1.AI_MODELS.Imagen4Fast) => {
58
- // Lazy initialization - don't access ai until the flow is actually called
59
- let initialized = false;
60
- let flow;
61
- const initializeFlow = () => {
62
- if (!initialized) {
63
- if (!genkit_2.ai) {
64
- throw new Error("Genkit AI not initialized. Make sure Firebase Functions onInit has been called.");
65
- }
66
- flow = genkit_2.ai.defineFlow({
67
- name: name,
68
- inputSchema: inputSchema,
69
- outputSchema: exports.ImagenOutputSchema,
70
- }, async (input) => {
71
- const imageData = await handler(input, name);
72
- const uploadPromises = imageData.map(({ base64Data, storagePath }) => (0, storage_1.uploadImageToStorage)(base64Data, storagePath).catch((err) => {
73
- throw err;
74
- }));
75
- const uploadedImages = await Promise.all(uploadPromises);
76
- (0, cost_1.logAIUsage)({
77
- type: "image",
78
- flowName: name,
79
- model,
80
- imageCount: imageData.length,
81
- });
82
- return {
83
- images: uploadedImages,
84
- };
85
- });
86
- initialized = true;
87
- }
88
- return flow;
89
- };
90
- // Return a proxy function that initializes on first call
91
- return (async (input) => {
92
- const actualFlow = initializeFlow();
93
- return actualFlow(input);
94
- });
95
- };
96
- exports.createImagenFlow = createImagenFlow;
97
- //# sourceMappingURL=flow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"flow.js","sourceRoot":"","sources":["../../../src/lib/ai/flow.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import { EmbedderReference, Genkit } from "genkit";
2
- export declare let ai: Genkit;
3
- export declare let geminiEmbedding001: EmbedderReference;
4
- export declare let recipesRetriever: any;
5
- //# sourceMappingURL=genkit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"genkit.d.ts","sourceRoot":"","sources":["../../../src/lib/ai/genkit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,iBAAiB,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAU3D,eAAO,IAAI,EAAE,EAAE,MAAM,CAAC;AACtB,eAAO,IAAI,kBAAkB,EAAE,iBAAiB,CAAC;AACjD,eAAO,IAAI,gBAAgB,EAAE,GAAG,CAAC"}
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.recipesRetriever = exports.geminiEmbedding001 = exports.ai = void 0;
4
- const genkit_1 = require("genkit");
5
- const google_genai_1 = require("@genkit-ai/google-genai");
6
- const firebase_1 = require("@genkit-ai/firebase");
7
- const core_1 = require("firebase-functions/v2/core");
8
- const firebase_2 = require("../firebase");
9
- const projectId = process.env.GCLOUD_PROJECT || process.env.GCP_PROJECT || "canary-cravery";
10
- // Initialize during Firebase Functions init phase, not at module load
11
- (0, core_1.onInit)(() => {
12
- exports.ai = (0, genkit_1.genkit)({
13
- plugins: [
14
- (0, google_genai_1.vertexAI)({
15
- location: "us-central1",
16
- projectId,
17
- }),
18
- ],
19
- });
20
- exports.geminiEmbedding001 = google_genai_1.vertexAI.embedder("gemini-embedding-001");
21
- // Initialize retriever after ai is set up
22
- exports.recipesRetriever = (0, firebase_1.defineFirestoreRetriever)(exports.ai, {
23
- name: "recipesRetriever",
24
- firestore: firebase_2.firestore,
25
- collection: "recipes",
26
- contentField: "searchTerms",
27
- vectorField: "titleEmbedding",
28
- embedder: exports.geminiEmbedding001,
29
- distanceMeasure: "COSINE",
30
- distanceResultField: "distance",
31
- });
32
- });
33
- //# sourceMappingURL=genkit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"genkit.js","sourceRoot":"","sources":["../../../src/lib/ai/genkit.ts"],"names":[],"mappings":";;;AAAA,mCAA2D;AAC3D,0DAAmD;AACnD,kDAA+D;AAC/D,qDAAoD;AACpD,0CAAwC;AAExC,MAAM,SAAS,GACb,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,gBAAgB,CAAC;AAO5E,sEAAsE;AACtE,IAAA,aAAM,EAAC,GAAG,EAAE;IACV,UAAE,GAAG,IAAA,eAAM,EAAC;QACV,OAAO,EAAE;YACP,IAAA,uBAAQ,EAAC;gBACP,QAAQ,EAAE,aAAa;gBACvB,SAAS;aACV,CAAC;SACH;KACF,CAAC,CAAC;IAEH,0BAAkB,GAAG,uBAAQ,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;IAE/D,0CAA0C;IAC1C,wBAAgB,GAAG,IAAA,mCAAwB,EAAC,UAAE,EAAE;QAC9C,IAAI,EAAE,kBAAkB;QACxB,SAAS,EAAT,oBAAS;QACT,UAAU,EAAE,SAAS;QACrB,YAAY,EAAE,aAAa;QAC3B,WAAW,EAAE,gBAAgB;QAC7B,QAAQ,EAAE,0BAAkB;QAC5B,eAAe,EAAE,QAAQ;QACzB,mBAAmB,EAAE,UAAU;KAChC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,7 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../../src/lib/ai/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,SAkBzD,CAAC"}
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getImageData = void 0;
4
- const errors_1 = require("./errors");
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 errors_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
- if (url.startsWith("data:")) {
16
- const base64Part = url.split(",")[1];
17
- if (base64Part)
18
- return { base64: base64Part, contentType };
19
- }
20
- return { base64: url, contentType };
21
- };
22
- exports.getImageData = getImageData;
23
- //# sourceMappingURL=image.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"image.js","sourceRoot":"","sources":["../../../src/lib/ai/image.ts"],"names":[],"mappings":";;;AACA,qCAAuC;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,oBAAW,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,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;AAlBW,QAAA,YAAY,gBAkBvB"}
@@ -1,7 +0,0 @@
1
- export * from "./cost";
2
- export * from "./embedding";
3
- export * from "./errors";
4
- export * from "./flow";
5
- export * from "./genkit";
6
- export * from "./image";
7
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/ai/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
@@ -1,23 +0,0 @@
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
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./cost"), exports);
18
- __exportStar(require("./embedding"), exports);
19
- __exportStar(require("./errors"), exports);
20
- __exportStar(require("./flow"), exports);
21
- __exportStar(require("./genkit"), exports);
22
- __exportStar(require("./image"), exports);
23
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/ai/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,8CAA4B;AAC5B,2CAAyB;AACzB,yCAAuB;AACvB,2CAAyB;AACzB,0CAAwB"}
package/dist/lib/api.d.ts DELETED
@@ -1,20 +0,0 @@
1
- import { CallableRequest, CallableOptions } from "firebase-functions/v2/https";
2
- import { z } from "genkit";
3
- declare class CallableBuilder<T> {
4
- private schema;
5
- private requiresAuth;
6
- private requiresAdmin;
7
- private requiresModerator;
8
- private requiresTranslator;
9
- private options;
10
- constructor(schema: z.ZodSchema<T>);
11
- requireAdmin(): this;
12
- requireUser(): this;
13
- requireModerator(): this;
14
- requireTranslator(): this;
15
- withOptions(options: CallableOptions): this;
16
- handle<R>(handler: (data: T, request: CallableRequest) => Promise<R>): import("firebase-functions/v2/https").CallableFunction<any, Promise<R>, unknown>;
17
- }
18
- export declare const callable: <T>(schema: z.ZodSchema<T>) => CallableBuilder<T>;
19
- export {};
20
- //# sourceMappingURL=api.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,eAAe,EACf,eAAe,EAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAqB3B,cAAM,eAAe,CAAC,CAAC;IAOT,OAAO,CAAC,MAAM;IAN1B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,OAAO,CAAoC;gBAE/B,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAE1C,YAAY;IAMZ,WAAW;IAKX,gBAAgB;IAMhB,iBAAiB;IAMjB,WAAW,CAAC,OAAO,EAAE,eAAe;IAKpC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC;CAmCrE;AAED,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,uBACrB,CAAC"}
package/dist/lib/api.js DELETED
@@ -1,79 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.callable = void 0;
4
- const https_1 = require("firebase-functions/v2/https");
5
- const genkit_1 = require("genkit");
6
- const iam_1 = require("./iam");
7
- const DEFAULT_OPTIONS = { cors: true, enforceAppCheck: true };
8
- const handleError = (error) => {
9
- if (error instanceof genkit_1.z.ZodError) {
10
- throw new https_1.HttpsError("invalid-argument", `Validation failed: ${error.message}`);
11
- }
12
- if (error instanceof https_1.HttpsError) {
13
- throw error;
14
- }
15
- throw new https_1.HttpsError("internal", error instanceof Error ? error.message : "Unknown error");
16
- };
17
- class CallableBuilder {
18
- constructor(schema) {
19
- this.schema = schema;
20
- this.requiresAuth = false;
21
- this.requiresAdmin = false;
22
- this.requiresModerator = false;
23
- this.requiresTranslator = false;
24
- this.options = DEFAULT_OPTIONS;
25
- }
26
- requireAdmin() {
27
- this.requiresAuth = true;
28
- this.requiresAdmin = true;
29
- return this;
30
- }
31
- requireUser() {
32
- this.requiresAuth = true;
33
- return this;
34
- }
35
- requireModerator() {
36
- this.requiresAuth = true;
37
- this.requiresModerator = true;
38
- return this;
39
- }
40
- requireTranslator() {
41
- this.requiresAuth = true;
42
- this.requiresTranslator = true;
43
- return this;
44
- }
45
- withOptions(options) {
46
- this.options = Object.assign(Object.assign({}, DEFAULT_OPTIONS), options);
47
- return this;
48
- }
49
- handle(handler) {
50
- return (0, https_1.onCall)(this.options, async (request) => {
51
- if (this.requiresAuth && !request.auth) {
52
- throw new https_1.HttpsError("unauthenticated", "Authentication required");
53
- }
54
- if (request.auth) {
55
- const uid = request.auth.uid;
56
- if (this.requiresAdmin && !(await (0, iam_1.isAdmin)(uid))) {
57
- throw new https_1.HttpsError("permission-denied", "Admin access required");
58
- }
59
- else if (this.requiresModerator && !(await (0, iam_1.isModeratorOrAbove)(uid))) {
60
- throw new https_1.HttpsError("permission-denied", "Moderator access required");
61
- }
62
- else if (this.requiresTranslator &&
63
- !(await (0, iam_1.isTranslatorOrAbove)(uid))) {
64
- throw new https_1.HttpsError("permission-denied", "Translator access required");
65
- }
66
- }
67
- try {
68
- const data = this.schema.parse(request.data);
69
- return await handler(data, request);
70
- }
71
- catch (error) {
72
- throw handleError(error);
73
- }
74
- });
75
- }
76
- }
77
- const callable = (schema) => new CallableBuilder(schema);
78
- exports.callable = callable;
79
- //# sourceMappingURL=api.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export declare const firestore: Firestore;
2
- export declare const rtdb: import("firebase-admin/database").Database;
3
- //# sourceMappingURL=firebase.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"firebase.d.ts","sourceRoot":"","sources":["../../src/lib/firebase.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,SAAS,WAAiB,CAAC;AACxC,eAAO,MAAM,IAAI,4CAAgB,CAAC"}
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.rtdb = exports.firestore = void 0;
4
- const firestore_1 = require("firebase-admin/firestore");
5
- const database_1 = require("firebase-admin/database");
6
- exports.firestore = (0, firestore_1.getFirestore)();
7
- exports.rtdb = (0, database_1.getDatabase)();
8
- //# sourceMappingURL=firebase.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"firebase.js","sourceRoot":"","sources":["../../src/lib/firebase.ts"],"names":[],"mappings":";;;AAAA,wDAAwD;AACxD,sDAAsD;AAEzC,QAAA,SAAS,GAAG,IAAA,wBAAY,GAAE,CAAC;AAC3B,QAAA,IAAI,GAAG,IAAA,sBAAW,GAAE,CAAC"}
package/dist/lib/iam.d.ts DELETED
@@ -1,6 +0,0 @@
1
- export declare const isAdmin: (uid: string) => Promise<boolean>;
2
- export declare const isModerator: (uid: string) => Promise<boolean>;
3
- export declare const isModeratorOrAbove: (uid: string) => Promise<boolean>;
4
- export declare const isTranslator: (uid: string) => Promise<boolean>;
5
- export declare const isTranslatorOrAbove: (uid: string) => Promise<boolean>;
6
- //# sourceMappingURL=iam.d.ts.map
@@ -1 +0,0 @@
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;AAEF,eAAO,MAAM,kBAAkB,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,OAAO,CAGrE,CAAC;AAEF,eAAO,MAAM,YAAY,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,OAAO,CAG/D,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,OAAO,CAGtE,CAAC"}
package/dist/lib/iam.js DELETED
@@ -1,72 +0,0 @@
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.isTranslatorOrAbove = exports.isTranslator = exports.isModeratorOrAbove = 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 === "moderator";
55
- };
56
- exports.isModerator = isModerator;
57
- const isModeratorOrAbove = async (uid) => {
58
- const role = await getUserRole(uid);
59
- return role === "admin" || role === "moderator";
60
- };
61
- exports.isModeratorOrAbove = isModeratorOrAbove;
62
- const isTranslator = async (uid) => {
63
- const role = await getUserRole(uid);
64
- return role === "translator";
65
- };
66
- exports.isTranslator = isTranslator;
67
- const isTranslatorOrAbove = async (uid) => {
68
- const role = await getUserRole(uid);
69
- return role === "admin" || role === "moderator" || role === "translator";
70
- };
71
- exports.isTranslatorOrAbove = isTranslatorOrAbove;
72
- //# sourceMappingURL=iam.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"iam.js","sourceRoot":"","sources":["../../src/lib/iam.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAAwC;AAGxC,MAAM,WAAW,GAAG,KAAK,EAAE,GAAW,EAAqB,EAAE;IAC3D,IAAI,IAAI,GAAa,OAAO,CAAC;IAC7B,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,WAAW,CAAC;AAC9B,CAAC,CAAC;AAHW,QAAA,WAAW,eAGtB;AAEK,MAAM,kBAAkB,GAAG,KAAK,EAAE,GAAW,EAAoB,EAAE;IACxE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,WAAW,CAAC;AAClD,CAAC,CAAC;AAHW,QAAA,kBAAkB,sBAG7B;AAEK,MAAM,YAAY,GAAG,KAAK,EAAE,GAAW,EAAoB,EAAE;IAClE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO,IAAI,KAAK,YAAY,CAAC;AAC/B,CAAC,CAAC;AAHW,QAAA,YAAY,gBAGvB;AAEK,MAAM,mBAAmB,GAAG,KAAK,EAAE,GAAW,EAAoB,EAAE;IACzE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,YAAY,CAAC;AAC3E,CAAC,CAAC;AAHW,QAAA,mBAAmB,uBAG9B"}
@@ -1,8 +0,0 @@
1
- export * from "./ai";
2
- export * from "./api";
3
- export * from "./firebase";
4
- export * from "./iam";
5
- export * from "./storage";
6
- export * from "./usage";
7
- export * from "./utils";
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,MAAM,CAAC;AACrB,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}