@cravery/firebase 0.0.13 → 0.0.15

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.
@@ -1 +1 @@
1
- {"version":3,"file":"recipe.d.ts","sourceRoot":"","sources":["../../src/converter/recipe.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EAGvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAS/D,eAAO,MAAM,mBAAmB,EAAE,sBAAsB,CAAC,UAAU,CA0ClE,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,sBAAsB,CAAC,aAAa,CA0BxE,CAAC"}
1
+ {"version":3,"file":"recipe.d.ts","sourceRoot":"","sources":["../../src/converter/recipe.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EAGvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAS/D,eAAO,MAAM,mBAAmB,EAAE,sBAAsB,CAAC,UAAU,CA2ClE,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,sBAAsB,CAAC,aAAa,CA0BxE,CAAC"}
@@ -29,7 +29,7 @@ exports.recipeMetaConverter = {
29
29
  dietaryTags: data.dietaryTags,
30
30
  difficulty: data.difficulty,
31
31
  equipment: data.equipment,
32
- imageUrl: data.imageUrl,
32
+ images: data.images,
33
33
  ingredientSections: data.ingredientSections,
34
34
  instructions: data.instructions,
35
35
  mealTypes: data.mealTypes,
@@ -42,6 +42,7 @@ exports.recipeMetaConverter = {
42
42
  spiciness: data.spiciness,
43
43
  status: data.status,
44
44
  time: data.time,
45
+ videoUrl: data.videoUrl,
45
46
  createdAt: (0, utils_1.toTimestamp)(data.createdAt),
46
47
  updatedAt: (0, utils_1.toTimestamp)(data.updatedAt),
47
48
  deletedAt: (0, utils_1.toOptionalTimestamp)(data.deletedAt),
@@ -1 +1 @@
1
- {"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../src/converter/recipe.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAMA,oCAMkB;AAEL,QAAA,mBAAmB,GAAuC;IACrE,WAAW,CAAC,UAAsB;QAChC,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,KAAc,UAAU,EAAnB,IAAI,UAAK,UAAU,EAA7D,6CAAgD,CAAa,CAAC;QAEpE,OAAO,IAAA,sBAAc,kCAChB,IAAI,KACP,SAAS,EAAE,IAAA,4BAAoB,EAAC,SAAS,CAAC,EAC1C,SAAS,EAAE,IAAA,4BAAoB,EAAC,SAAS,CAAC,EAC1C,SAAS,EAAE,IAAA,oCAA4B,EAAC,SAAS,CAAC,IAClD,CAAC;IACL,CAAC;IAED,aAAa,CAAC,QAA+B;QAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QAE7B,OAAO;YACL,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAA,mBAAW,EAAC,IAAI,CAAC,SAAS,CAAC;YACtC,SAAS,EAAE,IAAA,mBAAW,EAAC,IAAI,CAAC,SAAS,CAAC;YACtC,SAAS,EAAE,IAAA,2BAAmB,EAAC,IAAI,CAAC,SAAS,CAAC;SAC/C,CAAC;IACJ,CAAC;CACF,CAAC;AAEW,QAAA,sBAAsB,GAA0C;IAC3E,WAAW,CAAC,OAAsB;QAChC,OAAO,IAAA,sBAAc,EAAC;YACpB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;YAC9C,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,QAA+B;QAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QAE7B,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../src/converter/recipe.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAMA,oCAMkB;AAEL,QAAA,mBAAmB,GAAuC;IACrE,WAAW,CAAC,UAAsB;QAChC,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,KAAc,UAAU,EAAnB,IAAI,UAAK,UAAU,EAA7D,6CAAgD,CAAa,CAAC;QAEpE,OAAO,IAAA,sBAAc,kCAChB,IAAI,KACP,SAAS,EAAE,IAAA,4BAAoB,EAAC,SAAS,CAAC,EAC1C,SAAS,EAAE,IAAA,4BAAoB,EAAC,SAAS,CAAC,EAC1C,SAAS,EAAE,IAAA,oCAA4B,EAAC,SAAS,CAAC,IAClD,CAAC;IACL,CAAC;IAED,aAAa,CAAC,QAA+B;QAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QAE7B,OAAO;YACL,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAA,mBAAW,EAAC,IAAI,CAAC,SAAS,CAAC;YACtC,SAAS,EAAE,IAAA,mBAAW,EAAC,IAAI,CAAC,SAAS,CAAC;YACtC,SAAS,EAAE,IAAA,2BAAmB,EAAC,IAAI,CAAC,SAAS,CAAC;SAC/C,CAAC;IACJ,CAAC;CACF,CAAC;AAEW,QAAA,sBAAsB,GAA0C;IAC3E,WAAW,CAAC,OAAsB;QAChC,OAAO,IAAA,sBAAc,EAAC;YACpB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;YAC9C,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,QAA+B;QAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QAE7B,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"recipe.d.ts","sourceRoot":"","sources":["../../src/transform/recipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAElE,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CA2D5E;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG;IAC3C,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,aAAa,CAAC;CACxB,CA4EA"}
1
+ {"version":3,"file":"recipe.d.ts","sourceRoot":"","sources":["../../src/transform/recipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAElE,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CA4D5E;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG;IAC3C,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,aAAa,CAAC;CACxB,CAmFA"}
@@ -45,7 +45,7 @@ function mergeRecipe(meta, content) {
45
45
  deletedAt: meta.deletedAt,
46
46
  dietaryTags: meta.dietaryTags,
47
47
  difficulty: meta.difficulty,
48
- imageUrl: meta.imageUrl,
48
+ images: meta.images,
49
49
  mealTypes: meta.mealTypes,
50
50
  nutrition: meta.nutrition,
51
51
  originalLocale: meta.originalLocale,
@@ -56,6 +56,7 @@ function mergeRecipe(meta, content) {
56
56
  status: meta.status,
57
57
  time: meta.time,
58
58
  updatedAt: meta.updatedAt,
59
+ videoUrl: meta.videoUrl,
59
60
  equipment,
60
61
  ingredientSections,
61
62
  instructions,
@@ -94,14 +95,19 @@ function splitRecipe(recipe) {
94
95
  slug,
95
96
  })),
96
97
  }));
97
- const instructionsMeta = instructions.map(({ duration, step, temperature }) => ({
98
+ const instructionsMeta = instructions.map(({ duration, equipment, ingredients, optional, step, temperature }) => ({
98
99
  duration,
100
+ equipment,
101
+ ingredients,
102
+ optional,
99
103
  step,
100
104
  temperature,
101
105
  }));
102
- const instructionsContent = instructions.map(({ step, text }) => ({
106
+ const instructionsContent = instructions.map(({ step, text, tip, warning }) => ({
103
107
  step,
104
108
  text,
109
+ tip,
110
+ warning,
105
111
  }));
106
112
  const content = {
107
113
  description,
@@ -1 +1 @@
1
- {"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../src/transform/recipe.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAEA,kCA2DC;AAED,kCA+EC;AA5ID,SAAgB,WAAW,CAAC,IAAgB,EAAE,OAAsB;;IAClE,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,SAAS,0CAAE,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;;QACzD,MAAM,YAAY,GAAG,MAAA,OAAO,CAAC,SAAS,0CAAG,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,sCAAsC,KAAK,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,uCACK,SAAS,GACT,YAAY,EACf;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CACpD,CAAC,WAAW,EAAE,YAAY,EAAE,EAAE;;QAAC,OAAA,CAAC;YAC9B,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,KAAK,EAAE,MAAA,OAAO,CAAC,kBAAkB,CAAC,YAAY,CAAC,0CAAE,KAAK;YACtD,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,EAAE;;gBAAC,OAAA,iCACjE,UAAU,GACV,CAAC,CAAA,MAAA,OAAO,CAAC,kBAAkB,CAAC,YAAY,CAAC,0CAAE,WAAW,CACvD,WAAW,CACZ,KAAI,EAAE,CAAC,EACR,CAAA;aAAA,CAAC;SACJ,CAAC,CAAA;KAAA,CACH,CAAC;IAEF,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,iCAC5D,SAAS,GACT,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EACtC,CAAC,CAAC;IAEJ,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,SAAS;QACT,kBAAkB;QAClB,YAAY;QACZ,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC;AACJ,CAAC;AAED,SAAgB,WAAW,CAAC,MAAc;IAIxC,MAAM,EACJ,EAAE,EACF,WAAW,EACX,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,MAAM,EACN,IAAI,EACJ,KAAK,KAEH,MAAM,EADL,UAAU,UACX,MAAM,EAVJ,mGAUL,CAAS,CAAC;IAEX,MAAM,aAAa,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5D,QAAQ;QACR,IAAI;KACL,CAAC,CAAC,CAAC;IACJ,MAAM,gBAAgB,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAClE,IAAI;QACJ,KAAK;QACL,IAAI;KACL,CAAC,CAAC,CAAC;IAEJ,MAAM,sBAAsB,GAAG,kBAAkB,CAAC,GAAG,CACnD,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1B,IAAI;QACJ,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACpE,QAAQ;YACR,QAAQ;YACR,IAAI;YACJ,IAAI;SACL,CAAC,CAAC;KACJ,CAAC,CACH,CAAC;IACF,MAAM,yBAAyB,GAAG,kBAAkB,CAAC,GAAG,CACtD,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACjC,IAAI;QACJ,KAAK;QACL,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACvD,IAAI;YACJ,KAAK;YACL,IAAI;SACL,CAAC,CAAC;KACJ,CAAC,CACH,CAAC;IAEF,MAAM,gBAAgB,GAAG,YAAY,CAAC,GAAG,CACvC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;QACpC,QAAQ;QACR,IAAI;QACJ,WAAW;KACZ,CAAC,CACH,CAAC;IACF,MAAM,mBAAmB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAChE,IAAI;QACJ,IAAI;KACL,CAAC,CAAC,CAAC;IAEJ,MAAM,OAAO,GAAkB;QAC7B,WAAW;QACX,SAAS,EAAE,gBAAgB;QAC3B,kBAAkB,EAAE,yBAAyB;QAC7C,YAAY,EAAE,mBAAmB;QACjC,MAAM;QACN,IAAI;QACJ,KAAK;KACN,CAAC;IAEF,MAAM,IAAI,mCACL,UAAU,KACb,SAAS,EAAE,aAAa,EACxB,kBAAkB,EAAE,sBAAsB,EAC1C,YAAY,EAAE,gBAAgB,GAC/B,CAAC;IAEF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"recipe.js","sourceRoot":"","sources":["../../src/transform/recipe.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { Timestamp as FirestoreTimestamp } from "firebase-admin/firestore";
2
2
  import type { Timestamp } from "@cravery/core";
3
3
  export declare function toTimestamp(timestamp: FirestoreTimestamp): Timestamp;
4
- export declare function fromTimestamp(timestamp: Timestamp): FirestoreTimestamp;
5
4
  export declare function toOptionalTimestamp(timestamp?: FirestoreTimestamp): Timestamp | undefined;
6
5
  export declare function toFirestoreTimestamp(ts: Timestamp | FirestoreTimestamp | null | undefined): FirestoreTimestamp | null | undefined;
7
6
  export declare function toOptionalFirestoreTimestamp(ts: Timestamp | FirestoreTimestamp | undefined): FirestoreTimestamp | undefined;
7
+ export declare function fromTimestamp(timestamp: Timestamp): FirestoreTimestamp;
8
8
  //# sourceMappingURL=timestamp.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"timestamp.d.ts","sourceRoot":"","sources":["../../src/utils/timestamp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,wBAAgB,WAAW,CAAC,SAAS,EAAE,kBAAkB,GAAG,SAAS,CAKpE;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,kBAAkB,CAItE;AAED,wBAAgB,mBAAmB,CACjC,SAAS,CAAC,EAAE,kBAAkB,GAC7B,SAAS,GAAG,SAAS,CAEvB;AAMD,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,SAAS,GAAG,kBAAkB,GAAG,IAAI,GAAG,SAAS,GACpD,kBAAkB,GAAG,IAAI,GAAG,SAAS,CAIvC;AAED,wBAAgB,4BAA4B,CAC1C,EAAE,EAAE,SAAS,GAAG,kBAAkB,GAAG,SAAS,GAC7C,kBAAkB,GAAG,SAAS,CAIhC"}
1
+ {"version":3,"file":"timestamp.d.ts","sourceRoot":"","sources":["../../src/utils/timestamp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAe/C,wBAAgB,WAAW,CAAC,SAAS,EAAE,kBAAkB,GAAG,SAAS,CAGpE;AAED,wBAAgB,mBAAmB,CACjC,SAAS,CAAC,EAAE,kBAAkB,GAC7B,SAAS,GAAG,SAAS,CAEvB;AAGD,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,SAAS,GAAG,kBAAkB,GAAG,IAAI,GAAG,SAAS,GACpD,kBAAkB,GAAG,IAAI,GAAG,SAAS,CAIvC;AAED,wBAAgB,4BAA4B,CAC1C,EAAE,EAAE,SAAS,GAAG,kBAAkB,GAAG,SAAS,GAC7C,kBAAkB,GAAG,SAAS,CAIhC;AAGD,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,kBAAkB,CAEtE"}
@@ -1,38 +1,43 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.toTimestamp = toTimestamp;
4
- exports.fromTimestamp = fromTimestamp;
5
4
  exports.toOptionalTimestamp = toOptionalTimestamp;
6
5
  exports.toFirestoreTimestamp = toFirestoreTimestamp;
7
6
  exports.toOptionalFirestoreTimestamp = toOptionalFirestoreTimestamp;
7
+ exports.fromTimestamp = fromTimestamp;
8
8
  const firestore_1 = require("firebase-admin/firestore");
9
- function toTimestamp(timestamp) {
9
+ // Helper to extract seconds/nanoseconds from any timestamp-like object
10
+ function getTimestampValues(ts) {
11
+ var _a, _b;
12
+ const obj = ts;
10
13
  return {
11
- seconds: timestamp.seconds,
12
- nanoseconds: timestamp.nanoseconds,
14
+ seconds: (_a = obj.seconds) !== null && _a !== void 0 ? _a : obj._seconds,
15
+ nanoseconds: (_b = obj.nanoseconds) !== null && _b !== void 0 ? _b : obj._nanoseconds,
13
16
  };
14
17
  }
15
- function fromTimestamp(timestamp) {
16
- return firestore_1.Timestamp.fromMillis(timestamp.seconds * 1000 + timestamp.nanoseconds / 1000000);
18
+ // Firestore -> Core Timestamp (for fromFirestore)
19
+ function toTimestamp(timestamp) {
20
+ const { seconds, nanoseconds } = getTimestampValues(timestamp);
21
+ return { seconds, nanoseconds };
17
22
  }
18
23
  function toOptionalTimestamp(timestamp) {
19
24
  return timestamp ? toTimestamp(timestamp) : undefined;
20
25
  }
21
- function isFirestoreTimestamp(ts) {
22
- return ts instanceof firestore_1.Timestamp;
23
- }
26
+ // Core Timestamp -> Firestore (for toFirestore)
24
27
  function toFirestoreTimestamp(ts) {
25
28
  if (!ts)
26
29
  return ts;
27
- if (isFirestoreTimestamp(ts))
28
- return ts;
29
- return fromTimestamp(ts);
30
+ const { seconds, nanoseconds } = getTimestampValues(ts);
31
+ return new firestore_1.Timestamp(seconds, nanoseconds);
30
32
  }
31
33
  function toOptionalFirestoreTimestamp(ts) {
32
34
  if (!ts)
33
35
  return undefined;
34
- if (isFirestoreTimestamp(ts))
35
- return ts;
36
- return fromTimestamp(ts);
36
+ const { seconds, nanoseconds } = getTimestampValues(ts);
37
+ return new firestore_1.Timestamp(seconds, nanoseconds);
38
+ }
39
+ // Keep fromTimestamp for explicit conversion
40
+ function fromTimestamp(timestamp) {
41
+ return new firestore_1.Timestamp(timestamp.seconds, timestamp.nanoseconds);
37
42
  }
38
43
  //# sourceMappingURL=timestamp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"timestamp.js","sourceRoot":"","sources":["../../src/utils/timestamp.ts"],"names":[],"mappings":";;AAGA,kCAKC;AAED,sCAIC;AAED,kDAIC;AAMD,oDAMC;AAED,oEAMC;AAxCD,wDAA2E;AAG3E,SAAgB,WAAW,CAAC,SAA6B;IACvD,OAAO;QACL,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,WAAW,EAAE,SAAS,CAAC,WAAW;KACnC,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa,CAAC,SAAoB;IAChD,OAAO,qBAAkB,CAAC,UAAU,CAClC,SAAS,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,WAAW,GAAG,OAAO,CAC3D,CAAC;AACJ,CAAC;AAED,SAAgB,mBAAmB,CACjC,SAA8B;IAE9B,OAAO,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACxD,CAAC;AAED,SAAS,oBAAoB,CAAC,EAAW;IACvC,OAAO,EAAE,YAAY,qBAAkB,CAAC;AAC1C,CAAC;AAED,SAAgB,oBAAoB,CAClC,EAAqD;IAErD,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IACnB,IAAI,oBAAoB,CAAC,EAAE,CAAC;QAAE,OAAO,EAAE,CAAC;IACxC,OAAO,aAAa,CAAC,EAAE,CAAC,CAAC;AAC3B,CAAC;AAED,SAAgB,4BAA4B,CAC1C,EAA8C;IAE9C,IAAI,CAAC,EAAE;QAAE,OAAO,SAAS,CAAC;IAC1B,IAAI,oBAAoB,CAAC,EAAE,CAAC;QAAE,OAAO,EAAE,CAAC;IACxC,OAAO,aAAa,CAAC,EAAE,CAAC,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"timestamp.js","sourceRoot":"","sources":["../../src/utils/timestamp.ts"],"names":[],"mappings":";;AAgBA,kCAGC;AAED,kDAIC;AAGD,oDAMC;AAED,oEAMC;AAGD,sCAEC;AA/CD,wDAA2E;AAG3E,uEAAuE;AACvE,SAAS,kBAAkB,CAAC,EAAW;;IAIrC,MAAM,GAAG,GAAG,EAAS,CAAC;IACtB,OAAO;QACL,OAAO,EAAE,MAAA,GAAG,CAAC,OAAO,mCAAI,GAAG,CAAC,QAAQ;QACpC,WAAW,EAAE,MAAA,GAAG,CAAC,WAAW,mCAAI,GAAG,CAAC,YAAY;KACjD,CAAC;AACJ,CAAC;AAED,kDAAkD;AAClD,SAAgB,WAAW,CAAC,SAA6B;IACvD,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC/D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,SAAgB,mBAAmB,CACjC,SAA8B;IAE9B,OAAO,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACxD,CAAC;AAED,gDAAgD;AAChD,SAAgB,oBAAoB,CAClC,EAAqD;IAErD,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IACnB,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACxD,OAAO,IAAI,qBAAkB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AACtD,CAAC;AAED,SAAgB,4BAA4B,CAC1C,EAA8C;IAE9C,IAAI,CAAC,EAAE;QAAE,OAAO,SAAS,CAAC;IAC1B,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACxD,OAAO,IAAI,qBAAkB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AACtD,CAAC;AAED,6CAA6C;AAC7C,SAAgB,aAAa,CAAC,SAAoB;IAChD,OAAO,IAAI,qBAAkB,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;AAC1E,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cravery/firebase",
3
- "version": "0.0.13",
3
+ "version": "0.0.15",
4
4
  "description": "Shared Firebase Admin SDK utilities for Cravery",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -54,6 +54,6 @@
54
54
  "src/**/*"
55
55
  ],
56
56
  "dependencies": {
57
- "@cravery/core": "^0.0.50"
57
+ "@cravery/core": "^0.0.52"
58
58
  }
59
59
  }
@@ -36,7 +36,7 @@ export const recipeMetaConverter: FirestoreDataConverter<RecipeMeta> = {
36
36
  dietaryTags: data.dietaryTags,
37
37
  difficulty: data.difficulty,
38
38
  equipment: data.equipment,
39
- imageUrl: data.imageUrl,
39
+ images: data.images,
40
40
  ingredientSections: data.ingredientSections,
41
41
  instructions: data.instructions,
42
42
  mealTypes: data.mealTypes,
@@ -49,6 +49,7 @@ export const recipeMetaConverter: FirestoreDataConverter<RecipeMeta> = {
49
49
  spiciness: data.spiciness,
50
50
  status: data.status,
51
51
  time: data.time,
52
+ videoUrl: data.videoUrl,
52
53
  createdAt: toTimestamp(data.createdAt),
53
54
  updatedAt: toTimestamp(data.updatedAt),
54
55
  deletedAt: toOptionalTimestamp(data.deletedAt),
@@ -40,7 +40,7 @@ export function mergeRecipe(meta: RecipeMeta, content: RecipeContent): Recipe {
40
40
  deletedAt: meta.deletedAt,
41
41
  dietaryTags: meta.dietaryTags,
42
42
  difficulty: meta.difficulty,
43
- imageUrl: meta.imageUrl,
43
+ images: meta.images,
44
44
  mealTypes: meta.mealTypes,
45
45
  nutrition: meta.nutrition,
46
46
  originalLocale: meta.originalLocale,
@@ -51,6 +51,7 @@ export function mergeRecipe(meta: RecipeMeta, content: RecipeContent): Recipe {
51
51
  status: meta.status,
52
52
  time: meta.time,
53
53
  updatedAt: meta.updatedAt,
54
+ videoUrl: meta.videoUrl,
54
55
  equipment,
55
56
  ingredientSections,
56
57
  instructions,
@@ -111,16 +112,23 @@ export function splitRecipe(recipe: Recipe): {
111
112
  );
112
113
 
113
114
  const instructionsMeta = instructions.map(
114
- ({ duration, step, temperature }) => ({
115
+ ({ duration, equipment, ingredients, optional, step, temperature }) => ({
115
116
  duration,
117
+ equipment,
118
+ ingredients,
119
+ optional,
116
120
  step,
117
121
  temperature,
118
122
  }),
119
123
  );
120
- const instructionsContent = instructions.map(({ step, text }) => ({
121
- step,
122
- text,
123
- }));
124
+ const instructionsContent = instructions.map(
125
+ ({ step, text, tip, warning }) => ({
126
+ step,
127
+ text,
128
+ tip,
129
+ warning,
130
+ }),
131
+ );
124
132
 
125
133
  const content: RecipeContent = {
126
134
  description,
@@ -1,17 +1,22 @@
1
1
  import { Timestamp as FirestoreTimestamp } from "firebase-admin/firestore";
2
2
  import type { Timestamp } from "@cravery/core";
3
3
 
4
- export function toTimestamp(timestamp: FirestoreTimestamp): Timestamp {
4
+ // Helper to extract seconds/nanoseconds from any timestamp-like object
5
+ function getTimestampValues(ts: unknown): {
6
+ seconds: number;
7
+ nanoseconds: number;
8
+ } {
9
+ const obj = ts as any;
5
10
  return {
6
- seconds: timestamp.seconds,
7
- nanoseconds: timestamp.nanoseconds,
11
+ seconds: obj.seconds ?? obj._seconds,
12
+ nanoseconds: obj.nanoseconds ?? obj._nanoseconds,
8
13
  };
9
14
  }
10
15
 
11
- export function fromTimestamp(timestamp: Timestamp): FirestoreTimestamp {
12
- return FirestoreTimestamp.fromMillis(
13
- timestamp.seconds * 1000 + timestamp.nanoseconds / 1000000,
14
- );
16
+ // Firestore -> Core Timestamp (for fromFirestore)
17
+ export function toTimestamp(timestamp: FirestoreTimestamp): Timestamp {
18
+ const { seconds, nanoseconds } = getTimestampValues(timestamp);
19
+ return { seconds, nanoseconds };
15
20
  }
16
21
 
17
22
  export function toOptionalTimestamp(
@@ -20,22 +25,24 @@ export function toOptionalTimestamp(
20
25
  return timestamp ? toTimestamp(timestamp) : undefined;
21
26
  }
22
27
 
23
- function isFirestoreTimestamp(ts: unknown): ts is FirestoreTimestamp {
24
- return ts instanceof FirestoreTimestamp;
25
- }
26
-
28
+ // Core Timestamp -> Firestore (for toFirestore)
27
29
  export function toFirestoreTimestamp(
28
30
  ts: Timestamp | FirestoreTimestamp | null | undefined,
29
31
  ): FirestoreTimestamp | null | undefined {
30
32
  if (!ts) return ts;
31
- if (isFirestoreTimestamp(ts)) return ts;
32
- return fromTimestamp(ts);
33
+ const { seconds, nanoseconds } = getTimestampValues(ts);
34
+ return new FirestoreTimestamp(seconds, nanoseconds);
33
35
  }
34
36
 
35
37
  export function toOptionalFirestoreTimestamp(
36
38
  ts: Timestamp | FirestoreTimestamp | undefined,
37
39
  ): FirestoreTimestamp | undefined {
38
40
  if (!ts) return undefined;
39
- if (isFirestoreTimestamp(ts)) return ts;
40
- return fromTimestamp(ts);
41
+ const { seconds, nanoseconds } = getTimestampValues(ts);
42
+ return new FirestoreTimestamp(seconds, nanoseconds);
43
+ }
44
+
45
+ // Keep fromTimestamp for explicit conversion
46
+ export function fromTimestamp(timestamp: Timestamp): FirestoreTimestamp {
47
+ return new FirestoreTimestamp(timestamp.seconds, timestamp.nanoseconds);
41
48
  }