devflare 1.0.0-next.47 → 1.0.0-next.49

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 (61) hide show
  1. package/README.md +1 -0
  2. package/dist/_chunks/{account-Cdo_cRNv.js → account-BI3WZMDy.js} +1 -1
  3. package/dist/_chunks/{build-artifacts-CaSTDXLE.js → build-artifacts-DU5V0J0Z.js} +3 -3
  4. package/dist/_chunks/{build-B6vCBDdQ.js → build-e0KR38-4.js} +1 -1
  5. package/dist/_chunks/{cli-Ba6JBLOz.js → cli-DuUz10Mn.js} +49 -14
  6. package/dist/_chunks/{command-utils-C48hJMln.js → command-utils-DA0Qx9_K.js} +1 -1
  7. package/dist/_chunks/{compiler-Dc97FkBg.js → compiler-Zw16C9Pi.js} +1 -1
  8. package/dist/_chunks/{config-DQ_uWv37.js → config-Brju62xy.js} +2 -2
  9. package/dist/_chunks/{config-path-ePwIvHNX.js → config-path-DaL1ylZ_.js} +1 -1
  10. package/dist/_chunks/{deploy-0w_38g8h.js → deploy-B-Kku1Vk.js} +127 -10
  11. package/dist/_chunks/{dev-DaREvpZf.js → dev-D4e_RRZn.js} +3 -3
  12. package/dist/_chunks/{doctor-lFlh-olK.js → doctor-jm_K4dxL.js} +2 -2
  13. package/dist/_chunks/{family-Dfb9VR9g.js → family-_9-mGSfO.js} +1 -1
  14. package/dist/_chunks/{loader-RZhqzsRJ.js → loader-Cr0_OWPy.js} +137 -2
  15. package/dist/_chunks/{login-DnyfffOC.js → login-FjTAAQbi.js} +1 -1
  16. package/dist/_chunks/{preview-resources-xziKCynb.js → preview-resources-CGMBjsYB.js} +1 -1
  17. package/dist/_chunks/{previews-wI-pW6HM.js → previews-C7hs9-BT.js} +6 -6
  18. package/dist/_chunks/{productions-BpROdhLN.js → productions-T9Als4fE.js} +3 -3
  19. package/dist/_chunks/{routes-C4S8x2HU.js → routes-BFYCqHb-.js} +1 -1
  20. package/dist/_chunks/{runtime-FvXvfuZ2.js → runtime-DL-Nz3k8.js} +1 -1
  21. package/dist/_chunks/tail-IY-ijYmv.js +239 -0
  22. package/dist/_chunks/{types-Zn9vyUGA.js → types-DoKsMYfm.js} +2 -2
  23. package/dist/_chunks/{vite-D5dfVb6G.js → vite-CGtVNf5E.js} +35 -3
  24. package/dist/_chunks/{worker-rL5udcl9.js → worker-BEZI4od1.js} +3 -3
  25. package/dist/browser.d.ts +10 -2
  26. package/dist/browser.d.ts.map +1 -1
  27. package/dist/cli/commands/deploy.d.ts.map +1 -1
  28. package/dist/cli/commands/tail.d.ts +44 -0
  29. package/dist/cli/commands/tail.d.ts.map +1 -0
  30. package/dist/cli/gradual-deploy.d.ts +49 -0
  31. package/dist/cli/gradual-deploy.d.ts.map +1 -0
  32. package/dist/cli/help-pages/pages/core.d.ts +1 -1
  33. package/dist/cli/help-pages/pages/core.d.ts.map +1 -1
  34. package/dist/cli/help-pages/pages/misc.d.ts.map +1 -1
  35. package/dist/cli/help-pages/shared.d.ts +1 -1
  36. package/dist/cli/help-pages/shared.d.ts.map +1 -1
  37. package/dist/cli/index.d.ts.map +1 -1
  38. package/dist/cli/index.js +1 -1
  39. package/dist/config/cron.d.ts +19 -0
  40. package/dist/config/cron.d.ts.map +1 -0
  41. package/dist/config/schema-env.d.ts +10 -2
  42. package/dist/config/schema-env.d.ts.map +1 -1
  43. package/dist/config/schema-runtime.d.ts +9 -1
  44. package/dist/config/schema-runtime.d.ts.map +1 -1
  45. package/dist/config/schema.d.ts +15 -3
  46. package/dist/config/schema.d.ts.map +1 -1
  47. package/dist/index.js +3 -3
  48. package/dist/runtime/index.d.ts +1 -1
  49. package/dist/runtime/index.d.ts.map +1 -1
  50. package/dist/runtime/index.js +2 -2
  51. package/dist/runtime/middleware.d.ts +10 -0
  52. package/dist/runtime/middleware.d.ts.map +1 -1
  53. package/dist/sveltekit/index.js +1 -1
  54. package/dist/test/index.js +4 -3
  55. package/dist/test/scheduled.d.ts.map +1 -1
  56. package/dist/vite/index.js +1 -1
  57. package/dist/worker-entry/composed-worker.d.ts.map +1 -1
  58. package/dist/worker-entry/validate-fetch-style.d.ts +12 -0
  59. package/dist/worker-entry/validate-fetch-style.d.ts.map +1 -0
  60. package/package.json +1 -1
  61. /package/dist/_chunks/{token-kguIDmej.js → token-Dmi0KXyX.js} +0 -0
@@ -40,6 +40,128 @@ const envConfigSchemaInner = z.lazy(() => z.object(rootConfigShape).omit({
40
40
  accountId: true,
41
41
  wsRoutes: true
42
42
  }).partial().strict());
43
+ //#endregion
44
+ //#region src/config/cron.ts
45
+ const CRON_FIELDS = [
46
+ {
47
+ name: "minute",
48
+ min: 0,
49
+ max: 59
50
+ },
51
+ {
52
+ name: "hour",
53
+ min: 0,
54
+ max: 23
55
+ },
56
+ {
57
+ name: "day-of-month",
58
+ min: 1,
59
+ max: 31
60
+ },
61
+ {
62
+ name: "month",
63
+ min: 1,
64
+ max: 12,
65
+ names: {
66
+ JAN: 1,
67
+ FEB: 2,
68
+ MAR: 3,
69
+ APR: 4,
70
+ MAY: 5,
71
+ JUN: 6,
72
+ JUL: 7,
73
+ AUG: 8,
74
+ SEP: 9,
75
+ OCT: 10,
76
+ NOV: 11,
77
+ DEC: 12
78
+ }
79
+ },
80
+ {
81
+ name: "day-of-week",
82
+ min: 0,
83
+ max: 7,
84
+ names: {
85
+ SUN: 0,
86
+ MON: 1,
87
+ TUE: 2,
88
+ WED: 3,
89
+ THU: 4,
90
+ FRI: 5,
91
+ SAT: 6
92
+ }
93
+ }
94
+ ];
95
+ /** Resolve a single value token (number or 3-letter name) for a field. */
96
+ function resolveFieldValue(token, field) {
97
+ if (/^\d+$/.test(token)) {
98
+ const value = Number.parseInt(token, 10);
99
+ if (value < field.min || value > field.max) return null;
100
+ return value;
101
+ }
102
+ if (field.names) {
103
+ const named = field.names[token.toUpperCase()];
104
+ if (named !== void 0) return named;
105
+ }
106
+ return null;
107
+ }
108
+ /** Validate a single non-`*` element (a number, range, or stepped form). */
109
+ function isValidFieldElement(element, field) {
110
+ let base = element;
111
+ let step = null;
112
+ const slashIndex = element.indexOf("/");
113
+ if (slashIndex !== -1) {
114
+ base = element.slice(0, slashIndex);
115
+ step = element.slice(slashIndex + 1);
116
+ if (!/^\d+$/.test(step) || Number.parseInt(step, 10) < 1) return false;
117
+ }
118
+ if (base === "*") return true;
119
+ const dashIndex = base.indexOf("-");
120
+ if (dashIndex !== -1) {
121
+ const startToken = base.slice(0, dashIndex);
122
+ const endToken = base.slice(dashIndex + 1);
123
+ const start = resolveFieldValue(startToken, field);
124
+ const end = resolveFieldValue(endToken, field);
125
+ if (start === null || end === null) return false;
126
+ return start <= end;
127
+ }
128
+ return resolveFieldValue(base, field) !== null;
129
+ }
130
+ /** Validate a single cron field (which may be a comma-separated list). */
131
+ function isValidCronField(value, field) {
132
+ if (value.length === 0) return false;
133
+ const elements = value.split(",");
134
+ for (const element of elements) if (element.length === 0 || !isValidFieldElement(element, field)) return false;
135
+ return true;
136
+ }
137
+ /**
138
+ * Returns true when `expression` is a valid Cloudflare 5-field cron expression.
139
+ *
140
+ * Accepts `*`, numbers, ranges (`1-5`), lists (`1,3,5`), steps (`*\/5`,
141
+ * `1-30/5`, `5/15`) and the 3-letter month (`JAN`-`DEC`) / weekday
142
+ * (`SUN`-`SAT`) names, with the correct per-field numeric ranges. Cloudflare
143
+ * cron has no seconds and no year field, so anything other than 5 fields is
144
+ * rejected.
145
+ */
146
+ function isValidCronExpression(expression) {
147
+ if (typeof expression !== "string") return false;
148
+ const fields = expression.trim().split(/\s+/);
149
+ if (fields.length !== CRON_FIELDS.length) return false;
150
+ for (let index = 0; index < CRON_FIELDS.length; index++) if (!isValidCronField(fields[index], CRON_FIELDS[index])) return false;
151
+ return true;
152
+ }
153
+ /**
154
+ * Human-readable message for an invalid cron expression, naming the bad value.
155
+ */
156
+ function formatInvalidCronMessage(expression) {
157
+ return `Invalid cron expression "${expression}". Cloudflare cron triggers use 5 fields: minute (0-59) hour (0-23) day-of-month (1-31) month (1-12 or JAN-DEC) day-of-week (0-7 or SUN-SAT). Each field accepts *, numbers, ranges (1-5), lists (1,3,5) and steps (*/5).`;
158
+ }
159
+ /**
160
+ * Throw a descriptive error when `expression` is not a valid cron expression.
161
+ */
162
+ function assertValidCronExpression(expression) {
163
+ if (!isValidCronExpression(expression)) throw new Error(formatInvalidCronMessage(expression));
164
+ }
43
165
  /**
44
166
  * Cloudflare Workers compatibility date schema.
45
167
  * Must be in YYYY-MM-DD format (e.g., '2025-01-07').
@@ -77,8 +199,21 @@ const tailConsumerSchema = z.union([z.string().min(1), z.object({
77
199
  }).strict()]);
78
200
  /**
79
201
  * Trigger configuration for scheduled (cron) events.
202
+ *
203
+ * Each cron expression is validated against the Cloudflare 5-field cron grammar
204
+ * at config-parse time, so a typo fails before deploy instead of silently never
205
+ * firing in production.
80
206
  */
81
- const triggersSchema = z.object({ crons: z.array(z.string()).optional() }).optional();
207
+ const triggersSchema = z.object({ crons: z.array(z.string()).optional() }).superRefine((triggers, ctx) => {
208
+ if (!triggers.crons) return;
209
+ triggers.crons.forEach((cron, index) => {
210
+ if (!isValidCronExpression(cron)) ctx.addIssue({
211
+ code: z.ZodIssueCode.custom,
212
+ path: ["crons", index],
213
+ message: formatInvalidCronMessage(cron)
214
+ });
215
+ });
216
+ }).optional();
82
217
  /**
83
218
  * Preview-specific Devflare behavior.
84
219
  */
@@ -1150,4 +1285,4 @@ var ConfigValidationError = class extends Error {
1150
1285
  }
1151
1286
  };
1152
1287
  //#endregion
1153
- export { ConfigResourceResolutionError as a, prepareConfigResourcesForDeploy as c, configSchema as d, normalizeCompatibilityFlags as f, resolveConfigPath as i, mergeConfigForEnvironment as l, ConfigValidationError as n, loadResolvedConfig as o, loadConfig as r, resolveResources as s, ConfigNotFoundError as t, resolveConfigForEnvironment as u };
1288
+ export { ConfigResourceResolutionError as a, prepareConfigResourcesForDeploy as c, configSchema as d, assertValidCronExpression as f, resolveConfigPath as i, mergeConfigForEnvironment as l, ConfigValidationError as n, loadResolvedConfig as o, normalizeCompatibilityFlags as p, loadConfig as r, resolveResources as s, ConfigNotFoundError as t, resolveConfigForEnvironment as u };
@@ -1,6 +1,6 @@
1
1
  import { t as account } from "./cloudflare-BaloqI3H.js";
2
2
  import { d as green, f as logLine, g as yellow, h as whiteDim, o as dim, r as createCliTheme } from "./ui-BUoZApvE.js";
3
- import { n as getConfiguredAccountId } from "./command-utils-C48hJMln.js";
3
+ import { n as getConfiguredAccountId } from "./command-utils-DA0Qx9_K.js";
4
4
  import { t as getDependencies } from "./dependencies-C2oxFjU_.js";
5
5
  //#region src/cli/commands/login.ts
6
6
  async function logResolvedAccount(cwd, logger, theme) {
@@ -1,5 +1,5 @@
1
1
  import { n as materializePreviewScopedConfig, r as materializePreviewScopedString, t as isPreviewScopedName } from "./preview-C3Cdr8an.js";
2
- import { l as mergeConfigForEnvironment } from "./loader-RZhqzsRJ.js";
2
+ import { l as mergeConfigForEnvironment } from "./loader-Cr0_OWPy.js";
3
3
  import { g as normalizeR2Binding, h as normalizeQueueProducer } from "./schema-normalization-BCwTLTGp.js";
4
4
  import { d as getPrimaryAccount, n as getEffectiveAccountId } from "./preferences-BKp_7XJx.js";
5
5
  import { _ as listR2Buckets, a as createVectorizeIndex, c as deleteKVNamespace, d as deleteVectorizeIndex, g as listQueues, h as listKVNamespaces, i as createR2Bucket, l as deleteQueue, m as listHyperdrives, n as createKVNamespace, o as deleteD1Database, p as listD1Databases, r as createQueue, s as deleteHyperdrive, t as createD1Database, u as deleteR2Bucket, v as listVectorizeIndexes } from "./account-resources-CsmVowJp.js";
@@ -1,13 +1,13 @@
1
1
  import { a as resolvePreviewIdentifier } from "./preview-C3Cdr8an.js";
2
- import { i as resolveConfigPath, o as loadResolvedConfig, r as loadConfig, t as ConfigNotFoundError } from "./loader-RZhqzsRJ.js";
3
- import { t as compileBuildConfig } from "./compiler-Dc97FkBg.js";
2
+ import { i as resolveConfigPath, o as loadResolvedConfig, r as loadConfig, t as ConfigNotFoundError } from "./loader-Cr0_OWPy.js";
3
+ import { t as compileBuildConfig } from "./compiler-Zw16C9Pi.js";
4
4
  import { t as account } from "./cloudflare-BaloqI3H.js";
5
5
  import { _ as yellowBold, a as cyanBold, d as green, f as logLine, g as yellow, h as whiteDim, m as red, n as bold, o as dim, r as createCliTheme, u as formatTableLine } from "./ui-BUoZApvE.js";
6
- import { i as resolveNamedSelection, r as resolveCloudflareAccountId, t as asOptionalString } from "./command-utils-C48hJMln.js";
6
+ import { i as resolveNamedSelection, r as resolveCloudflareAccountId, t as asOptionalString } from "./command-utils-DA0Qx9_K.js";
7
7
  import { t as getDependencies } from "./dependencies-C2oxFjU_.js";
8
- import { t as cleanupPreviewScopedResources } from "./preview-resources-xziKCynb.js";
9
- import { t as findConfigPathsUnderDirectory } from "./config-path-ePwIvHNX.js";
10
- import { a as orderPreviewWorkerNamesForDeletion, i as collectConfiguredWorkerFamilies, n as buildPreviewWorkerCandidatesByScope, r as buildStableWorkerRowsFromLiveWorkers, t as buildPreviewScopeRowsFromLiveWorkers } from "./family-Dfb9VR9g.js";
8
+ import { t as cleanupPreviewScopedResources } from "./preview-resources-CGMBjsYB.js";
9
+ import { t as findConfigPathsUnderDirectory } from "./config-path-DaL1ylZ_.js";
10
+ import { a as orderPreviewWorkerNamesForDeletion, i as collectConfiguredWorkerFamilies, n as buildPreviewWorkerCandidatesByScope, r as buildStableWorkerRowsFromLiveWorkers, t as buildPreviewScopeRowsFromLiveWorkers } from "./family-_9-mGSfO.js";
11
11
  //#region src/cli/preview-bindings.ts
12
12
  function normalizeCell(value) {
13
13
  return (value ?? "").trim().replace(/\s+/g, " ");
@@ -1,10 +1,10 @@
1
- import { r as loadConfig, t as ConfigNotFoundError } from "./loader-RZhqzsRJ.js";
1
+ import { r as loadConfig, t as ConfigNotFoundError } from "./loader-Cr0_OWPy.js";
2
2
  import { t as account } from "./cloudflare-BaloqI3H.js";
3
3
  import { a as cyanBold, d as green, f as logLine, g as yellow, h as whiteDim, l as formatLabelValue, m as red, n as bold, o as dim, p as logTable, r as createCliTheme } from "./ui-BUoZApvE.js";
4
4
  import { i as findFiles } from "./glob-CmQOvunB.js";
5
- import { i as resolveNamedSelection, r as resolveCloudflareAccountId, t as asOptionalString } from "./command-utils-C48hJMln.js";
5
+ import { i as resolveNamedSelection, r as resolveCloudflareAccountId, t as asOptionalString } from "./command-utils-DA0Qx9_K.js";
6
6
  import { t as getDependencies } from "./dependencies-C2oxFjU_.js";
7
- import { i as collectConfiguredWorkerFamilies } from "./family-Dfb9VR9g.js";
7
+ import { i as collectConfiguredWorkerFamilies } from "./family-_9-mGSfO.js";
8
8
  //#region src/cli/commands/productions.ts
9
9
  const CLI_API_OPTIONS = { timeout: 1e4 };
10
10
  const PRODUCTION_SUBCOMMANDS = [
@@ -1,4 +1,4 @@
1
- import { d as configSchema } from "./loader-RZhqzsRJ.js";
1
+ import { d as configSchema } from "./loader-Cr0_OWPy.js";
2
2
  import { _ as normalizeSecretsStoreBinding, c as normalizeFlagshipBinding, f as normalizeMediaBinding, g as normalizeR2Binding, h as normalizeQueueProducer, i as normalizeArtifactsBinding, l as normalizeHyperdriveBinding, m as normalizePipelineBinding, n as getLocalKVNamespaceIdentifier, o as normalizeDOBinding, p as normalizeMtlsCertificateBinding, s as normalizeDispatchNamespaceBinding, t as getLocalD1DatabaseIdentifier, u as normalizeImagesBinding, v as normalizeStreamBinding, x as normalizeWorkflowBinding } from "./schema-normalization-BCwTLTGp.js";
3
3
  import { n as findDurableObjectClasses } from "./durable-object-DMtH0XYX.js";
4
4
  import { r as SUPPORTED_WORKER_EXTENSIONS, t as transformWorkerEntrypoint } from "./worker-entrypoint-CQW77lG8.js";
@@ -547,4 +547,4 @@ function createRouteResolve(routes, initialEvent) {
547
547
  };
548
548
  }
549
549
  //#endregion
550
- export { env as _, assertExplicitScheduledHandlerStyle as a, vars as b, defineQueueHandler as c, invokeFetchModule as d, markResolveStyle as f, ctx as g, sequence as h, assertExplicitQueueHandlerStyle as i, defineScheduledHandler as l, resolveFetchHandler as m, invokeRouteModules as n, createResolveFetch as o, markWorkerStyle as p, matchFetchRoute as r, defineFetchHandler as s, createRouteResolve as t, invokeFetchHandler as u, event as v, locals as y };
550
+ export { ctx as _, assertExplicitQueueHandlerStyle as a, locals as b, defineFetchHandler as c, invokeFetchHandler as d, invokeFetchModule as f, sequence as g, resolveFetchHandler as h, assertExplicit2ArgStyle as i, defineQueueHandler as l, markWorkerStyle as m, invokeRouteModules as n, assertExplicitScheduledHandlerStyle as o, markResolveStyle as p, matchFetchRoute as r, createResolveFetch as s, createRouteResolve as t, defineScheduledHandler as u, env as v, vars as x, event as y };
@@ -0,0 +1,239 @@
1
+ import { r as loadConfig } from "./loader-Cr0_OWPy.js";
2
+ import { p as getApiToken } from "./api-TzdliH-6.js";
3
+ import { d as green, f as logLine, g as yellow, h as whiteDim, m as red, o as dim, r as createCliTheme } from "./ui-BUoZApvE.js";
4
+ import { r as resolveCloudflareAccountId, t as asOptionalString } from "./command-utils-DA0Qx9_K.js";
5
+ //#region src/cli/commands/tail.ts
6
+ const CLOUDFLARE_API_BASE = "https://api.cloudflare.com/client/v4";
7
+ const TAIL_SUBPROTOCOL = "trace-v1";
8
+ function parseTailFormat(value) {
9
+ const normalized = asOptionalString(value)?.toLowerCase();
10
+ if (normalized === void 0 || normalized === "pretty") return "pretty";
11
+ if (normalized === "json") return "json";
12
+ throw new Error(`--format must be "pretty" or "json", received "${String(value)}".`);
13
+ }
14
+ function formatTimestamp(timestamp) {
15
+ if (typeof timestamp !== "number" || !Number.isFinite(timestamp)) return (/* @__PURE__ */ new Date()).toISOString();
16
+ return new Date(timestamp).toISOString();
17
+ }
18
+ function describeTriggerEvent(event) {
19
+ if (!event) return "event";
20
+ if (event.request?.url) return `${event.request.method ?? "GET"} ${event.request.url}`;
21
+ if (event.cron) return `cron ${event.cron}`;
22
+ if (event.queue) return `queue ${event.queue}`;
23
+ if (event.mailFrom) return `email from ${event.mailFrom}`;
24
+ if (event.rpcMethod) return `rpc ${event.rpcMethod}`;
25
+ return "event";
26
+ }
27
+ function stringifyLogMessage(message) {
28
+ if (typeof message === "string") return message;
29
+ if (Array.isArray(message)) return message.map((part) => stringifyLogMessage(part)).join(" ");
30
+ if (message === void 0) return "";
31
+ try {
32
+ return JSON.stringify(message);
33
+ } catch {
34
+ return String(message);
35
+ }
36
+ }
37
+ /**
38
+ * Render one trace event as the lines `devflare tail` prints in pretty mode.
39
+ * Returns an ordered list of `{ level, text }` so the caller can route each
40
+ * line to the matching logger method (and tests can assert content without
41
+ * ANSI noise).
42
+ */
43
+ function formatTailEventLines(event) {
44
+ const lines = [];
45
+ const timestamp = formatTimestamp(event.eventTimestamp);
46
+ const outcome = event.outcome ?? "unknown";
47
+ const trigger = describeTriggerEvent(event.event);
48
+ const scriptName = event.scriptName ? ` ${event.scriptName}` : "";
49
+ lines.push({
50
+ level: outcome === "ok" ? "info" : "error",
51
+ text: `[${timestamp}]${scriptName} ${trigger} — ${outcome}`
52
+ });
53
+ for (const log of event.logs ?? []) {
54
+ const level = log.level ?? "log";
55
+ const text = stringifyLogMessage(log.message);
56
+ lines.push({
57
+ level: level === "error" || level === "warn" ? level : "info",
58
+ text: ` ${level}: ${text}`
59
+ });
60
+ }
61
+ for (const exception of event.exceptions ?? []) {
62
+ const name = exception.name ?? "Error";
63
+ const message = exception.message ?? "";
64
+ lines.push({
65
+ level: "error",
66
+ text: ` exception ${name}: ${message}`
67
+ });
68
+ }
69
+ return lines;
70
+ }
71
+ async function readEnvelope(response, endpoint) {
72
+ const text = await response.text();
73
+ let parsed;
74
+ try {
75
+ parsed = JSON.parse(text);
76
+ } catch {
77
+ throw new Error(`Cloudflare ${endpoint} returned an invalid response (status ${response.status}).`);
78
+ }
79
+ if (!parsed.success) {
80
+ const first = parsed.errors?.[0];
81
+ throw new Error(first ? `Cloudflare ${endpoint} failed (${first.code}): ${first.message}` : `Cloudflare ${endpoint} failed (status ${response.status}).`);
82
+ }
83
+ return parsed.result;
84
+ }
85
+ async function createTail(accountId, workerName, token) {
86
+ const result = await readEnvelope(await fetch(`${CLOUDFLARE_API_BASE}/accounts/${accountId}/workers/scripts/${encodeURIComponent(workerName)}/tails`, {
87
+ method: "POST",
88
+ headers: {
89
+ Authorization: `Bearer ${token}`,
90
+ "Content-Type": "application/json"
91
+ }
92
+ }), `create tail for ${workerName}`);
93
+ return {
94
+ id: result.id,
95
+ url: result.url,
96
+ expiresAt: result.expires_at
97
+ };
98
+ }
99
+ async function deleteTail(accountId, workerName, tailId, token) {
100
+ const response = await fetch(`${CLOUDFLARE_API_BASE}/accounts/${accountId}/workers/scripts/${encodeURIComponent(workerName)}/tails/${encodeURIComponent(tailId)}`, {
101
+ method: "DELETE",
102
+ headers: { Authorization: `Bearer ${token}` }
103
+ });
104
+ if (!response.ok) await readEnvelope(response, `delete tail ${tailId}`);
105
+ }
106
+ function parseTailMessage(raw) {
107
+ const parsed = JSON.parse(raw);
108
+ if (Array.isArray(parsed)) return parsed;
109
+ return [parsed];
110
+ }
111
+ async function resolveWorkerName(parsed, cwd, configFile, fallbackArg) {
112
+ const explicit = asOptionalString(parsed.options.worker) ?? fallbackArg;
113
+ if (explicit) return explicit;
114
+ try {
115
+ return (await loadConfig({
116
+ cwd,
117
+ configFile
118
+ })).name;
119
+ } catch {
120
+ return;
121
+ }
122
+ }
123
+ async function runTailCommand(parsed, logger, options) {
124
+ const theme = createCliTheme(parsed.options);
125
+ const cwd = options.cwd ?? process.cwd();
126
+ const configFile = asOptionalString(parsed.options.config);
127
+ let format;
128
+ try {
129
+ format = parseTailFormat(parsed.options.format);
130
+ } catch (error) {
131
+ logger.error(error instanceof Error ? error.message : String(error));
132
+ return { exitCode: 1 };
133
+ }
134
+ const fallbackArg = parsed.args[0];
135
+ const workerName = await resolveWorkerName(parsed, cwd, configFile, fallbackArg);
136
+ if (!workerName) {
137
+ logger.error("No Worker name could be resolved.");
138
+ logLine(logger, dim("Pass a Worker name (`devflare tail <worker>`), --worker <name>, or run inside a configured package.", theme));
139
+ return { exitCode: 1 };
140
+ }
141
+ const token = await getApiToken();
142
+ if (!token) {
143
+ logger.error("Not authenticated with Cloudflare.");
144
+ logLine(logger, dim("Run `devflare login` first, or set CLOUDFLARE_API_TOKEN.", theme));
145
+ return { exitCode: 1 };
146
+ }
147
+ let configuredAccountId;
148
+ try {
149
+ configuredAccountId = (await loadConfig({
150
+ cwd,
151
+ configFile
152
+ })).accountId;
153
+ } catch {
154
+ configuredAccountId = void 0;
155
+ }
156
+ const accountId = await resolveCloudflareAccountId({
157
+ explicitAccountId: asOptionalString(parsed.options.account),
158
+ configuredAccountId
159
+ });
160
+ if (!accountId) {
161
+ logger.error("No Cloudflare account could be resolved.");
162
+ logLine(logger, dim("Use --account <id> or set accountId in devflare.config.* / CLOUDFLARE_ACCOUNT_ID.", theme));
163
+ return { exitCode: 1 };
164
+ }
165
+ logLine(logger);
166
+ logLine(logger, `${yellow("tail", theme)} ${dim("Streaming live logs from Cloudflare", theme)}`);
167
+ logLine(logger, `${dim("worker", theme)} ${green(workerName, theme)}`);
168
+ logLine(logger, `${dim("account", theme)} ${whiteDim(accountId, theme)}`);
169
+ let createdTail;
170
+ try {
171
+ createdTail = await createTail(accountId, workerName, token);
172
+ } catch (error) {
173
+ logger.error(error instanceof Error ? error.message : String(error));
174
+ return { exitCode: 1 };
175
+ }
176
+ logLine(logger, dim(`Connected to tail ${createdTail.id}${createdTail.expiresAt ? ` (expires ${createdTail.expiresAt})` : ""}. Press Ctrl-C to stop.`, theme));
177
+ const { WebSocket: WsWebSocket } = await import("ws");
178
+ return new Promise((resolve) => {
179
+ let settled = false;
180
+ const socket = new WsWebSocket(createdTail.url, TAIL_SUBPROTOCOL, { headers: {
181
+ Authorization: `Bearer ${token}`,
182
+ "User-Agent": "devflare"
183
+ } });
184
+ const cleanup = async (exitCode) => {
185
+ if (settled) return;
186
+ settled = true;
187
+ try {
188
+ socket.close();
189
+ } catch {}
190
+ process.off("SIGINT", onSigint);
191
+ try {
192
+ await deleteTail(accountId, workerName, createdTail.id, token);
193
+ } catch (error) {
194
+ logger.warn(`Could not delete the tail session ${createdTail.id}; it will expire on its own. ${error instanceof Error ? error.message : String(error)}`);
195
+ }
196
+ resolve({ exitCode });
197
+ };
198
+ const onSigint = () => {
199
+ logLine(logger);
200
+ logLine(logger, dim("Stopping tail…", theme));
201
+ cleanup(0);
202
+ };
203
+ process.on("SIGINT", onSigint);
204
+ socket.on("open", () => {
205
+ logger.success("Tail stream open");
206
+ });
207
+ socket.on("message", (data) => {
208
+ const raw = typeof data === "string" ? data : String(data);
209
+ let events;
210
+ try {
211
+ events = parseTailMessage(raw);
212
+ } catch {
213
+ logger.warn(`Received a non-JSON tail message: ${raw.slice(0, 200)}`);
214
+ return;
215
+ }
216
+ for (const event of events) {
217
+ if (format === "json") {
218
+ logger.log(JSON.stringify(event));
219
+ continue;
220
+ }
221
+ for (const line of formatTailEventLines(event)) if (line.level === "error") logLine(logger, red(line.text, theme));
222
+ else if (line.level === "warn") logLine(logger, yellow(line.text, theme));
223
+ else logLine(logger, line.text);
224
+ }
225
+ });
226
+ socket.on("error", (error) => {
227
+ logger.error(`Tail stream error: ${error.message}`);
228
+ cleanup(1);
229
+ });
230
+ socket.on("close", () => {
231
+ if (!settled) {
232
+ logLine(logger, dim("Tail stream closed.", theme));
233
+ cleanup(0);
234
+ }
235
+ });
236
+ });
237
+ }
238
+ //#endregion
239
+ export { runTailCommand };
@@ -1,11 +1,11 @@
1
- import { r as loadConfig } from "./loader-RZhqzsRJ.js";
1
+ import { r as loadConfig } from "./loader-Cr0_OWPy.js";
2
2
  import { o as normalizeDOBinding } from "./schema-normalization-BCwTLTGp.js";
3
3
  import { n as bold, o as dim, r as createCliTheme } from "./ui-BUoZApvE.js";
4
4
  import { n as findDurableObjectClasses } from "./durable-object-DMtH0XYX.js";
5
5
  import { i as findFiles, n as DEFAULT_ENTRYPOINT_PATTERN, t as DEFAULT_DO_PATTERN } from "./glob-CmQOvunB.js";
6
6
  import { n as discoverEntrypointsAsync, t as resolvePackageSpecifier } from "./resolve-package-qizBfCIm.js";
7
7
  import { t as getDependencies } from "./dependencies-C2oxFjU_.js";
8
- import { r as resolveConfigCandidatePath } from "./config-path-ePwIvHNX.js";
8
+ import { r as resolveConfigCandidatePath } from "./config-path-DaL1ylZ_.js";
9
9
  import { readFile } from "node:fs/promises";
10
10
  import { dirname, relative, resolve } from "pathe";
11
11
  //#region src/cli/commands/type-generation/discovery.ts
@@ -1,8 +1,9 @@
1
1
  import { d as resolveConfigEnvVars } from "./preview-C3Cdr8an.js";
2
- import { i as resolveConfigPath, o as loadResolvedConfig, r as loadConfig, s as resolveResources, u as resolveConfigForEnvironment } from "./loader-RZhqzsRJ.js";
2
+ import { i as resolveConfigPath, o as loadResolvedConfig, r as loadConfig, s as resolveResources, u as resolveConfigForEnvironment } from "./loader-Cr0_OWPy.js";
3
3
  import { o as normalizeDOBinding } from "./schema-normalization-BCwTLTGp.js";
4
- import { c as writeWranglerConfig, i as isolateViteBuildOutputPaths, n as compileConfig, o as rebaseWranglerConfigPaths, r as compileToProgrammaticConfig, t as compileBuildConfig } from "./compiler-Dc97FkBg.js";
5
- import { s as resolveServiceBindings, t as discoverRoutes } from "./routes-C4S8x2HU.js";
4
+ import { c as writeWranglerConfig, i as isolateViteBuildOutputPaths, n as compileConfig, o as rebaseWranglerConfigPaths, r as compileToProgrammaticConfig, t as compileBuildConfig } from "./compiler-Zw16C9Pi.js";
5
+ import { h as resolveFetchHandler, i as assertExplicit2ArgStyle } from "./runtime-DL-Nz3k8.js";
6
+ import { s as resolveServiceBindings, t as discoverRoutes } from "./routes-BFYCqHb-.js";
6
7
  import { n as findDurableObjectClasses } from "./durable-object-DMtH0XYX.js";
7
8
  import { r as SUPPORTED_WORKER_EXTENSIONS } from "./worker-entrypoint-CQW77lG8.js";
8
9
  import { i as findFiles, t as DEFAULT_DO_PATTERN } from "./glob-CmQOvunB.js";
@@ -172,6 +173,36 @@ function hasWorkerSurfacePaths(surfacePaths) {
172
173
  return Object.values(surfacePaths).some((surfacePath) => typeof surfacePath === "string" && surfacePath.length > 0);
173
174
  }
174
175
  //#endregion
176
+ //#region src/worker-entry/validate-fetch-style.ts
177
+ /**
178
+ * Validate the resolved fetch surface module's calling-convention style.
179
+ *
180
+ * `fetchSurfacePath` is the absolute, on-disk path devflare resolved for the
181
+ * fetch surface (`WorkerSurfacePaths.fetch`). When it is `null` there is no
182
+ * fetch surface to check.
183
+ *
184
+ * Throws the same `[devflare] Ambiguous 2-argument fetch handler …` error as
185
+ * the request-time check when the export is an unmarked 2-arg handler.
186
+ */
187
+ async function validateFetchHandlerStyle(fetchSurfacePath) {
188
+ if (!fetchSurfacePath) return;
189
+ if (looksLikeBuildArtifactPath(fetchSurfacePath)) return;
190
+ let surfaceModule;
191
+ try {
192
+ surfaceModule = await import(fetchSurfacePath);
193
+ } catch {
194
+ return;
195
+ }
196
+ let handler;
197
+ try {
198
+ handler = resolveFetchHandler(surfaceModule);
199
+ } catch {
200
+ return;
201
+ }
202
+ if (!handler) return;
203
+ assertExplicit2ArgStyle(handler);
204
+ }
205
+ //#endregion
175
206
  //#region src/worker-entry/composed-worker.ts
176
207
  /**
177
208
  * Minimal structured codegen helper used to emit the composed worker module.
@@ -547,6 +578,7 @@ async function prepareComposedWorkerEntrypoint(cwd, config, environment, options
547
578
  const surfacePaths = await resolveWorkerSurfacePaths(cwd, resolvedConfig);
548
579
  const routeDiscovery = await discoverRoutes(cwd, resolvedConfig);
549
580
  if (!needsComposedWorkerEntrypoint(cwd, surfacePaths, resolvedConfig, routeDiscovery)) return null;
581
+ await validateFetchHandlerStyle(surfacePaths.fetch);
550
582
  const fs = await import("node:fs/promises");
551
583
  const entryDir = resolve(cwd, ".devflare", "worker-entrypoints");
552
584
  const entryPath = resolve(entryDir, "main.ts");
@@ -1,9 +1,9 @@
1
- import { r as loadConfig } from "./loader-RZhqzsRJ.js";
1
+ import { r as loadConfig } from "./loader-Cr0_OWPy.js";
2
2
  import { o as normalizeDOBinding } from "./schema-normalization-BCwTLTGp.js";
3
3
  import { t as account } from "./cloudflare-BaloqI3H.js";
4
4
  import { d as green, f as logLine, g as yellow, h as whiteDim, n as bold, o as dim, r as createCliTheme } from "./ui-BUoZApvE.js";
5
- import { r as resolveCloudflareAccountId, t as asOptionalString } from "./command-utils-C48hJMln.js";
6
- import { n as formatSupportedConfigFilenames, r as resolveConfigCandidatePath, t as findConfigPathsUnderDirectory } from "./config-path-ePwIvHNX.js";
5
+ import { r as resolveCloudflareAccountId, t as asOptionalString } from "./command-utils-DA0Qx9_K.js";
6
+ import { n as formatSupportedConfigFilenames, r as resolveConfigCandidatePath, t as findConfigPathsUnderDirectory } from "./config-path-DaL1ylZ_.js";
7
7
  import { basename, dirname, relative, resolve } from "pathe";
8
8
  import MagicString from "magic-string";
9
9
  //#region src/cli/commands/worker.ts
package/dist/browser.d.ts CHANGED
@@ -896,12 +896,16 @@ export declare const configSchema: import("zod").ZodEffects<import("zod").ZodObj
896
896
  remote?: boolean | undefined;
897
897
  }> | undefined;
898
898
  }>>;
899
- triggers: import("zod").ZodOptional<import("zod").ZodObject<{
899
+ triggers: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodObject<{
900
900
  crons: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
901
901
  }, "strip", import("zod").ZodTypeAny, {
902
902
  crons?: string[] | undefined;
903
903
  }, {
904
904
  crons?: string[] | undefined;
905
+ }>, {
906
+ crons?: string[] | undefined;
907
+ }, {
908
+ crons?: string[] | undefined;
905
909
  }>>;
906
910
  rules: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
907
911
  type: import("zod").ZodEnum<["ESModule", "CommonJS", "CompiledWasm", "Text", "Data"]>;
@@ -2100,12 +2104,16 @@ export declare const configSchema: import("zod").ZodEffects<import("zod").ZodObj
2100
2104
  remote?: boolean | undefined;
2101
2105
  }> | undefined;
2102
2106
  }>>>;
2103
- readonly triggers: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodObject<{
2107
+ readonly triggers: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodObject<{
2104
2108
  crons: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
2105
2109
  }, "strip", import("zod").ZodTypeAny, {
2106
2110
  crons?: string[] | undefined;
2107
2111
  }, {
2108
2112
  crons?: string[] | undefined;
2113
+ }>, {
2114
+ crons?: string[] | undefined;
2115
+ }, {
2116
+ crons?: string[] | undefined;
2109
2117
  }>>>;
2110
2118
  readonly rules: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
2111
2119
  type: import("zod").ZodEnum<["ESModule", "CommonJS", "CompiledWasm", "Text", "Data"]>;
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAGlC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AAGjC,OAAO,EACN,eAAe,EACf,cAAc,EACd,OAAO,EACP,MAAM,gBAAgB,CAAA;AACvB,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACzD,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAG1D,OAAO,EACN,aAAa,EACb,uBAAuB,EACvB,KAAK,oBAAoB,EACzB,MAAM,cAAc,CAAA;AAGrB,KAAK,YAAY,GAAG,cAAc,UAAU,CAAC,CAAA;AAM7C,KAAK,uBAAuB,GAAG,qBAAqB,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAA;AACzF,KAAK,yBAAyB,GAAG,qBAAqB,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC,CAAA;AAC7F,KAAK,iCAAiC,GAAG,qBAAqB,CAC7D,YAAY,CAAC,+BAA+B,CAAC,CAC7C,CAAA;AAkCD,eAAO,MAAM,UAAU,sCAAgE,CAAA;AACvF,eAAO,MAAM,kBAAkB,8CAC+C,CAAA;AAE9E,eAAO,MAAM,aAAa,yCAAsE,CAAA;AAChG,eAAO,MAAM,eAAe,2CAC4C,CAAA;AACxE,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAwE,CAAA;AAEjG,qBAAa,mBAAoB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,sBAAqB;IAElC,YAAY,GAAG,KAAK,EAAE,uBAAuB,EAG5C;CACD;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,IAAI,6BAA4B;IAEzC,YAAY,GAAG,KAAK,EAAE,yBAAyB,EAG9C;CACD;AAED,qBAAa,6BAA8B,SAAQ,KAAK;IACvD,QAAQ,CAAC,IAAI,sCAAqC;IAElD,YAAY,GAAG,KAAK,EAAE,iCAAiC,EAGtD;CACD;AAED,eAAO,MAAM,MAAM,+BAAqD,CAAA;AACxE,eAAO,MAAM,SAAS,kCAA2D,CAAA;AAEjF,eAAO,MAAM,wBAAwB,uDAER,CAAA;AAC7B,eAAO,MAAM,gCAAgC,uDAER,CAAA;AACrC,eAAO,MAAM,eAAe,8CAC+C,CAAA;AAC3E,eAAO,MAAM,sBAAsB,qDACsD,CAAA;AACzF,eAAO,MAAM,yBAAyB,wDAER,CAAA;AAC9B,eAAO,MAAM,qBAAqB,oDACqD,CAAA;AACvF,eAAO,MAAM,qBAAqB,oDACqD,CAAA;AACvF,eAAO,MAAM,oBAAoB,mDACoD,CAAA;AAErF,eAAO,MAAM,cAAc,0CAC8C,CAAA;AACzE,eAAO,MAAM,wBAAwB,oDAER,CAAA;AAC7B,eAAO,MAAM,YAAY,wCAAuE,CAAA;AAChG,eAAO,MAAM,aAAa,yCAAyE,CAAA;AACnG,eAAO,MAAM,OAAO;;CAAoE,CAAA;AAExF,eAAO,MAAM,iBAAiB,2CAC4C,CAAA;AAC1E,eAAO,MAAM,qBAAqB,+CACgD,CAAA;AAClF,eAAO,MAAM,YAAY,sCAAkE,CAAA;AAC3F,eAAO,MAAM,YAAY,sCAAkE,CAAA;AAC3F,eAAO,MAAM,YAAY,sCAAkE,CAAA;AAC3F,eAAO,MAAM,eAAe,yCAAwE,CAAA;AACpG,eAAO,MAAM,aAAa,uCAAoE,CAAA;AAC9F,eAAO,MAAM,eAAe,yCAAwE,CAAA;AAEpG,OAAO,EAAE,YAAY,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAGlC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AAGjC,OAAO,EACN,eAAe,EACf,cAAc,EACd,OAAO,EACP,MAAM,gBAAgB,CAAA;AACvB,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACzD,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAG1D,OAAO,EACN,aAAa,EACb,uBAAuB,EACvB,KAAK,oBAAoB,EACzB,MAAM,cAAc,CAAA;AAGrB,KAAK,YAAY,GAAG,cAAc,UAAU,CAAC,CAAA;AAM7C,KAAK,uBAAuB,GAAG,qBAAqB,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAA;AACzF,KAAK,yBAAyB,GAAG,qBAAqB,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC,CAAA;AAC7F,KAAK,iCAAiC,GAAG,qBAAqB,CAC7D,YAAY,CAAC,+BAA+B,CAAC,CAC7C,CAAA;AAkCD,eAAO,MAAM,UAAU,sCAAgE,CAAA;AACvF,eAAO,MAAM,kBAAkB,8CAC+C,CAAA;AAE9E,eAAO,MAAM,aAAa,yCAAsE,CAAA;AAChG,eAAO,MAAM,eAAe,2CAC4C,CAAA;AACxE,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAwE,CAAA;AAEjG,qBAAa,mBAAoB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,sBAAqB;IAElC,YAAY,GAAG,KAAK,EAAE,uBAAuB,EAG5C;CACD;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,IAAI,6BAA4B;IAEzC,YAAY,GAAG,KAAK,EAAE,yBAAyB,EAG9C;CACD;AAED,qBAAa,6BAA8B,SAAQ,KAAK;IACvD,QAAQ,CAAC,IAAI,sCAAqC;IAElD,YAAY,GAAG,KAAK,EAAE,iCAAiC,EAGtD;CACD;AAED,eAAO,MAAM,MAAM,+BAAqD,CAAA;AACxE,eAAO,MAAM,SAAS,kCAA2D,CAAA;AAEjF,eAAO,MAAM,wBAAwB,uDAER,CAAA;AAC7B,eAAO,MAAM,gCAAgC,uDAER,CAAA;AACrC,eAAO,MAAM,eAAe,8CAC+C,CAAA;AAC3E,eAAO,MAAM,sBAAsB,qDACsD,CAAA;AACzF,eAAO,MAAM,yBAAyB,wDAER,CAAA;AAC9B,eAAO,MAAM,qBAAqB,oDACqD,CAAA;AACvF,eAAO,MAAM,qBAAqB,oDACqD,CAAA;AACvF,eAAO,MAAM,oBAAoB,mDACoD,CAAA;AAErF,eAAO,MAAM,cAAc,0CAC8C,CAAA;AACzE,eAAO,MAAM,wBAAwB,oDAER,CAAA;AAC7B,eAAO,MAAM,YAAY,wCAAuE,CAAA;AAChG,eAAO,MAAM,aAAa,yCAAyE,CAAA;AACnG,eAAO,MAAM,OAAO;;CAAoE,CAAA;AAExF,eAAO,MAAM,iBAAiB,2CAC4C,CAAA;AAC1E,eAAO,MAAM,qBAAqB,+CACgD,CAAA;AAClF,eAAO,MAAM,YAAY,sCAAkE,CAAA;AAC3F,eAAO,MAAM,YAAY,sCAAkE,CAAA;AAC3F,eAAO,MAAM,YAAY,sCAAkE,CAAA;AAC3F,eAAO,MAAM,eAAe,yCAAwE,CAAA;AACpG,eAAO,MAAM,aAAa,uCAAoE,CAAA;AAC9F,eAAO,MAAM,eAAe,yCAAwE,CAAA;AAEpG,OAAO,EAAE,YAAY,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/deploy.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAoB9C,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AA2BjE,wBAAsB,gBAAgB,CACrC,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,UAAU,GACjB,OAAO,CAAC,SAAS,CAAC,CA8hBpB"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/deploy.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAqB9C,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AA2BjE,wBAAsB,gBAAgB,CACrC,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,UAAU,GACjB,OAAO,CAAC,SAAS,CAAC,CAsqBpB"}