webforai 2.1.0 → 3.0.0

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 (154) hide show
  1. package/README.md +63 -1
  2. package/dist/adapters/index.js +58 -0
  3. package/dist/adapters/registry.js +149 -0
  4. package/dist/adapters/sites/declarative.js +178 -0
  5. package/dist/adapters/sites/hackernews.js +94 -0
  6. package/dist/adapters/sites/youtube.js +165 -0
  7. package/dist/adapters/types.js +0 -0
  8. package/dist/bin.js +3199 -399
  9. package/dist/cjs/adapters/index.js +86 -0
  10. package/dist/cjs/adapters/registry.js +178 -0
  11. package/dist/cjs/adapters/sites/declarative.js +202 -0
  12. package/dist/cjs/adapters/sites/hackernews.js +117 -0
  13. package/dist/cjs/adapters/sites/youtube.js +191 -0
  14. package/dist/cjs/adapters/types.js +16 -0
  15. package/dist/cjs/constants.js +2 -2
  16. package/dist/cjs/extractors/index.js +8 -0
  17. package/dist/cjs/extractors/lib/constants.js +186 -0
  18. package/dist/cjs/extractors/lib/sanitize.js +425 -0
  19. package/dist/cjs/extractors/lib/score.js +264 -0
  20. package/dist/cjs/extractors/lib/terminators.js +131 -0
  21. package/dist/cjs/extractors/lib/ui-chrome.js +119 -0
  22. package/dist/cjs/extractors/pipeExtractors.js +12 -9
  23. package/dist/cjs/extractors/presets/auto.js +44 -0
  24. package/dist/cjs/extractors/presets/minimal-filter.js +27 -48
  25. package/dist/cjs/extractors/presets/takumi.js +84 -122
  26. package/dist/cjs/html-to-markdown.js +44 -7
  27. package/dist/cjs/html-to-mdast.js +9 -1
  28. package/dist/cjs/index.js +33 -2
  29. package/dist/cjs/mdast-handlers/custom-a-handler.js +25 -9
  30. package/dist/cjs/mdast-handlers/custom-img-handler.js +23 -1
  31. package/dist/cjs/mdast-handlers/custom-table-handler.js +16 -0
  32. package/dist/cjs/mdast-handlers/definition-list-handler.js +99 -0
  33. package/dist/cjs/mdast-handlers/math-handler.js +12 -3
  34. package/dist/cjs/mdast-handlers/sup-sub-handler.js +39 -0
  35. package/dist/cjs/metadata/index.js +223 -0
  36. package/dist/cjs/normalize/index.js +168 -0
  37. package/dist/cjs/platform/client.js +147 -0
  38. package/dist/cjs/platform/error.js +36 -0
  39. package/dist/cjs/platform/fetch.js +37 -0
  40. package/dist/cjs/platform/index.js +40 -0
  41. package/dist/cjs/platform/types.js +34 -0
  42. package/dist/cjs/utils/hast-fast.js +284 -0
  43. package/dist/constants.js +2 -2
  44. package/dist/extractors/index.js +5 -0
  45. package/dist/extractors/lib/constants.js +150 -0
  46. package/dist/extractors/lib/sanitize.js +415 -0
  47. package/dist/extractors/lib/score.js +242 -0
  48. package/dist/extractors/lib/terminators.js +107 -0
  49. package/dist/extractors/lib/ui-chrome.js +96 -0
  50. package/dist/extractors/pipeExtractors.js +12 -9
  51. package/dist/extractors/presets/auto.js +20 -0
  52. package/dist/extractors/presets/minimal-filter.js +35 -47
  53. package/dist/extractors/presets/takumi.js +91 -122
  54. package/dist/html-to-markdown.js +42 -6
  55. package/dist/html-to-mdast.js +9 -1
  56. package/dist/index.js +34 -3
  57. package/dist/mdast-handlers/custom-a-handler.js +25 -9
  58. package/dist/mdast-handlers/custom-img-handler.js +23 -1
  59. package/dist/mdast-handlers/custom-table-handler.js +16 -0
  60. package/dist/mdast-handlers/definition-list-handler.js +76 -0
  61. package/dist/mdast-handlers/math-handler.js +12 -3
  62. package/dist/mdast-handlers/sup-sub-handler.js +16 -0
  63. package/dist/metadata/index.js +198 -0
  64. package/dist/normalize/index.js +149 -0
  65. package/dist/platform/client.js +125 -0
  66. package/dist/platform/error.js +13 -0
  67. package/dist/platform/fetch.js +14 -0
  68. package/dist/platform/index.js +19 -0
  69. package/dist/platform/types.js +9 -0
  70. package/dist/types/adapters/index.d.ts +24 -0
  71. package/dist/types/adapters/index.js.map +1 -0
  72. package/dist/types/adapters/registry.d.ts +35 -0
  73. package/dist/types/adapters/registry.js.map +1 -0
  74. package/dist/types/adapters/sites/declarative.d.ts +13 -0
  75. package/dist/types/adapters/sites/declarative.js.map +1 -0
  76. package/dist/types/adapters/sites/hackernews.d.ts +13 -0
  77. package/dist/types/adapters/sites/hackernews.js.map +1 -0
  78. package/dist/types/adapters/sites/youtube.d.ts +31 -0
  79. package/dist/types/adapters/sites/youtube.js.map +1 -0
  80. package/dist/types/adapters/types.d.ts +99 -0
  81. package/dist/types/adapters/types.js.map +1 -0
  82. package/dist/types/cli/bin.js.map +1 -1
  83. package/dist/types/cli/commands/skill/content.d.ts +9 -0
  84. package/dist/types/cli/commands/skill/content.js.map +1 -0
  85. package/dist/types/cli/commands/skill/index.d.ts +19 -0
  86. package/dist/types/cli/commands/skill/index.js.map +1 -0
  87. package/dist/types/cli/commands/webforai/interactive.d.ts +7 -0
  88. package/dist/types/cli/commands/webforai/interactive.js.map +1 -0
  89. package/dist/types/cli/commands/webforai/loadHtml.js.map +1 -1
  90. package/dist/types/cli/commands/webforai/options.d.ts +55 -0
  91. package/dist/types/cli/commands/webforai/options.js.map +1 -0
  92. package/dist/types/cli/commands/webforai/run.d.ts +10 -0
  93. package/dist/types/cli/commands/webforai/run.js.map +1 -0
  94. package/dist/types/cli/constants.d.ts +14 -4
  95. package/dist/types/cli/constants.js.map +1 -1
  96. package/dist/types/cli/helpers/selectExtractMode.js.map +1 -1
  97. package/dist/types/cli/helpers/selectLoader.js.map +1 -1
  98. package/dist/types/constants.d.ts +7 -1
  99. package/dist/types/constants.js.map +1 -1
  100. package/dist/types/extractors/index.d.ts +2 -0
  101. package/dist/types/extractors/index.js.map +1 -1
  102. package/dist/types/extractors/lib/constants.d.ts +81 -0
  103. package/dist/types/extractors/lib/constants.js.map +1 -0
  104. package/dist/types/extractors/lib/sanitize.d.ts +66 -0
  105. package/dist/types/extractors/lib/sanitize.js.map +1 -0
  106. package/dist/types/extractors/lib/score.d.ts +85 -0
  107. package/dist/types/extractors/lib/score.js.map +1 -0
  108. package/dist/types/extractors/lib/terminators.d.ts +26 -0
  109. package/dist/types/extractors/lib/terminators.js.map +1 -0
  110. package/dist/types/extractors/lib/ui-chrome.d.ts +18 -0
  111. package/dist/types/extractors/lib/ui-chrome.js.map +1 -0
  112. package/dist/types/extractors/pipeExtractors.d.ts +5 -0
  113. package/dist/types/extractors/pipeExtractors.js.map +1 -1
  114. package/dist/types/extractors/presets/auto.d.ts +30 -0
  115. package/dist/types/extractors/presets/auto.js.map +1 -0
  116. package/dist/types/extractors/presets/minimal-filter.d.ts +10 -2
  117. package/dist/types/extractors/presets/minimal-filter.js.map +1 -1
  118. package/dist/types/extractors/presets/takumi.d.ts +19 -3
  119. package/dist/types/extractors/presets/takumi.js.map +1 -1
  120. package/dist/types/extractors/types.d.ts +8 -0
  121. package/dist/types/html-to-markdown.d.ts +38 -0
  122. package/dist/types/html-to-markdown.js.map +1 -1
  123. package/dist/types/html-to-mdast.d.ts +11 -0
  124. package/dist/types/html-to-mdast.js.map +1 -1
  125. package/dist/types/index.d.ts +6 -3
  126. package/dist/types/index.js.map +1 -1
  127. package/dist/types/mdast-handlers/custom-a-handler.js.map +1 -1
  128. package/dist/types/mdast-handlers/custom-img-handler.js.map +1 -1
  129. package/dist/types/mdast-handlers/custom-table-handler.js.map +1 -1
  130. package/dist/types/mdast-handlers/definition-list-handler.d.ts +13 -0
  131. package/dist/types/mdast-handlers/definition-list-handler.js.map +1 -0
  132. package/dist/types/mdast-handlers/math-handler.js.map +1 -1
  133. package/dist/types/mdast-handlers/sup-sub-handler.d.ts +10 -0
  134. package/dist/types/mdast-handlers/sup-sub-handler.js.map +1 -0
  135. package/dist/types/metadata/index.d.ts +47 -0
  136. package/dist/types/metadata/index.js.map +1 -0
  137. package/dist/types/normalize/index.d.ts +53 -0
  138. package/dist/types/normalize/index.js.map +1 -0
  139. package/dist/types/platform/client.d.ts +54 -0
  140. package/dist/types/platform/client.js.map +1 -0
  141. package/dist/types/platform/error.d.ts +20 -0
  142. package/dist/types/platform/error.js.map +1 -0
  143. package/dist/types/platform/fetch.d.ts +34 -0
  144. package/dist/types/platform/fetch.js.map +1 -0
  145. package/dist/types/platform/index.d.ts +4 -0
  146. package/dist/types/platform/index.js.map +1 -0
  147. package/dist/types/platform/types.d.ts +135 -0
  148. package/dist/types/platform/types.js.map +1 -0
  149. package/dist/types/utils/hast-fast.d.ts +101 -0
  150. package/dist/types/utils/hast-fast.js.map +1 -0
  151. package/dist/utils/hast-fast.js +246 -0
  152. package/package.json +10 -3
  153. package/dist/types/cli/commands/webforai/index.d.ts +0 -6
  154. package/dist/types/cli/commands/webforai/index.js.map +0 -1
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var normalize_exports = {};
20
+ __export(normalize_exports, {
21
+ bestFromSrcset: () => bestFromSrcset,
22
+ dedupeRenderedMath: () => dedupeRenderedMath,
23
+ normalizeHast: () => normalizeHast,
24
+ promoteAriaHeadings: () => promoteAriaHeadings,
25
+ resolveImageSources: () => resolveImageSources
26
+ });
27
+ module.exports = __toCommonJS(normalize_exports);
28
+ var import_hast_fast = require("../utils/hast-fast");
29
+ const LAZY_SRC_ATTRIBUTES = [
30
+ "data-src",
31
+ "data-original",
32
+ "data-lazy-src",
33
+ "data-original-src",
34
+ "data-actualsrc",
35
+ "data-hi-res-src",
36
+ "data-echo"
37
+ ];
38
+ const PLACEHOLDER_SRC = /^$|^data:image\/|^about:blank$|spacer\.gif$|blank\.(gif|png)$/i;
39
+ const readSrcset = (element, attribute) => {
40
+ const raw = (0, import_hast_fast.property)(element, attribute);
41
+ if (typeof raw === "string") {
42
+ return raw;
43
+ }
44
+ if (Array.isArray(raw)) {
45
+ return raw.join(", ");
46
+ }
47
+ return void 0;
48
+ };
49
+ const bestFromSrcset = (srcset) => {
50
+ let best;
51
+ for (const entry of srcset.split(",")) {
52
+ const parts = entry.trim().split(/\s+/);
53
+ const url = parts[0];
54
+ if (!url) {
55
+ continue;
56
+ }
57
+ const descriptor = parts[1];
58
+ let weight = 1;
59
+ if (descriptor?.endsWith("w")) {
60
+ weight = Number.parseFloat(descriptor) || 1;
61
+ } else if (descriptor?.endsWith("x")) {
62
+ weight = (Number.parseFloat(descriptor) || 1) * 1e3;
63
+ }
64
+ if (!best || weight > best.weight) {
65
+ best = { url, weight };
66
+ }
67
+ }
68
+ return best?.url;
69
+ };
70
+ const resolveImageSources = (tree) => {
71
+ (0, import_hast_fast.walk)(tree, (node) => {
72
+ if (!(0, import_hast_fast.isElement)(node) || node.tagName !== "img") {
73
+ return;
74
+ }
75
+ const current = (0, import_hast_fast.stringProperty)(node, "src");
76
+ if (current && !PLACEHOLDER_SRC.test(current)) {
77
+ return;
78
+ }
79
+ for (const attribute of LAZY_SRC_ATTRIBUTES) {
80
+ const candidate = (0, import_hast_fast.stringProperty)(node, attribute);
81
+ if (candidate && !PLACEHOLDER_SRC.test(candidate)) {
82
+ node.properties.src = candidate;
83
+ return;
84
+ }
85
+ }
86
+ for (const attribute of ["srcSet", "srcset", "data-srcset"]) {
87
+ const srcset = readSrcset(node, attribute);
88
+ const best = srcset ? bestFromSrcset(srcset) : void 0;
89
+ if (best) {
90
+ node.properties.src = best;
91
+ return;
92
+ }
93
+ }
94
+ });
95
+ };
96
+ const katexDuplicates = (node) => {
97
+ const classes = (0, import_hast_fast.classList)(node);
98
+ if (!(classes.includes("katex") || classes.includes("katex-display"))) {
99
+ return [];
100
+ }
101
+ const hasMathml = node.children.some((child) => (0, import_hast_fast.isElement)(child) && (0, import_hast_fast.classList)(child).includes("katex-mathml"));
102
+ if (!hasMathml) {
103
+ return [];
104
+ }
105
+ return node.children.filter((child) => (0, import_hast_fast.isElement)(child) && (0, import_hast_fast.classList)(child).includes("katex-html"));
106
+ };
107
+ const mediawikiDuplicates = (node) => {
108
+ if (!(0, import_hast_fast.classList)(node).includes("mwe-math-element")) {
109
+ return [];
110
+ }
111
+ return node.children.filter(
112
+ (child) => (0, import_hast_fast.isElement)(child) && (0, import_hast_fast.classList)(child).some((name) => name.startsWith("mwe-math-fallback-image"))
113
+ );
114
+ };
115
+ const mathjaxDuplicates = (node) => {
116
+ if (node.tagName !== "mjx-container") {
117
+ return [];
118
+ }
119
+ return node.children.filter((child) => (0, import_hast_fast.isElement)(child) && child.tagName !== "mjx-assistive-mml");
120
+ };
121
+ const dedupeRenderedMath = (tree) => {
122
+ const doomed = /* @__PURE__ */ new Set();
123
+ (0, import_hast_fast.walk)(tree, (node) => {
124
+ if (!(0, import_hast_fast.isElement)(node)) {
125
+ return;
126
+ }
127
+ for (const duplicate of [...katexDuplicates(node), ...mathjaxDuplicates(node), ...mediawikiDuplicates(node)]) {
128
+ doomed.add(duplicate);
129
+ }
130
+ });
131
+ if (doomed.size > 0) {
132
+ (0, import_hast_fast.pruneInPlace)(tree, (node) => !((0, import_hast_fast.isElement)(node) && doomed.has(node)));
133
+ }
134
+ };
135
+ const promoteAriaHeadings = (tree) => {
136
+ (0, import_hast_fast.walk)(tree, (node) => {
137
+ if (!(0, import_hast_fast.isElement)(node) || (0, import_hast_fast.stringProperty)(node, "role") !== "heading") {
138
+ return;
139
+ }
140
+ if (/^h[1-6]$/.test(node.tagName)) {
141
+ return;
142
+ }
143
+ const level = (0, import_hast_fast.numericProperty)(node, "aria-level") ?? 2;
144
+ const clamped = Math.min(6, Math.max(1, Math.round(level)));
145
+ node.tagName = `h${clamped}`;
146
+ });
147
+ };
148
+ const normalizeHast = (tree, options = {}) => {
149
+ const { images = true, math = true, ariaHeadings = true } = options;
150
+ if (images) {
151
+ resolveImageSources(tree);
152
+ }
153
+ if (math) {
154
+ dedupeRenderedMath(tree);
155
+ }
156
+ if (ariaHeadings) {
157
+ promoteAriaHeadings(tree);
158
+ }
159
+ return tree;
160
+ };
161
+ // Annotate the CommonJS export names for ESM import in node:
162
+ 0 && (module.exports = {
163
+ bestFromSrcset,
164
+ dedupeRenderedMath,
165
+ normalizeHast,
166
+ promoteAriaHeadings,
167
+ resolveImageSources
168
+ });
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var client_exports = {};
20
+ __export(client_exports, {
21
+ DEFAULT_BASE_URL: () => DEFAULT_BASE_URL,
22
+ createPlatformClient: () => createPlatformClient
23
+ });
24
+ module.exports = __toCommonJS(client_exports);
25
+ var import_error = require("./error");
26
+ var import_fetch = require("./fetch");
27
+ var import_types = require("./types");
28
+ const DEFAULT_BASE_URL = "https://platform.webforai.dev";
29
+ const TERMINAL_STATES = /* @__PURE__ */ new Set(["completed", "failed"]);
30
+ const sleep = (ms, signal) => new Promise((resolve, reject) => {
31
+ if (signal?.aborted) {
32
+ reject(signal.reason instanceof Error ? signal.reason : new Error("aborted"));
33
+ return;
34
+ }
35
+ const timer = setTimeout(() => {
36
+ signal?.removeEventListener("abort", onAbort);
37
+ resolve();
38
+ }, ms);
39
+ const onAbort = () => {
40
+ clearTimeout(timer);
41
+ reject(signal?.reason instanceof Error ? signal.reason : new Error("aborted"));
42
+ };
43
+ signal?.addEventListener("abort", onAbort, { once: true });
44
+ });
45
+ const parseRetryAfter = (body, response) => {
46
+ const fromBody = body?.error?.retryAfter;
47
+ if (typeof fromBody === "number") {
48
+ return fromBody;
49
+ }
50
+ const header = Number(response.headers.get("retry-after"));
51
+ return Number.isFinite(header) && header > 0 ? header : void 0;
52
+ };
53
+ const toApiError = (response, body) => {
54
+ const envelope = body;
55
+ const code = typeof envelope?.error?.code === "string" ? envelope.error.code : "invalid_response";
56
+ const message = typeof envelope?.error?.message === "string" ? envelope.error.message : `unexpected response (HTTP ${response.status})`;
57
+ return new import_error.PlatformApiError(code, message, response.status, parseRetryAfter(body, response));
58
+ };
59
+ const createPlatformClient = (options = {}) => {
60
+ const baseUrl = (options.baseUrl ?? DEFAULT_BASE_URL).replace(/\/+$/, "");
61
+ const fetchImpl = (0, import_fetch.resolveFetch)(options.fetch);
62
+ const request = async (path, init) => {
63
+ const headers = { accept: "application/json" };
64
+ if (init.body !== void 0) {
65
+ headers["content-type"] = "application/json";
66
+ }
67
+ if (init.auth) {
68
+ if (!options.apiKey) {
69
+ throw new import_error.PlatformApiError(
70
+ "missing_api_key",
71
+ "This endpoint needs an API key: pass `apiKey` to createPlatformClient (create one on the platform dashboard).",
72
+ 0
73
+ );
74
+ }
75
+ headers.authorization = `Bearer ${options.apiKey}`;
76
+ }
77
+ const response = await fetchImpl(`${baseUrl}${path}`, {
78
+ method: init.method,
79
+ headers,
80
+ body: init.body === void 0 ? void 0 : JSON.stringify(init.body)
81
+ });
82
+ const body = await response.json().catch(() => void 0);
83
+ if (!response.ok) {
84
+ throw toApiError(response, body);
85
+ }
86
+ if (body === void 0) {
87
+ throw new import_error.PlatformApiError("invalid_response", "response body is not JSON", response.status);
88
+ }
89
+ return body;
90
+ };
91
+ const getJob = (jobId) => request(`/v1/jobs/${encodeURIComponent(jobId)}`, { method: "GET", auth: true });
92
+ const getJobResults = (jobId, opts) => {
93
+ const query = opts?.cursor ? `?cursor=${encodeURIComponent(opts.cursor)}` : "";
94
+ return request(`/v1/jobs/${encodeURIComponent(jobId)}/results${query}`, { method: "GET", auth: true });
95
+ };
96
+ const resolveStored = async (resultUrl) => {
97
+ const response = await fetchImpl(resultUrl, { method: "GET" });
98
+ if (!response.ok) {
99
+ throw new import_error.PlatformApiError(
100
+ "artifact_fetch_failed",
101
+ `stored result fetch failed (HTTP ${response.status}) \u2014 result URLs expire after ~24h`,
102
+ response.status
103
+ );
104
+ }
105
+ return await response.json();
106
+ };
107
+ return {
108
+ scrape: (opts) => request("/v1/scrape", { method: "POST", body: opts, auth: true }),
109
+ scrapeAsync: (opts) => request("/v1/scrape", { method: "POST", body: { ...opts, async: true }, auth: true }),
110
+ batch: (opts) => request("/v1/batch", { method: "POST", body: opts, auth: true }),
111
+ crawl: (opts) => request("/v1/crawl", { method: "POST", body: opts, auth: true }),
112
+ getJob,
113
+ getJobResults,
114
+ waitForJob: async (jobId, opts = {}) => {
115
+ const interval = opts.pollIntervalMs ?? 2e3;
116
+ const timeout = opts.timeoutMs ?? 10 * 60 * 1e3;
117
+ const startedAt = Date.now();
118
+ for (; ; ) {
119
+ const status = await getJob(jobId);
120
+ opts.onStatus?.(status);
121
+ if (TERMINAL_STATES.has(status.status)) {
122
+ return status;
123
+ }
124
+ if (Date.now() - startedAt + interval > timeout) {
125
+ throw new import_error.PlatformApiError("poll_timeout", `job ${jobId} still ${status.status} after ${timeout}ms`, 0);
126
+ }
127
+ await sleep(interval, opts.signal);
128
+ }
129
+ },
130
+ jobResults: async function* (jobId) {
131
+ let cursor;
132
+ do {
133
+ const page = await getJobResults(jobId, { cursor });
134
+ for (const item of page.results) {
135
+ yield (0, import_types.isStoredPageStub)(item) ? await resolveStored(item.resultUrl) : item;
136
+ }
137
+ cursor = page.cursor;
138
+ } while (cursor);
139
+ },
140
+ demoScrape: (opts) => request("/v1/demo/scrape", { method: "POST", body: opts, auth: false })
141
+ };
142
+ };
143
+ // Annotate the CommonJS export names for ESM import in node:
144
+ 0 && (module.exports = {
145
+ DEFAULT_BASE_URL,
146
+ createPlatformClient
147
+ });
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var error_exports = {};
20
+ __export(error_exports, {
21
+ PlatformApiError: () => PlatformApiError
22
+ });
23
+ module.exports = __toCommonJS(error_exports);
24
+ class PlatformApiError extends Error {
25
+ constructor(code, message, status, retryAfter) {
26
+ super(message);
27
+ this.name = "PlatformApiError";
28
+ this.code = code;
29
+ this.status = status;
30
+ this.retryAfter = retryAfter;
31
+ }
32
+ }
33
+ // Annotate the CommonJS export names for ESM import in node:
34
+ 0 && (module.exports = {
35
+ PlatformApiError
36
+ });
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var fetch_exports = {};
20
+ __export(fetch_exports, {
21
+ resolveFetch: () => resolveFetch
22
+ });
23
+ module.exports = __toCommonJS(fetch_exports);
24
+ const resolveFetch = (custom) => {
25
+ if (custom) {
26
+ return custom;
27
+ }
28
+ const globalFetch = globalThis.fetch;
29
+ if (typeof globalFetch !== "function") {
30
+ throw new Error("No global fetch in this runtime \u2014 pass a fetch implementation to createPlatformClient({ fetch })");
31
+ }
32
+ return globalFetch.bind(globalThis);
33
+ };
34
+ // Annotate the CommonJS export names for ESM import in node:
35
+ 0 && (module.exports = {
36
+ resolveFetch
37
+ });
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var platform_exports = {};
20
+ __export(platform_exports, {
21
+ DEFAULT_BASE_URL: () => import_client.DEFAULT_BASE_URL,
22
+ ENGINES: () => import_types.ENGINES,
23
+ PlatformApiError: () => import_error.PlatformApiError,
24
+ REGIONS: () => import_types.REGIONS,
25
+ createPlatformClient: () => import_client.createPlatformClient,
26
+ isStoredPageStub: () => import_types.isStoredPageStub
27
+ });
28
+ module.exports = __toCommonJS(platform_exports);
29
+ var import_client = require("./client");
30
+ var import_error = require("./error");
31
+ var import_types = require("./types");
32
+ // Annotate the CommonJS export names for ESM import in node:
33
+ 0 && (module.exports = {
34
+ DEFAULT_BASE_URL,
35
+ ENGINES,
36
+ PlatformApiError,
37
+ REGIONS,
38
+ createPlatformClient,
39
+ isStoredPageStub
40
+ });
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var types_exports = {};
20
+ __export(types_exports, {
21
+ ENGINES: () => ENGINES,
22
+ REGIONS: () => REGIONS,
23
+ isStoredPageStub: () => isStoredPageStub
24
+ });
25
+ module.exports = __toCommonJS(types_exports);
26
+ const ENGINES = ["fetch", "browser", "proxy-fetch", "proxy-browser"];
27
+ const REGIONS = ["auto", "us", "eu", "uk", "jp", "asia"];
28
+ const isStoredPageStub = (item) => item.status === "ok" && "resultUrl" in item;
29
+ // Annotate the CommonJS export names for ESM import in node:
30
+ 0 && (module.exports = {
31
+ ENGINES,
32
+ REGIONS,
33
+ isStoredPageStub
34
+ });