offcourse 1.0.0 → 1.0.1

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 (258) hide show
  1. package/dist/cli/commands/config.js.map +1 -1
  2. package/dist/cli/commands/inspect.js +1 -1
  3. package/dist/cli/commands/inspect.js.map +1 -1
  4. package/dist/cli/commands/sync.d.ts +1 -2
  5. package/dist/cli/commands/sync.d.ts.map +1 -1
  6. package/dist/cli/commands/sync.js +13 -14
  7. package/dist/cli/commands/sync.js.map +1 -1
  8. package/dist/cli/commands/syncHighLevel.d.ts +1 -2
  9. package/dist/cli/commands/syncHighLevel.d.ts.map +1 -1
  10. package/dist/cli/commands/syncHighLevel.js +4 -8
  11. package/dist/cli/commands/syncHighLevel.js.map +1 -1
  12. package/dist/cli/index.js +1 -1
  13. package/dist/cli/index.js.map +1 -1
  14. package/dist/config/configManager.d.ts.map +1 -1
  15. package/dist/config/configManager.js +4 -0
  16. package/dist/config/configManager.js.map +1 -1
  17. package/dist/downloader/hlsDownloader.d.ts.map +1 -1
  18. package/dist/downloader/hlsDownloader.js +23 -14
  19. package/dist/downloader/hlsDownloader.js.map +1 -1
  20. package/dist/downloader/hlsValidator.d.ts.map +1 -1
  21. package/dist/downloader/hlsValidator.js +6 -2
  22. package/dist/downloader/hlsValidator.js.map +1 -1
  23. package/dist/downloader/index.d.ts +3 -0
  24. package/dist/downloader/index.d.ts.map +1 -1
  25. package/dist/downloader/index.js +3 -0
  26. package/dist/downloader/index.js.map +1 -1
  27. package/dist/downloader/loomDownloader.d.ts.map +1 -1
  28. package/dist/downloader/loomDownloader.js +23 -20
  29. package/dist/downloader/loomDownloader.js.map +1 -1
  30. package/dist/downloader/queue.d.ts +4 -4
  31. package/dist/downloader/queue.d.ts.map +1 -1
  32. package/dist/downloader/queue.js.map +1 -1
  33. package/dist/downloader/vimeoDownloader.d.ts.map +1 -1
  34. package/dist/downloader/vimeoDownloader.js +7 -3
  35. package/dist/downloader/vimeoDownloader.js.map +1 -1
  36. package/dist/scraper/extractor.d.ts +4 -0
  37. package/dist/scraper/extractor.d.ts.map +1 -1
  38. package/dist/scraper/extractor.js +79 -79
  39. package/dist/scraper/extractor.js.map +1 -1
  40. package/dist/scraper/highlevel/extractor.d.ts +11 -19
  41. package/dist/scraper/highlevel/extractor.d.ts.map +1 -1
  42. package/dist/scraper/highlevel/extractor.js +72 -85
  43. package/dist/scraper/highlevel/extractor.js.map +1 -1
  44. package/dist/scraper/highlevel/navigator.d.ts +3 -10
  45. package/dist/scraper/highlevel/navigator.d.ts.map +1 -1
  46. package/dist/scraper/highlevel/navigator.js +140 -127
  47. package/dist/scraper/highlevel/navigator.js.map +1 -1
  48. package/dist/scraper/highlevel/schemas.d.ts +188 -0
  49. package/dist/scraper/highlevel/schemas.d.ts.map +1 -0
  50. package/dist/scraper/highlevel/schemas.js +139 -0
  51. package/dist/scraper/highlevel/schemas.js.map +1 -0
  52. package/dist/scraper/navigator.d.ts +14 -11
  53. package/dist/scraper/navigator.d.ts.map +1 -1
  54. package/dist/scraper/navigator.js +61 -104
  55. package/dist/scraper/navigator.js.map +1 -1
  56. package/dist/scraper/schemas.d.ts +57 -0
  57. package/dist/scraper/schemas.d.ts.map +1 -0
  58. package/dist/scraper/schemas.js +135 -0
  59. package/dist/scraper/schemas.js.map +1 -0
  60. package/dist/scraper/videoInterceptor.d.ts +4 -0
  61. package/dist/scraper/videoInterceptor.d.ts.map +1 -1
  62. package/dist/scraper/videoInterceptor.js +66 -51
  63. package/dist/scraper/videoInterceptor.js.map +1 -1
  64. package/dist/shared/auth.d.ts +9 -9
  65. package/dist/shared/auth.d.ts.map +1 -1
  66. package/dist/shared/auth.js +24 -38
  67. package/dist/shared/auth.js.map +1 -1
  68. package/dist/shared/firebase.d.ts +60 -0
  69. package/dist/shared/firebase.d.ts.map +1 -0
  70. package/dist/shared/firebase.js +102 -0
  71. package/dist/shared/firebase.js.map +1 -0
  72. package/dist/shared/fs.d.ts.map +1 -1
  73. package/dist/shared/fs.js +4 -0
  74. package/dist/shared/fs.js.map +1 -1
  75. package/dist/shared/index.d.ts +3 -0
  76. package/dist/shared/index.d.ts.map +1 -1
  77. package/dist/shared/index.js +3 -0
  78. package/dist/shared/index.js.map +1 -1
  79. package/dist/shared/slug.d.ts +11 -0
  80. package/dist/shared/slug.d.ts.map +1 -0
  81. package/{src/shared/slug.ts → dist/shared/slug.js} +10 -11
  82. package/dist/shared/slug.js.map +1 -0
  83. package/dist/shared/url.d.ts +43 -0
  84. package/dist/shared/url.d.ts.map +1 -0
  85. package/{src/shared/url.ts → dist/shared/url.js} +12 -15
  86. package/dist/shared/url.js.map +1 -0
  87. package/dist/state/database.d.ts +1 -0
  88. package/dist/state/database.d.ts.map +1 -1
  89. package/dist/state/database.js +3 -0
  90. package/dist/state/database.js.map +1 -1
  91. package/dist/storage/fileSystem.d.ts +17 -17
  92. package/dist/storage/fileSystem.d.ts.map +1 -1
  93. package/dist/storage/fileSystem.js +39 -31
  94. package/dist/storage/fileSystem.js.map +1 -1
  95. package/package.json +5 -2
  96. package/.github/workflows/ci.yml +0 -50
  97. package/.husky/commit-msg +0 -2
  98. package/.husky/pre-commit +0 -1
  99. package/.husky/pre-push +0 -3
  100. package/.prettierrc +0 -8
  101. package/.release-it.json +0 -23
  102. package/ARCHITECTURE.md +0 -233
  103. package/CHANGELOG.md +0 -78
  104. package/commitlint.config.js +0 -4
  105. package/dist/ai/openRouter.d.ts +0 -47
  106. package/dist/ai/openRouter.d.ts.map +0 -1
  107. package/dist/ai/openRouter.js +0 -116
  108. package/dist/ai/openRouter.js.map +0 -1
  109. package/dist/ai/transcriptPolisher.d.ts +0 -24
  110. package/dist/ai/transcriptPolisher.d.ts.map +0 -1
  111. package/dist/ai/transcriptPolisher.js +0 -89
  112. package/dist/ai/transcriptPolisher.js.map +0 -1
  113. package/dist/cli/commands/enrich.d.ts +0 -14
  114. package/dist/cli/commands/enrich.d.ts.map +0 -1
  115. package/dist/cli/commands/enrich.js +0 -271
  116. package/dist/cli/commands/enrich.js.map +0 -1
  117. package/dist/cli/commands/syncGhl.d.ts +0 -20
  118. package/dist/cli/commands/syncGhl.d.ts.map +0 -1
  119. package/dist/cli/commands/syncGhl.js +0 -483
  120. package/dist/cli/commands/syncGhl.js.map +0 -1
  121. package/dist/cli/commands/syncHighLevel.test.d.ts +0 -2
  122. package/dist/cli/commands/syncHighLevel.test.d.ts.map +0 -1
  123. package/dist/cli/commands/syncHighLevel.test.js +0 -102
  124. package/dist/cli/commands/syncHighLevel.test.js.map +0 -1
  125. package/dist/config/paths.test.d.ts +0 -2
  126. package/dist/config/paths.test.d.ts.map +0 -1
  127. package/dist/config/paths.test.js +0 -70
  128. package/dist/config/paths.test.js.map +0 -1
  129. package/dist/config/schema.test.d.ts +0 -2
  130. package/dist/config/schema.test.d.ts.map +0 -1
  131. package/dist/config/schema.test.js +0 -151
  132. package/dist/config/schema.test.js.map +0 -1
  133. package/dist/downloader/hlsDownloader.test.d.ts +0 -2
  134. package/dist/downloader/hlsDownloader.test.d.ts.map +0 -1
  135. package/dist/downloader/hlsDownloader.test.js +0 -116
  136. package/dist/downloader/hlsDownloader.test.js.map +0 -1
  137. package/dist/downloader/loomDownloader.test.d.ts +0 -2
  138. package/dist/downloader/loomDownloader.test.d.ts.map +0 -1
  139. package/dist/downloader/loomDownloader.test.js +0 -36
  140. package/dist/downloader/loomDownloader.test.js.map +0 -1
  141. package/dist/downloader/queue.test.d.ts +0 -2
  142. package/dist/downloader/queue.test.d.ts.map +0 -1
  143. package/dist/downloader/queue.test.js +0 -158
  144. package/dist/downloader/queue.test.js.map +0 -1
  145. package/dist/downloader/videoDownloader.d.ts +0 -32
  146. package/dist/downloader/videoDownloader.d.ts.map +0 -1
  147. package/dist/downloader/videoDownloader.js +0 -173
  148. package/dist/downloader/videoDownloader.js.map +0 -1
  149. package/dist/downloader/vimeoDownloader.test.d.ts +0 -2
  150. package/dist/downloader/vimeoDownloader.test.d.ts.map +0 -1
  151. package/dist/downloader/vimeoDownloader.test.js +0 -51
  152. package/dist/downloader/vimeoDownloader.test.js.map +0 -1
  153. package/dist/scraper/auth.d.ts +0 -29
  154. package/dist/scraper/auth.d.ts.map +0 -1
  155. package/dist/scraper/auth.js +0 -115
  156. package/dist/scraper/auth.js.map +0 -1
  157. package/dist/scraper/extractor.test.d.ts +0 -2
  158. package/dist/scraper/extractor.test.d.ts.map +0 -1
  159. package/dist/scraper/extractor.test.js +0 -65
  160. package/dist/scraper/extractor.test.js.map +0 -1
  161. package/dist/scraper/ghl/auth.d.ts +0 -25
  162. package/dist/scraper/ghl/auth.d.ts.map +0 -1
  163. package/dist/scraper/ghl/auth.js +0 -187
  164. package/dist/scraper/ghl/auth.js.map +0 -1
  165. package/dist/scraper/ghl/extractor.d.ts +0 -96
  166. package/dist/scraper/ghl/extractor.d.ts.map +0 -1
  167. package/dist/scraper/ghl/extractor.js +0 -345
  168. package/dist/scraper/ghl/extractor.js.map +0 -1
  169. package/dist/scraper/ghl/index.d.ts +0 -4
  170. package/dist/scraper/ghl/index.d.ts.map +0 -1
  171. package/dist/scraper/ghl/index.js +0 -4
  172. package/dist/scraper/ghl/index.js.map +0 -1
  173. package/dist/scraper/ghl/navigator.d.ts +0 -93
  174. package/dist/scraper/ghl/navigator.d.ts.map +0 -1
  175. package/dist/scraper/ghl/navigator.js +0 -447
  176. package/dist/scraper/ghl/navigator.js.map +0 -1
  177. package/dist/scraper/highlevel/auth.d.ts +0 -25
  178. package/dist/scraper/highlevel/auth.d.ts.map +0 -1
  179. package/dist/scraper/highlevel/auth.js +0 -189
  180. package/dist/scraper/highlevel/auth.js.map +0 -1
  181. package/dist/scraper/highlevel/extractor.test.d.ts +0 -2
  182. package/dist/scraper/highlevel/extractor.test.d.ts.map +0 -1
  183. package/dist/scraper/highlevel/extractor.test.js +0 -101
  184. package/dist/scraper/highlevel/extractor.test.js.map +0 -1
  185. package/dist/scraper/highlevel/navigator.test.d.ts +0 -2
  186. package/dist/scraper/highlevel/navigator.test.d.ts.map +0 -1
  187. package/dist/scraper/highlevel/navigator.test.js +0 -78
  188. package/dist/scraper/highlevel/navigator.test.js.map +0 -1
  189. package/dist/scraper/navigator.test.d.ts +0 -2
  190. package/dist/scraper/navigator.test.d.ts.map +0 -1
  191. package/dist/scraper/navigator.test.js +0 -63
  192. package/dist/scraper/navigator.test.js.map +0 -1
  193. package/dist/scraper/skoolApi.d.ts +0 -17
  194. package/dist/scraper/skoolApi.d.ts.map +0 -1
  195. package/dist/scraper/skoolApi.js +0 -72
  196. package/dist/scraper/skoolApi.js.map +0 -1
  197. package/dist/state/database.test.d.ts +0 -2
  198. package/dist/state/database.test.d.ts.map +0 -1
  199. package/dist/state/database.test.js +0 -34
  200. package/dist/state/database.test.js.map +0 -1
  201. package/dist/transcription/whisperService.d.ts +0 -27
  202. package/dist/transcription/whisperService.d.ts.map +0 -1
  203. package/dist/transcription/whisperService.js +0 -102
  204. package/dist/transcription/whisperService.js.map +0 -1
  205. package/eslint.config.js +0 -55
  206. package/src/__fixtures__/highlevel-post-response.json +0 -68
  207. package/src/__fixtures__/hls-master-playlist.m3u8 +0 -24
  208. package/src/cli/commands/__snapshots__/syncHighLevel.test.ts.snap +0 -38
  209. package/src/cli/commands/config.ts +0 -74
  210. package/src/cli/commands/inspect.ts +0 -441
  211. package/src/cli/commands/login.ts +0 -68
  212. package/src/cli/commands/status.ts +0 -147
  213. package/src/cli/commands/sync.ts +0 -1235
  214. package/src/cli/commands/syncHighLevel.test.ts +0 -144
  215. package/src/cli/commands/syncHighLevel.ts +0 -639
  216. package/src/cli/index.ts +0 -121
  217. package/src/config/configManager.ts +0 -75
  218. package/src/config/paths.test.ts +0 -83
  219. package/src/config/paths.ts +0 -36
  220. package/src/config/schema.test.ts +0 -173
  221. package/src/config/schema.ts +0 -65
  222. package/src/downloader/hlsDownloader.test.ts +0 -148
  223. package/src/downloader/hlsDownloader.ts +0 -327
  224. package/src/downloader/hlsValidator.ts +0 -196
  225. package/src/downloader/index.ts +0 -122
  226. package/src/downloader/loomDownloader.test.ts +0 -43
  227. package/src/downloader/loomDownloader.ts +0 -742
  228. package/src/downloader/queue.test.ts +0 -199
  229. package/src/downloader/queue.ts +0 -118
  230. package/src/downloader/vimeoDownloader.test.ts +0 -62
  231. package/src/downloader/vimeoDownloader.ts +0 -722
  232. package/src/scraper/extractor.test.ts +0 -124
  233. package/src/scraper/extractor.ts +0 -757
  234. package/src/scraper/highlevel/__snapshots__/extractor.test.ts.snap +0 -41
  235. package/src/scraper/highlevel/extractor.test.ts +0 -134
  236. package/src/scraper/highlevel/extractor.ts +0 -537
  237. package/src/scraper/highlevel/index.ts +0 -2
  238. package/src/scraper/highlevel/navigator.test.ts +0 -110
  239. package/src/scraper/highlevel/navigator.ts +0 -668
  240. package/src/scraper/highlevel/schemas.ts +0 -183
  241. package/src/scraper/navigator.test.ts +0 -122
  242. package/src/scraper/navigator.ts +0 -355
  243. package/src/scraper/schemas.ts +0 -177
  244. package/src/scraper/videoInterceptor.ts +0 -435
  245. package/src/shared/auth.test.ts +0 -58
  246. package/src/shared/auth.ts +0 -251
  247. package/src/shared/firebase.ts +0 -151
  248. package/src/shared/fs.ts +0 -80
  249. package/src/shared/http.ts +0 -34
  250. package/src/shared/index.ts +0 -6
  251. package/src/shared/url.test.ts +0 -122
  252. package/src/state/database.test.ts +0 -49
  253. package/src/state/database.ts +0 -919
  254. package/src/state/index.ts +0 -14
  255. package/src/storage/fileSystem.test.ts +0 -64
  256. package/src/storage/fileSystem.ts +0 -175
  257. package/tsconfig.json +0 -28
  258. package/vitest.config.ts +0 -29
@@ -1,3 +1,6 @@
1
+ import { FirebaseAuthTokenSchema, PortalSettingsResponseSchema, ProductResponseSchema, CategoriesResponseSchema, PostsResponseSchema, safeParse, } from "./schemas.js";
2
+ // Browser/API automation - requires Playwright
3
+ /* v8 ignore start */
1
4
  /**
2
5
  * Extracts the location ID from the HighLevel portal.
3
6
  * The location ID is used in all API calls.
@@ -38,19 +41,19 @@ export async function extractLocationId(page) {
38
41
  */
39
42
  export async function extractPortalSettings(page, domain) {
40
43
  try {
41
- // Intercept the portal-settings API call
42
- const response = await page.evaluate(async (domain) => {
43
- const res = await fetch(`https://services.leadconnectorhq.com/clientclub/portal-settings?domain=${domain}`);
44
- if (!res.ok)
45
- return null;
46
- return res.json();
47
- }, domain);
48
- if (response?.locationId) {
49
- return {
50
- locationId: response.locationId,
51
- portalName: response.portalName ?? response.name ?? "HighLevel Course",
52
- };
53
- }
44
+ // Use page.request to make the API call
45
+ const response = await page.request.get(`https://services.leadconnectorhq.com/clientclub/portal-settings?domain=${domain}`);
46
+ if (!response.ok())
47
+ return null;
48
+ const data = await response.json();
49
+ // Validate response with Zod schema
50
+ const parsed = safeParse(PortalSettingsResponseSchema, data, "extractPortalSettings");
51
+ if (!parsed)
52
+ return null;
53
+ return {
54
+ locationId: parsed.locationId,
55
+ portalName: parsed.portalName ?? parsed.name ?? "HighLevel Course",
56
+ };
54
57
  }
55
58
  catch {
56
59
  // Fall through
@@ -76,8 +79,8 @@ export async function extractCourses(page) {
76
79
  const match = /\/courses\/products\/([a-f0-9-]+)/.exec(href);
77
80
  if (match?.[1] && !seen.has(match[1])) {
78
81
  seen.add(match[1]);
79
- const title = link.querySelector("h3, h4, [class*='title']")?.textContent?.trim() ||
80
- link.textContent?.trim() ||
82
+ const title = link.querySelector("h3, h4, [class*='title']")?.textContent?.trim() ??
83
+ link.textContent?.trim() ??
81
84
  `Course ${results.length + 1}`;
82
85
  results.push({
83
86
  id: match[1],
@@ -120,11 +123,21 @@ export async function extractCourseDetails(page, courseUrl, locationId) {
120
123
  try {
121
124
  const apiUrl = `https://services.leadconnectorhq.com/membership/locations/${locationId}/products/${productId}`;
122
125
  // Get auth token from the page context
123
- const authToken = await page.evaluate(() => {
126
+ const rawTokenData = await page.evaluate(() => {
124
127
  const tokenKey = Object.keys(localStorage).find((k) => k.includes("firebase:authUser"));
125
- const tokenData = tokenKey ? JSON.parse(localStorage.getItem(tokenKey) ?? "{}") : null;
126
- return tokenData?.stsTokenManager?.accessToken ?? null;
128
+ if (!tokenKey)
129
+ return null;
130
+ try {
131
+ return JSON.parse(localStorage.getItem(tokenKey) ?? "{}");
132
+ }
133
+ catch {
134
+ return null;
135
+ }
127
136
  });
137
+ const tokenParsed = rawTokenData
138
+ ? safeParse(FirebaseAuthTokenSchema, rawTokenData, "extractCourseDetails.token")
139
+ : null;
140
+ const authToken = tokenParsed?.stsTokenManager.accessToken;
128
141
  if (authToken) {
129
142
  // Use page.request to make the API call (bypasses CORS)
130
143
  const response = await page.request.get(apiUrl, {
@@ -134,20 +147,24 @@ export async function extractCourseDetails(page, courseUrl, locationId) {
134
147
  });
135
148
  if (response.ok()) {
136
149
  const data = await response.json();
137
- // The API returns the product directly, not wrapped in a "product" property
138
- const product = data.product ?? data;
139
- const title = product.title;
140
- if (title && title !== "Unknown Course") {
141
- return {
142
- id: product.id ?? productId,
143
- title,
144
- description: product.description ?? "",
145
- slug: product.id ?? productId,
146
- thumbnailUrl: product.posterImage ?? null,
147
- instructor: product.instructor ?? null,
148
- totalLessons: product.postCount ?? 0,
149
- progress: 0,
150
- };
150
+ // Validate response with Zod schema
151
+ const parsed = safeParse(ProductResponseSchema, data, "extractCourseDetails");
152
+ if (parsed) {
153
+ // The API returns the product directly, not wrapped in a "product" property
154
+ const product = parsed.product ?? parsed;
155
+ const title = product.title;
156
+ if (title && title !== "Unknown Course") {
157
+ return {
158
+ id: product.id ?? productId,
159
+ title,
160
+ description: product.description ?? "",
161
+ slug: product.id ?? productId,
162
+ thumbnailUrl: product.posterImage ?? null,
163
+ instructor: product.instructor ?? null,
164
+ totalLessons: product.postCount ?? 0,
165
+ progress: 0,
166
+ };
167
+ }
151
168
  }
152
169
  }
153
170
  }
@@ -218,86 +235,107 @@ export async function extractCourseDetails(page, courseUrl, locationId) {
218
235
  * Extracts categories (modules) from a course page.
219
236
  */
220
237
  export async function extractCategories(page, productId, locationId) {
221
- // Try to get categories via API
222
- const categories = await page.evaluate(async ({ productId, locationId }) => {
223
- try {
224
- // Get auth token from Firebase
238
+ try {
239
+ // Get auth token from the page context
240
+ const rawTokenData = await page.evaluate(() => {
225
241
  const tokenKey = Object.keys(localStorage).find((k) => k.includes("firebase:authUser"));
226
- const tokenData = tokenKey ? JSON.parse(localStorage.getItem(tokenKey) ?? "{}") : null;
227
- const token = tokenData?.stsTokenManager?.accessToken;
228
- if (!token) {
229
- console.warn("No auth token found");
230
- return [];
231
- }
232
- const res = await fetch(`https://services.leadconnectorhq.com/membership/locations/${locationId}/user-purchase/categories?product_id=${productId}&source=courses`, {
233
- headers: {
234
- Authorization: `Bearer ${token}`,
235
- },
236
- });
237
- if (!res.ok) {
238
- console.warn("Categories API returned", res.status);
239
- return [];
242
+ if (!tokenKey)
243
+ return null;
244
+ try {
245
+ return JSON.parse(localStorage.getItem(tokenKey) ?? "{}");
240
246
  }
241
- const data = await res.json();
242
- if (Array.isArray(data.categories)) {
243
- return data.categories.map((cat) => ({
244
- id: cat.id,
245
- title: cat.title,
246
- description: cat.description ?? null,
247
- position: cat.position ?? 0,
248
- postCount: cat.postCount ?? 0,
249
- isLocked: cat.visibility === "locked",
250
- }));
247
+ catch {
248
+ return null;
251
249
  }
250
+ });
251
+ const tokenParsed = rawTokenData
252
+ ? safeParse(FirebaseAuthTokenSchema, rawTokenData, "extractCategories.token")
253
+ : null;
254
+ const authToken = tokenParsed?.stsTokenManager.accessToken;
255
+ if (!authToken) {
256
+ console.warn("No auth token found");
252
257
  return [];
253
258
  }
254
- catch (error) {
255
- console.error("Failed to fetch categories:", error);
259
+ // Use page.request to make the API call
260
+ const response = await page.request.get(`https://services.leadconnectorhq.com/membership/locations/${locationId}/user-purchase/categories?product_id=${productId}&source=courses`, {
261
+ headers: {
262
+ Authorization: `Bearer ${authToken}`,
263
+ },
264
+ });
265
+ if (!response.ok()) {
266
+ console.warn("Categories API returned", response.status());
256
267
  return [];
257
268
  }
258
- }, { productId, locationId });
259
- return categories;
269
+ const data = await response.json();
270
+ // Validate response with Zod schema
271
+ const parsed = safeParse(CategoriesResponseSchema, data, "extractCategories");
272
+ if (!parsed)
273
+ return [];
274
+ return parsed.categories.map((cat) => ({
275
+ id: cat.id,
276
+ title: cat.title,
277
+ description: cat.description ?? null,
278
+ position: cat.position ?? 0,
279
+ postCount: cat.postCount ?? 0,
280
+ isLocked: cat.visibility === "locked",
281
+ }));
282
+ }
283
+ catch (error) {
284
+ console.error("Failed to fetch categories:", error);
285
+ return [];
286
+ }
260
287
  }
261
288
  /**
262
289
  * Extracts posts (lessons) from a category.
263
290
  */
264
291
  export async function extractPosts(page, productId, categoryId, locationId) {
265
- const posts = await page.evaluate(async ({ productId, categoryId, locationId }) => {
266
- try {
267
- // Get auth token
292
+ try {
293
+ // Get auth token from the page context
294
+ const rawTokenData = await page.evaluate(() => {
268
295
  const tokenKey = Object.keys(localStorage).find((k) => k.includes("firebase:authUser"));
269
- const tokenData = tokenKey ? JSON.parse(localStorage.getItem(tokenKey) ?? "{}") : null;
270
- const token = tokenData?.stsTokenManager?.accessToken;
271
- if (!token) {
272
- return [];
273
- }
274
- const res = await fetch(`https://services.leadconnectorhq.com/membership/locations/${locationId}/user-purchase/categories/${categoryId}?product_id=${productId}&visibility=published&published_posts=true&source=courses`, {
275
- headers: {
276
- Authorization: `Bearer ${token}`,
277
- },
278
- });
279
- if (!res.ok) {
280
- return [];
296
+ if (!tokenKey)
297
+ return null;
298
+ try {
299
+ return JSON.parse(localStorage.getItem(tokenKey) ?? "{}");
281
300
  }
282
- const data = await res.json();
283
- if (data.category?.posts && Array.isArray(data.category.posts)) {
284
- return data.category.posts.map((post, index) => ({
285
- id: post.id,
286
- title: post.title,
287
- position: post.indexPosition ?? index,
288
- categoryId,
289
- isLocked: post.visibility === "locked",
290
- isCompleted: false,
291
- }));
301
+ catch {
302
+ return null;
292
303
  }
304
+ });
305
+ const tokenParsed = rawTokenData
306
+ ? safeParse(FirebaseAuthTokenSchema, rawTokenData, "extractPosts.token")
307
+ : null;
308
+ const authToken = tokenParsed?.stsTokenManager.accessToken;
309
+ if (!authToken) {
293
310
  return [];
294
311
  }
295
- catch (error) {
296
- console.error("Failed to fetch posts:", error);
312
+ // Use page.request to make the API call
313
+ const response = await page.request.get(`https://services.leadconnectorhq.com/membership/locations/${locationId}/user-purchase/categories/${categoryId}?product_id=${productId}&visibility=published&published_posts=true&source=courses`, {
314
+ headers: {
315
+ Authorization: `Bearer ${authToken}`,
316
+ },
317
+ });
318
+ if (!response.ok()) {
297
319
  return [];
298
320
  }
299
- }, { productId, categoryId, locationId });
300
- return posts;
321
+ const data = await response.json();
322
+ // Validate response with Zod schema
323
+ const parsed = safeParse(PostsResponseSchema, data, "extractPosts");
324
+ if (!parsed?.category?.posts)
325
+ return [];
326
+ return parsed.category.posts.map((post, index) => ({
327
+ id: post.id,
328
+ title: post.title,
329
+ position: post.indexPosition ?? index,
330
+ categoryId,
331
+ isLocked: post.visibility === "locked",
332
+ isCompleted: false,
333
+ }));
334
+ }
335
+ catch (error) {
336
+ console.error("Failed to fetch posts:", error);
337
+ return [];
338
+ }
301
339
  }
302
340
  /**
303
341
  * Builds the complete course structure.
@@ -317,9 +355,7 @@ export async function buildHighLevelCourseStructure(page, courseUrl, onProgress)
317
355
  locationId = settings.locationId;
318
356
  }
319
357
  // Fallback: try to extract from page
320
- if (!locationId) {
321
- locationId = await extractLocationId(page);
322
- }
358
+ locationId ??= await extractLocationId(page);
323
359
  if (!locationId) {
324
360
  console.error("Could not determine location ID");
325
361
  return null;
@@ -333,8 +369,10 @@ export async function buildHighLevelCourseStructure(page, courseUrl, onProgress)
333
369
  url.includes("leadconnectorhq.com")) {
334
370
  try {
335
371
  const data = await response.json();
336
- if (data.product?.title) {
337
- capturedCourseTitle = data.product.title;
372
+ const parsed = safeParse(ProductResponseSchema, data, "responseHandler");
373
+ const title = parsed?.product?.title ?? parsed?.title;
374
+ if (title) {
375
+ capturedCourseTitle = title;
338
376
  }
339
377
  }
340
378
  catch {
@@ -412,8 +450,7 @@ export async function buildHighLevelCourseStructure(page, courseUrl, onProgress)
412
450
  onProgress?.({ phase: "categories", totalCategories: categories.length });
413
451
  // Extract posts for each category
414
452
  const categoriesWithPosts = [];
415
- for (let i = 0; i < categories.length; i++) {
416
- const category = categories[i];
453
+ for (const [i, category] of categories.entries()) {
417
454
  if (category.isLocked) {
418
455
  onProgress?.({
419
456
  phase: "posts",
@@ -450,33 +487,9 @@ export async function buildHighLevelCourseStructure(page, courseUrl, onProgress)
450
487
  domain,
451
488
  };
452
489
  }
453
- /**
454
- * Creates a filesystem-safe name from a string.
455
- */
456
- export function slugify(name) {
457
- return name
458
- .toLowerCase()
459
- .replace(/[äöüß]/g, (char) => {
460
- const replacements = {
461
- ä: "ae",
462
- ö: "oe",
463
- ü: "ue",
464
- ß: "ss",
465
- };
466
- return replacements[char] ?? char;
467
- })
468
- .replace(/[^a-z0-9]+/g, "-")
469
- .replace(/^-+|-+$/g, "")
470
- .substring(0, 100);
471
- }
472
- /**
473
- * Creates a folder name with index prefix.
474
- */
475
- export function createFolderName(index, name) {
476
- const prefix = String(index + 1).padStart(2, "0");
477
- const slug = slugify(name);
478
- return `${prefix}-${slug}`;
479
- }
490
+ /* v8 ignore stop */
491
+ // Re-export shared utilities for backwards compatibility
492
+ export { slugify, createFolderName } from "../../shared/slug.js";
480
493
  /**
481
494
  * Constructs the URL for a HighLevel course page.
482
495
  */
@@ -1 +1 @@
1
- {"version":3,"file":"navigator.js","sourceRoot":"","sources":["../../../src/scraper/highlevel/navigator.ts"],"names":[],"mappings":"AAgDA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAU;IAChD,kDAAkD;IAClD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;QAC1C,4CAA4C;QAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;YACzC,oEAAoE;YACpE,MAAM,KAAK,GAAG,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxD,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;gBACvC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,mDAAmD;QACnD,KAAK,MAAM,OAAO,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE,CAAC;YACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC3B,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACnC,IAAI,KAAK,EAAE,CAAC;wBACV,MAAM,KAAK,GAAG,kCAAkC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAC7D,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;4BAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;oBAClC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAU,EACV,MAAc;IAEd,IAAI,CAAC;QACH,yCAAyC;QACzC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACpD,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,0EAA0E,MAAM,EAAE,CACnF,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,OAAO,IAAI,CAAC;YACzB,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC,EAAE,MAAM,CAAC,CAAC;QAEX,IAAI,QAAQ,EAAE,UAAU,EAAE,CAAC;YACzB,OAAO;gBACL,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,IAAI,IAAI,kBAAkB;aACvE,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAU;IAC7C,oCAAoC;IACpC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAEhC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;QACvC,MAAM,OAAO,GAAsB,EAAE,CAAC;QAEtC,sDAAsD;QACtD,MAAM,WAAW,GAAG,QAAQ,CAAC,gBAAgB,CAC3C,2FAA2F,CAC5F,CAAC;QAEF,gEAAgE;QAChE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,WAAW,GAAG,QAAQ,CAAC,gBAAgB,CAAC,+BAA+B,CAAC,CAAC;YAC/E,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;YAE/B,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC3B,MAAM,IAAI,GAAI,IAA0B,CAAC,IAAI,CAAC;gBAC9C,MAAM,KAAK,GAAG,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7D,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnB,MAAM,KAAK,GACT,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE;wBACnE,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE;wBACxB,UAAU,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAEjC,OAAO,CAAC,IAAI,CAAC;wBACX,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;wBACZ,KAAK;wBACL,WAAW,EAAE,EAAE;wBACf,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;wBACd,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,IAAI;wBACpD,UAAU,EAAE,IAAI;wBAChB,YAAY,EAAE,CAAC;wBACf,QAAQ,EAAE,CAAC;qBACZ,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAU,EACV,SAAiB,EACjB,UAAmB;IAEnB,mDAAmD;IACnD,IAAI,SAA6B,CAAC;IAElC,MAAM,cAAc,GAAG,mCAAmC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3E,IAAI,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxB,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,sCAAsC;IACtC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1E,SAAS,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACxF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4CAA4C;IAC5C,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,6DAA6D,UAAU,aAAa,SAAS,EAAE,CAAC;YAE/G,uCAAuC;YACvC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBACxF,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACvF,OAAO,SAAS,EAAE,eAAe,EAAE,WAAW,IAAI,IAAI,CAAC;YACzD,CAAC,CAAC,CAAC;YAEH,IAAI,SAAS,EAAE,CAAC;gBACd,wDAAwD;gBACxD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;oBAC9C,OAAO,EAAE;wBACP,aAAa,EAAE,UAAU,SAAS,EAAE;qBACrC;iBACF,CAAC,CAAC;gBAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;oBAClB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACnC,4EAA4E;oBAC5E,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;oBACrC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;oBAC5B,IAAI,KAAK,IAAI,KAAK,KAAK,gBAAgB,EAAE,CAAC;wBACxC,OAAO;4BACL,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,SAAS;4BAC3B,KAAK;4BACL,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;4BACtC,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,SAAS;4BAC7B,YAAY,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI;4BACzC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;4BACtC,YAAY,EAAE,OAAO,CAAC,SAAS,IAAI,CAAC;4BACpC,QAAQ,EAAE,CAAC;yBACZ,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,oCAAoC;QACtC,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;QACzC,MAAM,QAAQ,GAAG,mCAAmC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChF,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAE/B,8CAA8C;QAC9C,IAAI,KAAK,GAAG,EAAE,CAAC;QAEf,2DAA2D;QAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;QACrE,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC;YACxE,oDAAoD;YACpD,IAAI,MAAM;gBAAE,SAAS;YACrB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,SAAS;YAC9B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,SAAS;YAClD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,SAAS;YACnD,IAAI,IAAI,KAAK,WAAW;gBAAE,SAAS;YACnC,IAAI,IAAI,KAAK,SAAS;gBAAE,SAAS;YAEjC,yBAAyB;YACzB,KAAK,GAAG,IAAI,CAAC;YACb,MAAM;QACR,CAAC;QAED,+DAA+D;QAC/D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CACjC,QAAQ,CAAC,gBAAgB,CAAC,sCAAsC,CAAC,CAClE,CAAC;YACF,KAAK,MAAM,SAAS,IAAI,gBAAgB,EAAE,CAAC;gBACzC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAC9B,0EAA0E,CAC3E,CAAC;gBACF,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;oBACvD,IAAI,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC;wBACjC,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;wBACnC,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,KAAK,GAAG,gBAAgB,CAAC;QAC3B,CAAC;QAED,OAAO;YACL,EAAE;YACF,KAAK;YACL,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,EAAE;YACR,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC;SACZ,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAU,EACV,SAAiB,EACjB,UAAkB;IAElB,gCAAgC;IAChC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CACpC,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE;QAClC,IAAI,CAAC;YACH,+BAA+B;YAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACxF,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACvF,MAAM,KAAK,GAAG,SAAS,EAAE,eAAe,EAAE,WAAW,CAAC;YAEtD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBACpC,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,6DAA6D,UAAU,wCAAwC,SAAS,iBAAiB,EACzI;gBACE,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,KAAK,EAAE;iBACjC;aACF,CACF,CAAC;YAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;gBACpD,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAE9B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACnC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CACxB,CAAC,GAOA,EAAE,EAAE,CAAC,CAAC;oBACL,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI;oBACpC,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,CAAC;oBAC3B,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,CAAC;oBAC7B,QAAQ,EAAE,GAAG,CAAC,UAAU,KAAK,QAAQ;iBACtC,CAAC,CACH,CAAC;YACJ,CAAC;YAED,OAAO,EAAE,CAAC;QACZ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACpD,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,EACD,EAAE,SAAS,EAAE,UAAU,EAAE,CAC1B,CAAC;IAEF,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAU,EACV,SAAiB,EACjB,UAAkB,EAClB,UAAkB;IAElB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAC/B,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE;QAC9C,IAAI,CAAC;YACH,iBAAiB;YACjB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACxF,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACvF,MAAM,KAAK,GAAG,SAAS,EAAE,eAAe,EAAE,WAAW,CAAC;YAEtD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,6DAA6D,UAAU,6BAA6B,UAAU,eAAe,SAAS,2DAA2D,EACjM;gBACE,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,KAAK,EAAE;iBACjC;aACF,CACF,CAAC;YAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAE9B,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/D,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAC5B,CACE,IAKC,EACD,KAAa,EACb,EAAE,CAAC,CAAC;oBACJ,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,QAAQ,EAAE,IAAI,CAAC,aAAa,IAAI,KAAK;oBACrC,UAAU;oBACV,QAAQ,EAAE,IAAI,CAAC,UAAU,KAAK,QAAQ;oBACtC,WAAW,EAAE,KAAK;iBACnB,CAAC,CACH,CAAC;YACJ,CAAC;YAED,OAAO,EAAE,CAAC;QACZ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAC/C,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,EACD,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,CACtC,CAAC;IAEF,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,IAAU,EACV,SAAiB,EACjB,UAAsD;IAEtD,yCAAyC;IACzC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC/B,MAAM,YAAY,GAAG,mCAAmC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;IAEpC,6CAA6C;IAC7C,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAEhC,IAAI,UAAU,GAAkB,IAAI,CAAC;IAErC,kDAAkD;IAClD,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3D,IAAI,QAAQ,EAAE,CAAC;QACb,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;IACnC,CAAC;IAED,qCAAqC;IACrC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,UAAU,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yEAAyE;IACzE,IAAI,mBAAmB,GAAkB,IAAI,CAAC;IAE9C,MAAM,eAAe,GAAG,KAAK,EAAE,QAAuC,EAAE,EAAE;QACxE,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;QAC3B,IACE,SAAS;YACT,GAAG,CAAC,QAAQ,CAAC,aAAa,SAAS,EAAE,CAAC;YACtC,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EACnC,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnC,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;oBACxB,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;gBAC3C,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,2BAA2B;YAC7B,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAErC,4EAA4E;IAC5E,kEAAkE;IAClE,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;QACzB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,aAAa;KACzB,CAAC,CAAC;IACH,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAEhC,qBAAqB;IACrB,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAEtC,yBAAyB;IACzB,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAEvE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8DAA8D;IAC9D,IAAI,mBAAmB,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,gBAAgB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAChF,MAAM,CAAC,KAAK,GAAG,mBAAmB,CAAC;IACrC,CAAC;IAED,iEAAiE;IACjE,IAAI,MAAM,CAAC,KAAK,KAAK,gBAAgB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACvD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YACxC,uDAAuD;YACvD,MAAM,SAAS,GAAG;gBAChB,0BAA0B;gBAC1B,yBAAyB;gBACzB,yBAAyB;gBACzB,wBAAwB;gBACxB,UAAU;gBACV,UAAU;gBACV,+BAA+B;gBAC/B,oBAAoB;gBACpB,oBAAoB;aACrB,CAAC;YAEF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAC5C,MAAM,IAAI,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;gBACrC,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;oBACjD,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAED,2CAA2C;YAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;YACrE,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBACzC,IACE,IAAI,CAAC,MAAM,GAAG,CAAC;oBACf,IAAI,CAAC,MAAM,GAAG,GAAG;oBACjB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACpC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;oBACrC,IAAI,KAAK,aAAa;oBACtB,IAAI,KAAK,SAAS;oBAClB,IAAI,KAAK,gBAAgB,EACzB,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAE5D,qBAAqB;IACrB,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAExE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IAE1E,kCAAkC;IAClC,MAAM,mBAAmB,GAA2C,EAAE,CAAC;IAEvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC;QAEhC,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,UAAU,EAAE,CAAC;gBACX,KAAK,EAAE,OAAO;gBACd,eAAe,EAAE,QAAQ,CAAC,KAAK;gBAC/B,oBAAoB,EAAE,CAAC;gBACvB,aAAa,EAAE,IAAI;aACpB,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,UAAU,EAAE,CAAC;YACX,KAAK,EAAE,OAAO;YACd,eAAe,EAAE,QAAQ,CAAC,KAAK;YAC/B,oBAAoB,EAAE,CAAC;SACxB,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAE3E,UAAU,EAAE,CAAC;YACX,KAAK,EAAE,OAAO;YACd,eAAe,EAAE,QAAQ,CAAC,KAAK;YAC/B,oBAAoB,EAAE,CAAC;YACvB,UAAU,EAAE,KAAK,CAAC,MAAM;SACzB,CAAC,CAAC;QAEH,mBAAmB,CAAC,IAAI,CAAC;YACvB,GAAG,QAAQ;YACX,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAED,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAEhC,6BAA6B;IAC7B,MAAM,CAAC,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAE9F,OAAO;QACL,MAAM;QACN,UAAU,EAAE,mBAAmB;QAC/B,UAAU;QACV,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,IAAI;SACR,WAAW,EAAE;SACb,OAAO,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;QAC3B,MAAM,YAAY,GAA2B;YAC3C,CAAC,EAAE,IAAI;YACP,CAAC,EAAE,IAAI;YACP,CAAC,EAAE,IAAI;YACP,CAAC,EAAE,IAAI;SACR,CAAC;QACF,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IACpC,CAAC,CAAC;SACD,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,IAAY;IAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc,EAAE,SAAiB;IACrE,OAAO,WAAW,MAAM,qBAAqB,SAAS,iBAAiB,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAc,EACd,SAAiB,EACjB,UAAkB,EAClB,MAAc;IAEd,OAAO,WAAW,MAAM,qBAAqB,SAAS,eAAe,UAAU,UAAU,MAAM,iBAAiB,CAAC;AACnH,CAAC"}
1
+ {"version":3,"file":"navigator.js","sourceRoot":"","sources":["../../../src/scraper/highlevel/navigator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,188 @@
1
+ /**
2
+ * Zod schemas for HighLevel API responses.
3
+ * These provide runtime validation and type inference.
4
+ */
5
+ import { z } from "zod";
6
+ export { FirebaseAuthTokenSchema, type FirebaseAuthToken, type FirebaseAuthRaw, } from "../../shared/firebase.js";
7
+ export declare const PortalSettingsResponseSchema: z.ZodObject<{
8
+ locationId: z.ZodString;
9
+ portalName: z.ZodOptional<z.ZodString>;
10
+ name: z.ZodOptional<z.ZodString>;
11
+ }, z.core.$strip>;
12
+ export type PortalSettingsResponse = z.infer<typeof PortalSettingsResponseSchema>;
13
+ export declare const VideoLicenseResponseSchema: z.ZodObject<{
14
+ url: z.ZodString;
15
+ token: z.ZodString;
16
+ }, z.core.$strip>;
17
+ export type VideoLicenseResponse = z.infer<typeof VideoLicenseResponseSchema>;
18
+ export declare const PostDetailsSchema: z.ZodObject<{
19
+ title: z.ZodOptional<z.ZodString>;
20
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
21
+ video: z.ZodOptional<z.ZodNullable<z.ZodObject<{
22
+ id: z.ZodOptional<z.ZodString>;
23
+ assetId: z.ZodOptional<z.ZodString>;
24
+ assetsLicenseId: z.ZodOptional<z.ZodString>;
25
+ url: z.ZodOptional<z.ZodString>;
26
+ }, z.core.$strip>>>;
27
+ posterImage: z.ZodOptional<z.ZodNullable<z.ZodObject<{
28
+ assetId: z.ZodOptional<z.ZodString>;
29
+ url: z.ZodOptional<z.ZodString>;
30
+ }, z.core.$strip>>>;
31
+ contentBlock: z.ZodOptional<z.ZodArray<z.ZodObject<{
32
+ type: z.ZodString;
33
+ id: z.ZodOptional<z.ZodString>;
34
+ assetId: z.ZodOptional<z.ZodString>;
35
+ assetsLicenseId: z.ZodOptional<z.ZodString>;
36
+ url: z.ZodOptional<z.ZodString>;
37
+ }, z.core.$strip>>>;
38
+ materials: z.ZodOptional<z.ZodArray<z.ZodObject<{
39
+ id: z.ZodOptional<z.ZodString>;
40
+ name: z.ZodOptional<z.ZodString>;
41
+ url: z.ZodOptional<z.ZodString>;
42
+ type: z.ZodOptional<z.ZodString>;
43
+ }, z.core.$strip>>>;
44
+ post_materials: z.ZodOptional<z.ZodArray<z.ZodObject<{
45
+ id: z.ZodOptional<z.ZodString>;
46
+ name: z.ZodOptional<z.ZodString>;
47
+ url: z.ZodOptional<z.ZodString>;
48
+ type: z.ZodOptional<z.ZodString>;
49
+ }, z.core.$strip>>>;
50
+ }, z.core.$strip>;
51
+ export declare const PostDetailsResponseSchema: z.ZodObject<{
52
+ post: z.ZodOptional<z.ZodObject<{
53
+ title: z.ZodOptional<z.ZodString>;
54
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
55
+ video: z.ZodOptional<z.ZodNullable<z.ZodObject<{
56
+ id: z.ZodOptional<z.ZodString>;
57
+ assetId: z.ZodOptional<z.ZodString>;
58
+ assetsLicenseId: z.ZodOptional<z.ZodString>;
59
+ url: z.ZodOptional<z.ZodString>;
60
+ }, z.core.$strip>>>;
61
+ posterImage: z.ZodOptional<z.ZodNullable<z.ZodObject<{
62
+ assetId: z.ZodOptional<z.ZodString>;
63
+ url: z.ZodOptional<z.ZodString>;
64
+ }, z.core.$strip>>>;
65
+ contentBlock: z.ZodOptional<z.ZodArray<z.ZodObject<{
66
+ type: z.ZodString;
67
+ id: z.ZodOptional<z.ZodString>;
68
+ assetId: z.ZodOptional<z.ZodString>;
69
+ assetsLicenseId: z.ZodOptional<z.ZodString>;
70
+ url: z.ZodOptional<z.ZodString>;
71
+ }, z.core.$strip>>>;
72
+ materials: z.ZodOptional<z.ZodArray<z.ZodObject<{
73
+ id: z.ZodOptional<z.ZodString>;
74
+ name: z.ZodOptional<z.ZodString>;
75
+ url: z.ZodOptional<z.ZodString>;
76
+ type: z.ZodOptional<z.ZodString>;
77
+ }, z.core.$strip>>>;
78
+ post_materials: z.ZodOptional<z.ZodArray<z.ZodObject<{
79
+ id: z.ZodOptional<z.ZodString>;
80
+ name: z.ZodOptional<z.ZodString>;
81
+ url: z.ZodOptional<z.ZodString>;
82
+ type: z.ZodOptional<z.ZodString>;
83
+ }, z.core.$strip>>>;
84
+ }, z.core.$strip>>;
85
+ title: z.ZodOptional<z.ZodString>;
86
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
87
+ video: z.ZodOptional<z.ZodNullable<z.ZodObject<{
88
+ id: z.ZodOptional<z.ZodString>;
89
+ assetId: z.ZodOptional<z.ZodString>;
90
+ assetsLicenseId: z.ZodOptional<z.ZodString>;
91
+ url: z.ZodOptional<z.ZodString>;
92
+ }, z.core.$strip>>>;
93
+ posterImage: z.ZodOptional<z.ZodNullable<z.ZodObject<{
94
+ assetId: z.ZodOptional<z.ZodString>;
95
+ url: z.ZodOptional<z.ZodString>;
96
+ }, z.core.$strip>>>;
97
+ contentBlock: z.ZodOptional<z.ZodArray<z.ZodObject<{
98
+ type: z.ZodString;
99
+ id: z.ZodOptional<z.ZodString>;
100
+ assetId: z.ZodOptional<z.ZodString>;
101
+ assetsLicenseId: z.ZodOptional<z.ZodString>;
102
+ url: z.ZodOptional<z.ZodString>;
103
+ }, z.core.$strip>>>;
104
+ materials: z.ZodOptional<z.ZodArray<z.ZodObject<{
105
+ id: z.ZodOptional<z.ZodString>;
106
+ name: z.ZodOptional<z.ZodString>;
107
+ url: z.ZodOptional<z.ZodString>;
108
+ type: z.ZodOptional<z.ZodString>;
109
+ }, z.core.$strip>>>;
110
+ post_materials: z.ZodOptional<z.ZodArray<z.ZodObject<{
111
+ id: z.ZodOptional<z.ZodString>;
112
+ name: z.ZodOptional<z.ZodString>;
113
+ url: z.ZodOptional<z.ZodString>;
114
+ type: z.ZodOptional<z.ZodString>;
115
+ }, z.core.$strip>>>;
116
+ }, z.core.$strip>;
117
+ export type PostDetailsResponse = z.infer<typeof PostDetailsResponseSchema>;
118
+ export declare const CategorySchema: z.ZodObject<{
119
+ id: z.ZodString;
120
+ title: z.ZodString;
121
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
122
+ position: z.ZodOptional<z.ZodNumber>;
123
+ postCount: z.ZodOptional<z.ZodNumber>;
124
+ visibility: z.ZodOptional<z.ZodString>;
125
+ }, z.core.$strip>;
126
+ export declare const CategoriesResponseSchema: z.ZodObject<{
127
+ categories: z.ZodArray<z.ZodObject<{
128
+ id: z.ZodString;
129
+ title: z.ZodString;
130
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
131
+ position: z.ZodOptional<z.ZodNumber>;
132
+ postCount: z.ZodOptional<z.ZodNumber>;
133
+ visibility: z.ZodOptional<z.ZodString>;
134
+ }, z.core.$strip>>;
135
+ }, z.core.$strip>;
136
+ export type CategoriesResponse = z.infer<typeof CategoriesResponseSchema>;
137
+ export type Category = z.infer<typeof CategorySchema>;
138
+ export declare const PostSchema: z.ZodObject<{
139
+ id: z.ZodString;
140
+ title: z.ZodString;
141
+ indexPosition: z.ZodOptional<z.ZodNumber>;
142
+ visibility: z.ZodOptional<z.ZodString>;
143
+ }, z.core.$strip>;
144
+ export declare const PostsResponseSchema: z.ZodObject<{
145
+ category: z.ZodOptional<z.ZodObject<{
146
+ posts: z.ZodArray<z.ZodObject<{
147
+ id: z.ZodString;
148
+ title: z.ZodString;
149
+ indexPosition: z.ZodOptional<z.ZodNumber>;
150
+ visibility: z.ZodOptional<z.ZodString>;
151
+ }, z.core.$strip>>;
152
+ }, z.core.$strip>>;
153
+ }, z.core.$strip>;
154
+ export type PostsResponse = z.infer<typeof PostsResponseSchema>;
155
+ export type Post = z.infer<typeof PostSchema>;
156
+ export declare const ProductSchema: z.ZodObject<{
157
+ id: z.ZodOptional<z.ZodString>;
158
+ title: z.ZodString;
159
+ description: z.ZodOptional<z.ZodString>;
160
+ posterImage: z.ZodOptional<z.ZodNullable<z.ZodString>>;
161
+ instructor: z.ZodOptional<z.ZodNullable<z.ZodString>>;
162
+ postCount: z.ZodOptional<z.ZodNumber>;
163
+ }, z.core.$strip>;
164
+ export declare const ProductResponseSchema: z.ZodObject<{
165
+ product: z.ZodOptional<z.ZodObject<{
166
+ id: z.ZodOptional<z.ZodString>;
167
+ title: z.ZodString;
168
+ description: z.ZodOptional<z.ZodString>;
169
+ posterImage: z.ZodOptional<z.ZodNullable<z.ZodString>>;
170
+ instructor: z.ZodOptional<z.ZodNullable<z.ZodString>>;
171
+ postCount: z.ZodOptional<z.ZodNumber>;
172
+ }, z.core.$strip>>;
173
+ id: z.ZodOptional<z.ZodString>;
174
+ title: z.ZodOptional<z.ZodString>;
175
+ description: z.ZodOptional<z.ZodString>;
176
+ posterImage: z.ZodOptional<z.ZodNullable<z.ZodString>>;
177
+ instructor: z.ZodOptional<z.ZodNullable<z.ZodString>>;
178
+ postCount: z.ZodOptional<z.ZodNumber>;
179
+ }, z.core.$strip>;
180
+ export type ProductResponse = z.infer<typeof ProductResponseSchema>;
181
+ export type Product = z.infer<typeof ProductSchema>;
182
+ /**
183
+ * Safely parses data with a Zod schema.
184
+ * Returns the parsed data or null if validation fails.
185
+ * Logs validation errors for debugging.
186
+ */
187
+ export declare function safeParse<T>(schema: z.ZodType<T>, data: unknown, context?: string): T | null;
188
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/scraper/highlevel/schemas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EACL,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,eAAe,GACrB,MAAM,0BAA0B,CAAC;AAMlC,eAAO,MAAM,4BAA4B;;;;iBAIvC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAMlF,eAAO,MAAM,0BAA0B;;;iBAGrC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAiC9E,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQ5B,CAAC;AAGH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAUpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAM5E,eAAO,MAAM,cAAc;;;;;;;iBAOzB,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;iBAEnC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAMtD,eAAO,MAAM,UAAU;;;;;iBAKrB,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;iBAM9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAM9C,eAAO,MAAM,aAAa;;;;;;;iBAOxB,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;iBAShC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAMpD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAW5F"}