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.
- package/README.md +1 -0
- package/dist/_chunks/{account-Cdo_cRNv.js → account-BI3WZMDy.js} +1 -1
- package/dist/_chunks/{build-artifacts-CaSTDXLE.js → build-artifacts-DU5V0J0Z.js} +3 -3
- package/dist/_chunks/{build-B6vCBDdQ.js → build-e0KR38-4.js} +1 -1
- package/dist/_chunks/{cli-Ba6JBLOz.js → cli-DuUz10Mn.js} +49 -14
- package/dist/_chunks/{command-utils-C48hJMln.js → command-utils-DA0Qx9_K.js} +1 -1
- package/dist/_chunks/{compiler-Dc97FkBg.js → compiler-Zw16C9Pi.js} +1 -1
- package/dist/_chunks/{config-DQ_uWv37.js → config-Brju62xy.js} +2 -2
- package/dist/_chunks/{config-path-ePwIvHNX.js → config-path-DaL1ylZ_.js} +1 -1
- package/dist/_chunks/{deploy-0w_38g8h.js → deploy-B-Kku1Vk.js} +127 -10
- package/dist/_chunks/{dev-DaREvpZf.js → dev-D4e_RRZn.js} +3 -3
- package/dist/_chunks/{doctor-lFlh-olK.js → doctor-jm_K4dxL.js} +2 -2
- package/dist/_chunks/{family-Dfb9VR9g.js → family-_9-mGSfO.js} +1 -1
- package/dist/_chunks/{loader-RZhqzsRJ.js → loader-Cr0_OWPy.js} +137 -2
- package/dist/_chunks/{login-DnyfffOC.js → login-FjTAAQbi.js} +1 -1
- package/dist/_chunks/{preview-resources-xziKCynb.js → preview-resources-CGMBjsYB.js} +1 -1
- package/dist/_chunks/{previews-wI-pW6HM.js → previews-C7hs9-BT.js} +6 -6
- package/dist/_chunks/{productions-BpROdhLN.js → productions-T9Als4fE.js} +3 -3
- package/dist/_chunks/{routes-C4S8x2HU.js → routes-BFYCqHb-.js} +1 -1
- package/dist/_chunks/{runtime-FvXvfuZ2.js → runtime-DL-Nz3k8.js} +1 -1
- package/dist/_chunks/tail-IY-ijYmv.js +239 -0
- package/dist/_chunks/{types-Zn9vyUGA.js → types-DoKsMYfm.js} +2 -2
- package/dist/_chunks/{vite-D5dfVb6G.js → vite-CGtVNf5E.js} +35 -3
- package/dist/_chunks/{worker-rL5udcl9.js → worker-BEZI4od1.js} +3 -3
- package/dist/browser.d.ts +10 -2
- package/dist/browser.d.ts.map +1 -1
- package/dist/cli/commands/deploy.d.ts.map +1 -1
- package/dist/cli/commands/tail.d.ts +44 -0
- package/dist/cli/commands/tail.d.ts.map +1 -0
- package/dist/cli/gradual-deploy.d.ts +49 -0
- package/dist/cli/gradual-deploy.d.ts.map +1 -0
- package/dist/cli/help-pages/pages/core.d.ts +1 -1
- package/dist/cli/help-pages/pages/core.d.ts.map +1 -1
- package/dist/cli/help-pages/pages/misc.d.ts.map +1 -1
- package/dist/cli/help-pages/shared.d.ts +1 -1
- package/dist/cli/help-pages/shared.d.ts.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/config/cron.d.ts +19 -0
- package/dist/config/cron.d.ts.map +1 -0
- package/dist/config/schema-env.d.ts +10 -2
- package/dist/config/schema-env.d.ts.map +1 -1
- package/dist/config/schema-runtime.d.ts +9 -1
- package/dist/config/schema-runtime.d.ts.map +1 -1
- package/dist/config/schema.d.ts +15 -3
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +2 -2
- package/dist/runtime/middleware.d.ts +10 -0
- package/dist/runtime/middleware.d.ts.map +1 -1
- package/dist/sveltekit/index.js +1 -1
- package/dist/test/index.js +4 -3
- package/dist/test/scheduled.d.ts.map +1 -1
- package/dist/vite/index.js +1 -1
- package/dist/worker-entry/composed-worker.d.ts.map +1 -1
- package/dist/worker-entry/validate-fetch-style.d.ts +12 -0
- package/dist/worker-entry/validate-fetch-style.d.ts.map +1 -0
- package/package.json +1 -1
- /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() }).
|
|
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,
|
|
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-
|
|
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-
|
|
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-
|
|
3
|
-
import { t as compileBuildConfig } from "./compiler-
|
|
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-
|
|
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-
|
|
9
|
-
import { t as findConfigPathsUnderDirectory } from "./config-path-
|
|
10
|
-
import { a as orderPreviewWorkerNamesForDeletion, i as collectConfiguredWorkerFamilies, n as buildPreviewWorkerCandidatesByScope, r as buildStableWorkerRowsFromLiveWorkers, t as buildPreviewScopeRowsFromLiveWorkers } from "./family-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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 {
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
5
|
-
import {
|
|
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-
|
|
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-
|
|
6
|
-
import { n as formatSupportedConfigFilenames, r as resolveConfigCandidatePath, t as findConfigPathsUnderDirectory } from "./config-path-
|
|
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"]>;
|
package/dist/browser.d.ts.map
CHANGED
|
@@ -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
|
|
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;
|
|
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"}
|