@cravery/firebase 0.0.36 → 0.0.37

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 (314) hide show
  1. package/dist/converters/equipment/content.d.ts +4 -0
  2. package/dist/converters/equipment/content.d.ts.map +1 -0
  3. package/dist/converters/equipment/content.js +13 -0
  4. package/dist/converters/equipment/content.js.map +1 -0
  5. package/dist/converters/equipment/index.d.ts +4 -0
  6. package/dist/converters/equipment/index.d.ts.map +1 -0
  7. package/dist/{iam → converters/equipment}/index.js +3 -2
  8. package/dist/converters/equipment/index.js.map +1 -0
  9. package/dist/converters/equipment/meta.d.ts +4 -0
  10. package/dist/converters/equipment/meta.d.ts.map +1 -0
  11. package/dist/converters/equipment/meta.js +26 -0
  12. package/dist/converters/equipment/meta.js.map +1 -0
  13. package/dist/converters/equipment/user.d.ts +4 -0
  14. package/dist/converters/equipment/user.d.ts.map +1 -0
  15. package/dist/converters/equipment/user.js +26 -0
  16. package/dist/converters/equipment/user.js.map +1 -0
  17. package/dist/converters/index.d.ts +8 -0
  18. package/dist/converters/index.d.ts.map +1 -0
  19. package/dist/{repository → converters}/index.js +6 -6
  20. package/dist/converters/index.js.map +1 -0
  21. package/dist/converters/ingredients/content.d.ts +4 -0
  22. package/dist/converters/ingredients/content.d.ts.map +1 -0
  23. package/dist/converters/ingredients/content.js +13 -0
  24. package/dist/converters/ingredients/content.js.map +1 -0
  25. package/dist/converters/ingredients/index.d.ts +4 -0
  26. package/dist/converters/ingredients/index.d.ts.map +1 -0
  27. package/dist/{equipment → converters/ingredients}/index.js +3 -1
  28. package/dist/converters/ingredients/index.js.map +1 -0
  29. package/dist/converters/ingredients/meta.d.ts +4 -0
  30. package/dist/converters/ingredients/meta.d.ts.map +1 -0
  31. package/dist/converters/ingredients/meta.js +26 -0
  32. package/dist/converters/ingredients/meta.js.map +1 -0
  33. package/dist/converters/ingredients/user.d.ts +4 -0
  34. package/dist/converters/ingredients/user.d.ts.map +1 -0
  35. package/dist/converters/ingredients/user.js +26 -0
  36. package/dist/converters/ingredients/user.js.map +1 -0
  37. package/dist/converters/recipes/comment.d.ts.map +1 -0
  38. package/dist/{converter → converters/recipes}/comment.js +4 -14
  39. package/dist/converters/recipes/comment.js.map +1 -0
  40. package/dist/converters/recipes/content.d.ts +4 -0
  41. package/dist/converters/recipes/content.d.ts.map +1 -0
  42. package/dist/converters/recipes/content.js +13 -0
  43. package/dist/converters/recipes/content.js.map +1 -0
  44. package/dist/converters/recipes/index.d.ts +4 -0
  45. package/dist/converters/recipes/index.d.ts.map +1 -0
  46. package/dist/converters/recipes/index.js +20 -0
  47. package/dist/converters/recipes/index.js.map +1 -0
  48. package/dist/converters/recipes/meta.d.ts +4 -0
  49. package/dist/converters/recipes/meta.d.ts.map +1 -0
  50. package/dist/converters/recipes/meta.js +26 -0
  51. package/dist/converters/recipes/meta.js.map +1 -0
  52. package/dist/converters/reports/index.d.ts +3 -0
  53. package/dist/converters/reports/index.d.ts.map +1 -0
  54. package/dist/{ingredient → converters/reports}/index.js +2 -1
  55. package/dist/converters/reports/index.js.map +1 -0
  56. package/dist/converters/reports/report.d.ts.map +1 -0
  57. package/dist/converters/reports/report.js +26 -0
  58. package/dist/converters/reports/report.js.map +1 -0
  59. package/dist/converters/reports/update.d.ts +4 -0
  60. package/dist/converters/reports/update.d.ts.map +1 -0
  61. package/dist/converters/reports/update.js +26 -0
  62. package/dist/converters/reports/update.js.map +1 -0
  63. package/dist/converters/settings/index.d.ts +2 -0
  64. package/dist/converters/settings/index.d.ts.map +1 -0
  65. package/dist/{transform → converters/settings}/index.js +1 -1
  66. package/dist/converters/settings/index.js.map +1 -0
  67. package/dist/converters/settings/settings.d.ts.map +1 -0
  68. package/dist/converters/settings/settings.js +26 -0
  69. package/dist/converters/settings/settings.js.map +1 -0
  70. package/dist/converters/subscriptions/index.d.ts +2 -0
  71. package/dist/converters/subscriptions/index.d.ts.map +1 -0
  72. package/dist/{asset → converters/subscriptions}/index.js +1 -1
  73. package/dist/converters/subscriptions/index.js.map +1 -0
  74. package/dist/converters/subscriptions/subscription.d.ts +4 -0
  75. package/dist/converters/subscriptions/subscription.d.ts.map +1 -0
  76. package/dist/converters/subscriptions/subscription.js +34 -0
  77. package/dist/converters/subscriptions/subscription.js.map +1 -0
  78. package/dist/converters/users/bookmark.d.ts +4 -0
  79. package/dist/converters/users/bookmark.d.ts.map +1 -0
  80. package/dist/converters/users/bookmark.js +26 -0
  81. package/dist/converters/users/bookmark.js.map +1 -0
  82. package/dist/converters/users/index.d.ts +4 -0
  83. package/dist/converters/users/index.d.ts.map +1 -0
  84. package/dist/converters/users/index.js +20 -0
  85. package/dist/converters/users/index.js.map +1 -0
  86. package/dist/converters/users/profile.d.ts.map +1 -0
  87. package/dist/converters/users/profile.js +26 -0
  88. package/dist/converters/users/profile.js.map +1 -0
  89. package/dist/converters/users/user.d.ts.map +1 -0
  90. package/dist/converters/users/user.js +26 -0
  91. package/dist/converters/users/user.js.map +1 -0
  92. package/dist/index.d.ts +2 -4
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +2 -4
  95. package/dist/index.js.map +1 -1
  96. package/dist/lib/index.d.ts +2 -1
  97. package/dist/lib/index.d.ts.map +1 -1
  98. package/dist/lib/index.js +2 -1
  99. package/dist/lib/index.js.map +1 -1
  100. package/dist/lib/strip-undefined.d.ts.map +1 -0
  101. package/dist/lib/strip-undefined.js.map +1 -0
  102. package/dist/lib/timestamp.d.ts.map +1 -0
  103. package/dist/{utils → lib}/timestamp.js +0 -4
  104. package/dist/lib/timestamp.js.map +1 -0
  105. package/package.json +33 -59
  106. package/src/converters/equipment/content.ts +17 -0
  107. package/src/converters/equipment/index.ts +3 -0
  108. package/src/converters/equipment/meta.ts +36 -0
  109. package/src/converters/equipment/user.ts +36 -0
  110. package/src/converters/index.ts +7 -0
  111. package/src/converters/ingredients/content.ts +17 -0
  112. package/src/converters/ingredients/index.ts +3 -0
  113. package/src/converters/ingredients/meta.ts +36 -0
  114. package/src/converters/ingredients/user.ts +38 -0
  115. package/src/{converter → converters/recipes}/comment.ts +36 -41
  116. package/src/converters/recipes/content.ts +17 -0
  117. package/src/converters/recipes/index.ts +3 -0
  118. package/src/converters/recipes/meta.ts +36 -0
  119. package/src/converters/reports/index.ts +2 -0
  120. package/src/converters/reports/report.ts +36 -0
  121. package/src/converters/reports/update.ts +36 -0
  122. package/src/converters/settings/index.ts +1 -0
  123. package/src/{converter → converters/settings}/settings.ts +36 -49
  124. package/src/converters/subscriptions/index.ts +1 -0
  125. package/src/converters/subscriptions/subscription.ts +85 -0
  126. package/src/converters/users/bookmark.ts +36 -0
  127. package/src/converters/users/index.ts +3 -0
  128. package/src/{converter → converters/users}/profile.ts +36 -44
  129. package/src/{converter → converters/users}/user.ts +36 -43
  130. package/src/index.ts +2 -4
  131. package/src/{utils → lib}/index.ts +2 -3
  132. package/src/{utils → lib}/strip-undefined.ts +32 -32
  133. package/src/{utils → lib}/timestamp.ts +44 -48
  134. package/dist/asset/index.d.ts +0 -2
  135. package/dist/asset/index.d.ts.map +0 -1
  136. package/dist/asset/index.js.map +0 -1
  137. package/dist/asset/repository.d.ts +0 -41
  138. package/dist/asset/repository.d.ts.map +0 -1
  139. package/dist/asset/repository.js +0 -96
  140. package/dist/asset/repository.js.map +0 -1
  141. package/dist/converter/comment.d.ts.map +0 -1
  142. package/dist/converter/comment.js.map +0 -1
  143. package/dist/converter/equipment.d.ts +0 -5
  144. package/dist/converter/equipment.d.ts.map +0 -1
  145. package/dist/converter/equipment.js +0 -52
  146. package/dist/converter/equipment.js.map +0 -1
  147. package/dist/converter/index.d.ts +0 -10
  148. package/dist/converter/index.d.ts.map +0 -1
  149. package/dist/converter/index.js +0 -26
  150. package/dist/converter/index.js.map +0 -1
  151. package/dist/converter/ingredient.d.ts +0 -5
  152. package/dist/converter/ingredient.d.ts.map +0 -1
  153. package/dist/converter/ingredient.js +0 -54
  154. package/dist/converter/ingredient.js.map +0 -1
  155. package/dist/converter/profile.d.ts.map +0 -1
  156. package/dist/converter/profile.js +0 -40
  157. package/dist/converter/profile.js.map +0 -1
  158. package/dist/converter/recipe.d.ts +0 -5
  159. package/dist/converter/recipe.d.ts.map +0 -1
  160. package/dist/converter/recipe.js +0 -77
  161. package/dist/converter/recipe.js.map +0 -1
  162. package/dist/converter/report.d.ts.map +0 -1
  163. package/dist/converter/report.js +0 -46
  164. package/dist/converter/report.js.map +0 -1
  165. package/dist/converter/settings.d.ts.map +0 -1
  166. package/dist/converter/settings.js +0 -44
  167. package/dist/converter/settings.js.map +0 -1
  168. package/dist/converter/submission.d.ts +0 -4
  169. package/dist/converter/submission.d.ts.map +0 -1
  170. package/dist/converter/submission.js +0 -41
  171. package/dist/converter/submission.js.map +0 -1
  172. package/dist/converter/user.d.ts.map +0 -1
  173. package/dist/converter/user.js +0 -39
  174. package/dist/converter/user.js.map +0 -1
  175. package/dist/equipment/equipment.repository.d.ts +0 -6
  176. package/dist/equipment/equipment.repository.d.ts.map +0 -1
  177. package/dist/equipment/equipment.repository.js +0 -11
  178. package/dist/equipment/equipment.repository.js.map +0 -1
  179. package/dist/equipment/index.d.ts +0 -2
  180. package/dist/equipment/index.d.ts.map +0 -1
  181. package/dist/equipment/index.js.map +0 -1
  182. package/dist/iam/converters.d.ts +0 -4
  183. package/dist/iam/converters.d.ts.map +0 -1
  184. package/dist/iam/converters.js +0 -39
  185. package/dist/iam/converters.js.map +0 -1
  186. package/dist/iam/index.d.ts +0 -3
  187. package/dist/iam/index.d.ts.map +0 -1
  188. package/dist/iam/index.js.map +0 -1
  189. package/dist/iam/profile.converter.d.ts +0 -4
  190. package/dist/iam/profile.converter.d.ts.map +0 -1
  191. package/dist/iam/profile.converter.js +0 -40
  192. package/dist/iam/profile.converter.js.map +0 -1
  193. package/dist/iam/user.converter.d.ts +0 -4
  194. package/dist/iam/user.converter.d.ts.map +0 -1
  195. package/dist/iam/user.converter.js +0 -39
  196. package/dist/iam/user.converter.js.map +0 -1
  197. package/dist/ingredient/index.d.ts +0 -2
  198. package/dist/ingredient/index.d.ts.map +0 -1
  199. package/dist/ingredient/index.js.map +0 -1
  200. package/dist/ingredient/ingredient.repository.d.ts +0 -6
  201. package/dist/ingredient/ingredient.repository.d.ts.map +0 -1
  202. package/dist/ingredient/ingredient.repository.js +0 -11
  203. package/dist/ingredient/ingredient.repository.js.map +0 -1
  204. package/dist/lib/asset.repository.d.ts +0 -13
  205. package/dist/lib/asset.repository.d.ts.map +0 -1
  206. package/dist/lib/asset.repository.js +0 -65
  207. package/dist/lib/asset.repository.js.map +0 -1
  208. package/dist/recipe/converters.d.ts +0 -5
  209. package/dist/recipe/converters.d.ts.map +0 -1
  210. package/dist/recipe/converters.js +0 -90
  211. package/dist/recipe/converters.js.map +0 -1
  212. package/dist/recipe/index.d.ts +0 -6
  213. package/dist/recipe/index.d.ts.map +0 -1
  214. package/dist/recipe/index.js +0 -22
  215. package/dist/recipe/index.js.map +0 -1
  216. package/dist/recipe/recipe.converter.d.ts +0 -5
  217. package/dist/recipe/recipe.converter.d.ts.map +0 -1
  218. package/dist/recipe/recipe.converter.js +0 -86
  219. package/dist/recipe/recipe.converter.js.map +0 -1
  220. package/dist/recipe/recipe.repository.d.ts +0 -22
  221. package/dist/recipe/recipe.repository.d.ts.map +0 -1
  222. package/dist/recipe/recipe.repository.js +0 -210
  223. package/dist/recipe/recipe.repository.js.map +0 -1
  224. package/dist/recipe/repository.d.ts +0 -26
  225. package/dist/recipe/repository.d.ts.map +0 -1
  226. package/dist/recipe/repository.js +0 -200
  227. package/dist/recipe/repository.js.map +0 -1
  228. package/dist/recipe/stats_repository.d.ts +0 -18
  229. package/dist/recipe/stats_repository.d.ts.map +0 -1
  230. package/dist/recipe/stats_repository.js +0 -195
  231. package/dist/recipe/stats_repository.js.map +0 -1
  232. package/dist/recipe/user_recipe_repository.d.ts +0 -26
  233. package/dist/recipe/user_recipe_repository.d.ts.map +0 -1
  234. package/dist/recipe/user_recipe_repository.js +0 -180
  235. package/dist/recipe/user_recipe_repository.js.map +0 -1
  236. package/dist/recipe/utils.d.ts +0 -7
  237. package/dist/recipe/utils.d.ts.map +0 -1
  238. package/dist/recipe/utils.js +0 -118
  239. package/dist/recipe/utils.js.map +0 -1
  240. package/dist/repository/base.d.ts +0 -36
  241. package/dist/repository/base.d.ts.map +0 -1
  242. package/dist/repository/base.js +0 -215
  243. package/dist/repository/base.js.map +0 -1
  244. package/dist/repository/equipment.d.ts +0 -14
  245. package/dist/repository/equipment.d.ts.map +0 -1
  246. package/dist/repository/equipment.js +0 -40
  247. package/dist/repository/equipment.js.map +0 -1
  248. package/dist/repository/index.d.ts +0 -8
  249. package/dist/repository/index.d.ts.map +0 -1
  250. package/dist/repository/index.js.map +0 -1
  251. package/dist/repository/ingredient.d.ts +0 -15
  252. package/dist/repository/ingredient.d.ts.map +0 -1
  253. package/dist/repository/ingredient.js +0 -46
  254. package/dist/repository/ingredient.js.map +0 -1
  255. package/dist/repository/recipe.d.ts +0 -17
  256. package/dist/repository/recipe.d.ts.map +0 -1
  257. package/dist/repository/recipe.js +0 -92
  258. package/dist/repository/recipe.js.map +0 -1
  259. package/dist/repository/recipe_stats.d.ts +0 -19
  260. package/dist/repository/recipe_stats.d.ts.map +0 -1
  261. package/dist/repository/recipe_stats.js +0 -121
  262. package/dist/repository/recipe_stats.js.map +0 -1
  263. package/dist/repository/report.d.ts +0 -15
  264. package/dist/repository/report.d.ts.map +0 -1
  265. package/dist/repository/report.js +0 -111
  266. package/dist/repository/report.js.map +0 -1
  267. package/dist/repository/user_recipe.d.ts +0 -39
  268. package/dist/repository/user_recipe.d.ts.map +0 -1
  269. package/dist/repository/user_recipe.js +0 -170
  270. package/dist/repository/user_recipe.js.map +0 -1
  271. package/dist/transform/index.d.ts +0 -2
  272. package/dist/transform/index.d.ts.map +0 -1
  273. package/dist/transform/index.js.map +0 -1
  274. package/dist/transform/recipe.d.ts +0 -7
  275. package/dist/transform/recipe.d.ts.map +0 -1
  276. package/dist/transform/recipe.js +0 -124
  277. package/dist/transform/recipe.js.map +0 -1
  278. package/dist/utils/cursor.d.ts +0 -14
  279. package/dist/utils/cursor.d.ts.map +0 -1
  280. package/dist/utils/cursor.js +0 -37
  281. package/dist/utils/cursor.js.map +0 -1
  282. package/dist/utils/index.d.ts +0 -4
  283. package/dist/utils/index.d.ts.map +0 -1
  284. package/dist/utils/index.js +0 -20
  285. package/dist/utils/index.js.map +0 -1
  286. package/dist/utils/strip-undefined.d.ts.map +0 -1
  287. package/dist/utils/strip-undefined.js.map +0 -1
  288. package/dist/utils/timestamp.d.ts.map +0 -1
  289. package/dist/utils/timestamp.js.map +0 -1
  290. package/src/converter/equipment.ts +0 -65
  291. package/src/converter/index.ts +0 -9
  292. package/src/converter/ingredient.ts +0 -67
  293. package/src/converter/recipe.ts +0 -86
  294. package/src/converter/report.ts +0 -53
  295. package/src/converter/submission.ts +0 -48
  296. package/src/repository/base.ts +0 -356
  297. package/src/repository/equipment.ts +0 -85
  298. package/src/repository/index.ts +0 -7
  299. package/src/repository/ingredient.ts +0 -107
  300. package/src/repository/recipe.ts +0 -149
  301. package/src/repository/recipe_stats.ts +0 -192
  302. package/src/repository/report.ts +0 -163
  303. package/src/repository/user_recipe.ts +0 -249
  304. package/src/transform/index.ts +0 -1
  305. package/src/transform/recipe.ts +0 -151
  306. package/src/utils/cursor.ts +0 -43
  307. /package/dist/{converter → converters/recipes}/comment.d.ts +0 -0
  308. /package/dist/{converter → converters/reports}/report.d.ts +0 -0
  309. /package/dist/{converter → converters/settings}/settings.d.ts +0 -0
  310. /package/dist/{converter → converters/users}/profile.d.ts +0 -0
  311. /package/dist/{converter → converters/users}/user.d.ts +0 -0
  312. /package/dist/{utils → lib}/strip-undefined.d.ts +0 -0
  313. /package/dist/{utils → lib}/strip-undefined.js +0 -0
  314. /package/dist/{utils → lib}/timestamp.d.ts +0 -0
@@ -1,151 +0,0 @@
1
- import { Recipe, RecipeContent, RecipeMeta } from "@cravery/core";
2
-
3
- export function mergeRecipe(meta: RecipeMeta, content: RecipeContent): Recipe {
4
- const equipment = meta.equipment?.map((equipMeta, index) => {
5
- const equipContent = content.equipment?.[index];
6
- if (!equipContent) {
7
- throw new Error(`Missing equipment content at index ${index}`);
8
- }
9
- return {
10
- ...equipMeta,
11
- ...equipContent,
12
- };
13
- });
14
-
15
- const ingredientSections = meta.ingredientSections.map(
16
- (sectionMeta, sectionIndex) => ({
17
- slug: sectionMeta.slug,
18
- title: content.ingredientSections[sectionIndex]?.title,
19
- ingredients: sectionMeta.ingredients.map((ingredMeta, ingredIndex) => ({
20
- ...ingredMeta,
21
- ...(content.ingredientSections[sectionIndex]?.ingredients[
22
- ingredIndex
23
- ] || {}),
24
- })),
25
- }),
26
- );
27
-
28
- const instructions = meta.instructions.map((instrMeta, index) => ({
29
- ...instrMeta,
30
- ...(content.instructions[index] || {}),
31
- }));
32
-
33
- return {
34
- id: meta.id,
35
- allergens: meta.allergens,
36
- confidence: meta.confidence,
37
- createdAt: meta.createdAt,
38
- createdBy: meta.createdBy,
39
- cuisine: meta.cuisine,
40
- deletedAt: meta.deletedAt,
41
- dietaryTags: meta.dietaryTags,
42
- difficulty: meta.difficulty,
43
- images: meta.images,
44
- mealTypes: meta.mealTypes,
45
- nutrition: meta.nutrition,
46
- originalLocale: meta.originalLocale,
47
- servings: meta.servings,
48
- source: meta.source,
49
- sourceUrl: meta.sourceUrl,
50
- spiciness: meta.spiciness,
51
- status: meta.status,
52
- time: meta.time,
53
- updatedAt: meta.updatedAt,
54
- videoUrl: meta.videoUrl,
55
- equipment,
56
- ingredientSections,
57
- instructions,
58
- description: content.description,
59
- locale: content.locale,
60
- tips: content.tips,
61
- title: content.title,
62
- };
63
- }
64
-
65
- export function splitRecipe(recipe: Recipe): {
66
- meta: Omit<RecipeMeta, "id">;
67
- content: RecipeContent;
68
- } {
69
- const {
70
- id,
71
- description,
72
- equipment,
73
- ingredientSections,
74
- instructions,
75
- locale,
76
- tips,
77
- title,
78
- ...metaFields
79
- } = recipe;
80
-
81
- const equipmentMeta = equipment?.map(({ required, slug }) => ({
82
- required,
83
- slug,
84
- }));
85
- const equipmentContent = equipment?.map(({ name, notes, slug }) => ({
86
- name,
87
- notes,
88
- slug,
89
- }));
90
-
91
- const ingredientSectionsMeta = ingredientSections.map(
92
- ({ ingredients, slug }) => ({
93
- slug,
94
- ingredients: ingredients.map(({ quantity, required, slug, unit }) => ({
95
- quantity,
96
- required,
97
- slug,
98
- unit,
99
- })),
100
- }),
101
- );
102
- const ingredientSectionsContent = ingredientSections.map(
103
- ({ ingredients, slug, title }) => ({
104
- slug,
105
- title,
106
- ingredients: ingredients.map(({ name, notes, slug }) => ({
107
- name,
108
- notes,
109
- slug,
110
- })),
111
- }),
112
- );
113
-
114
- const instructionsMeta = instructions.map(
115
- ({ duration, equipment, ingredients, optional, step, temperature }) => ({
116
- duration,
117
- equipment,
118
- ingredients,
119
- optional,
120
- step,
121
- temperature,
122
- }),
123
- );
124
- const instructionsContent = instructions.map(
125
- ({ step, text, tip, warning }) => ({
126
- step,
127
- text,
128
- tip,
129
- warning,
130
- }),
131
- );
132
-
133
- const content: RecipeContent = {
134
- description,
135
- equipment: equipmentContent,
136
- ingredientSections: ingredientSectionsContent,
137
- instructions: instructionsContent,
138
- locale,
139
- tips,
140
- title,
141
- };
142
-
143
- const meta = {
144
- ...metaFields,
145
- equipment: equipmentMeta,
146
- ingredientSections: ingredientSectionsMeta,
147
- instructions: instructionsMeta,
148
- };
149
-
150
- return { meta, content };
151
- }
@@ -1,43 +0,0 @@
1
- import { Timestamp } from "firebase-admin/firestore";
2
-
3
- interface CursorData {
4
- sortValue: number;
5
- id: string;
6
- }
7
-
8
- type TimestampLike = Timestamp | { seconds: number; nanoseconds: number };
9
-
10
- function toMillis(timestamp: TimestampLike): number {
11
- if ("toMillis" in timestamp && typeof timestamp.toMillis === "function") {
12
- return timestamp.toMillis();
13
- }
14
- return timestamp.seconds * 1000 + Math.floor(timestamp.nanoseconds / 1000000);
15
- }
16
-
17
- export function encodeCursor(sortValue: TimestampLike, id: string): string {
18
- const data: CursorData = {
19
- sortValue: toMillis(sortValue),
20
- id,
21
- };
22
- return Buffer.from(JSON.stringify(data)).toString("base64url");
23
- }
24
-
25
- export function decodeCursor(cursor: string): CursorData {
26
- try {
27
- const json = Buffer.from(cursor, "base64url").toString("utf-8");
28
- const data = JSON.parse(json) as CursorData;
29
-
30
- if (typeof data.sortValue !== "number" || typeof data.id !== "string") {
31
- throw new Error("Invalid cursor structure");
32
- }
33
-
34
- return data;
35
- } catch {
36
- throw new Error("Invalid cursor");
37
- }
38
- }
39
-
40
- export function cursorToFirestoreValues(cursor: string): [Timestamp, string] {
41
- const { sortValue, id } = decodeCursor(cursor);
42
- return [Timestamp.fromMillis(sortValue), id];
43
- }
File without changes
File without changes
File without changes
File without changes