@void/deploy-cloudflare 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -10,7 +10,7 @@ type WorkerTarget = ConfigTarget & {
10
10
  type CloudflareOperation = ({
11
11
  type: "auth.whoami" | "auth.login" | "auth.logout" | "auth.token";
12
12
  } & ConfigTarget) | ({
13
- type: "d1.list" | "kv.namespace.list" | "containers.list";
13
+ type: "d1.list" | "kv.namespace.list" | "containers.list" | "workers.subdomain.get";
14
14
  } & ConfigTarget) | ({
15
15
  type: "d1.info";
16
16
  name: string;
@@ -268,6 +268,7 @@ type CloudflareStaticDeployConfig = Readonly<{
268
268
  /** Generate the deterministic thin Worker entry bundled by Wrangler. */
269
269
  export declare function renderCloudflareStaticEntry(options: {
270
270
  runtimeImport?: string;
271
+ alwaysUseHttps?: boolean;
271
272
  headerRules?: ReadonlyArray<HeaderRule>;
272
273
  redirectRules?: ReadonlyArray<RedirectRule>;
273
274
  fallbackRules?: ReadonlyArray<RedirectRule>;
@@ -311,6 +312,8 @@ type CloudflareTriggerConfig = Readonly<{
311
312
  settingsHash?: string;
312
313
  /** Explicit Worker-wide observability settings, published after version activation. */
313
314
  observability?: Readonly<Record<string, unknown>>;
315
+ /** Explicit Worker-wide Logpush setting, published after version activation. */
316
+ logpush?: boolean;
314
317
  workers_dev: boolean;
315
318
  preview_urls: boolean;
316
319
  routes: ReadonlyArray<unknown>;
@@ -318,7 +321,7 @@ type CloudflareTriggerConfig = Readonly<{
318
321
  queueConsumers: ReadonlyArray<unknown>;
319
322
  workflows: ReadonlyArray<unknown>;
320
323
  /**
321
- * Email Routing addresses (`addresses` in Wrangler config). Wrangler 4.131 applies its
324
+ * Email Routing addresses (`addresses` in Wrangler config). The Cloudflare CLI applies its
322
325
  * Email Routing plan inside `triggers deploy` — `undefined` skips the plan entirely, while
323
326
  * `[]` is a destructive plan that deletes every rule this Worker owns — so the two must stay
324
327
  * distinct through the snapshot. Absent from annotations written before this field existed.
@@ -326,6 +329,17 @@ type CloudflareTriggerConfig = Readonly<{
326
329
  addresses?: ReadonlyArray<string>;
327
330
  }>;
328
331
  type CloudflareTrafficConfig = Pick<CloudflareTriggerConfig, "workers_dev" | "preview_urls" | "routes">;
332
+ /**
333
+ * Result of an account workers.dev subdomain lookup. `uploader-changed` means the lookup refused
334
+ * to run a changed uploader with the session credentials.
335
+ */
336
+ type CloudflareWorkersDevSubdomainLookup = {
337
+ ok: true;
338
+ subdomain: string;
339
+ } | {
340
+ ok: false;
341
+ reason: "unavailable" | "uploader-changed";
342
+ };
329
343
  type CloudflareVersionActivation = {
330
344
  ok: true;
331
345
  versionId: string;
@@ -356,6 +370,11 @@ type CloudflareVersionActivation = {
356
370
  activeVersionId?: string | null;
357
371
  /** Whether Void restored the active version's immutable trigger snapshot. */
358
372
  triggerRepair?: "succeeded" | "failed" | "unavailable";
373
+ /**
374
+ * Access denied a readiness probe to this custom-route origin. The probe carried no Access
375
+ * credentials because `readinessHeadersOrigin` did not name the origin.
376
+ */
377
+ customRouteReadinessOrigin?: string;
359
378
  };
360
379
  /** Encode migration state into Cloudflare's version annotation for safe rollback diagnostics. */
361
380
  export declare function encodeCloudflareVersionMessage(migrations: ReadonlyArray<string>, triggerConfig?: CloudflareTriggerConfig, contentHash?: string): string;
@@ -430,11 +449,23 @@ type CloudflareVersionActivationOptions = {
430
449
  readinessHeaders?: Readonly<Record<string, string>>;
431
450
  /** Account workers.dev subdomain used when this Worker cannot expose version preview URLs. */
432
451
  workersDevSubdomain?: string;
452
+ /**
453
+ * Look up the account workers.dev subdomain when a first publish reports no URL and
454
+ * `workersDevSubdomain` is not set. The subdomain includes the compliance-region label, for
455
+ * example `team.fed` for FedRAMP High. A thrown error counts as `unavailable`.
456
+ */
457
+ resolveWorkersDevSubdomain?: () => Promise<CloudflareWorkersDevSubdomainLookup>;
433
458
  /**
434
459
  * Operator-provided workers.dev subdomain that may receive readiness credentials even when
435
460
  * Wrangler cannot report a preview URL. Cached/project-controlled values must not be used here.
436
461
  */
437
462
  readinessHeadersWorkersDevSubdomain?: string;
463
+ /**
464
+ * Operator-provided HTTPS origin that may receive readiness credentials when the probe uses a
465
+ * configured custom route. A route hostname is not guaranteed to reach this Worker, so only an
466
+ * exact origin match receives them. Project-controlled values must not be used here.
467
+ */
468
+ readinessHeadersOrigin?: string;
438
469
  message: string;
439
470
  /** Direct empty-domain publisher for the Wrangler reconciliation gap. */
440
471
  publishEmptyCustomDomains?: () => Promise<CloudflareCommandResult>;
@@ -474,6 +505,12 @@ type CloudflareVersionActivationOptions = {
474
505
  };
475
506
  /** Upload, probe, and atomically activate a verified Worker Version. */
476
507
  export declare function activateCloudflareVersion(options: CloudflareVersionActivationOptions): Promise<CloudflareVersionActivation>;
508
+ /**
509
+ * Normalize an operator-selected readiness origin. Returns `undefined` unless the value is one
510
+ * exact `https:` origin without a wildcard, credentials, a path, a query, or a fragment. A probe
511
+ * URL never has a wildcard host, so a wildcard value could never match.
512
+ */
513
+ export declare function normalizeReadinessAccessOrigin(value: string | undefined): string | undefined;
477
514
  /** Change version traffic without synchronizing Worker settings from local config. */
478
515
  export declare function deployCloudflareVersionTraffic(options: {
479
516
  runWrangler: CloudflareCommandRunner;
@@ -514,4 +551,4 @@ export declare function cloudflareCommandDiagnostic(result: CloudflareCommandRes
514
551
  //#region src/secret-draft.d.ts
515
552
  export declare const VOID_SECRET_DRAFT_SOURCE = "export default { fetch() { return new Response(\"\"); } };\n";
516
553
  //#endregion
517
- export type { ApprovedCloudflareKvBinding, CloudflareCommandResult, CloudflareCommandRunner, CloudflareDeployExecution, CloudflareFrameworkDeployConfig, CloudflareOperation, CloudflareProviderError, CloudflareStaticDeployConfig, CloudflareTrafficConfig, CloudflareTriggerConfig, CloudflareTriggerStabilization, CloudflareUploadResult, CloudflareVersionActivation, CloudflareVersionActivationOptions, CloudflareVersionMetadata, CloudflareWorkerMigrationTagOptions, ExistingCloudflareWorker };
554
+ export type { ApprovedCloudflareKvBinding, CloudflareCommandResult, CloudflareCommandRunner, CloudflareDeployExecution, CloudflareFrameworkDeployConfig, CloudflareOperation, CloudflareProviderError, CloudflareStaticDeployConfig, CloudflareTrafficConfig, CloudflareTriggerConfig, CloudflareTriggerStabilization, CloudflareUploadResult, CloudflareVersionActivation, CloudflareVersionActivationOptions, CloudflareVersionMetadata, CloudflareWorkerMigrationTagOptions, CloudflareWorkersDevSubdomainLookup, ExistingCloudflareWorker };
package/dist/index.mjs CHANGED
@@ -645,6 +645,7 @@ function writeCloudflareFrameworkDeployConfig(options) {
645
645
  /** Generate the deterministic thin Worker entry bundled by Wrangler. */
646
646
  function renderCloudflareStaticEntry(options) {
647
647
  const config = JSON.stringify({
648
+ ...options.alwaysUseHttps !== void 0 ? { alwaysUseHttps: options.alwaysUseHttps } : {},
648
649
  ...options.headerRules?.length ? { headerRules: options.headerRules } : {},
649
650
  ...options.redirectRules?.length ? { redirectRules: options.redirectRules } : {},
650
651
  ...options.fallbackRules?.length ? { fallbackRules: options.fallbackRules } : {},
@@ -844,7 +845,8 @@ function readCloudflareTriggerConfig(configPath, sourceConfigPath) {
844
845
  const source = sourceConfigPath ? parseRootWranglerConfig(sourceConfigPath) : config;
845
846
  const result = triggerConfigFromWrangler({
846
847
  ...config,
847
- observability: source.observability
848
+ observability: source.observability,
849
+ logpush: source.logpush
848
850
  });
849
851
  if (!sourceConfigPath) return result;
850
852
  return {
@@ -1085,6 +1087,7 @@ function triggerConfigFromWrangler(config) {
1085
1087
  ...config.preview_urls === void 0 ? { preservePreviewUrls: true } : {},
1086
1088
  settingsHash: nonVersionedSettingsHash(config),
1087
1089
  ...isRecord(config.observability) ? { observability: config.observability } : {},
1090
+ ...typeof config.logpush === "boolean" ? { logpush: config.logpush } : {},
1088
1091
  workers_dev: workersDev,
1089
1092
  preview_urls: typeof config.preview_urls === "boolean" ? config.preview_urls : workersDev,
1090
1093
  routes,
@@ -1118,7 +1121,8 @@ function parseTriggerConfig(value) {
1118
1121
  "preserve",
1119
1122
  "preserveRoutes",
1120
1123
  "preserveWorkersDev",
1121
- "preservePreviewUrls"
1124
+ "preservePreviewUrls",
1125
+ "logpush"
1122
1126
  ].some((key) => value[key] !== void 0 && typeof value[key] !== "boolean") || value.settingsHash !== void 0 && typeof value.settingsHash !== "string" || value.observability !== void 0 && !isRecord(value.observability) || typeof value.workers_dev !== "boolean" || typeof value.preview_urls !== "boolean" || !Array.isArray(value.routes) || !Array.isArray(value.crons) || !Array.isArray(value.queueConsumers) || !Array.isArray(value.workflows) || value.addresses !== void 0 && readEmailAddresses(value.addresses) === void 0) return null;
1123
1127
  return {
1124
1128
  ...value.preserve === true ? { preserve: true } : {},
@@ -1127,6 +1131,7 @@ function parseTriggerConfig(value) {
1127
1131
  ...value.preservePreviewUrls === true ? { preservePreviewUrls: true } : {},
1128
1132
  ...typeof value.settingsHash === "string" ? { settingsHash: value.settingsHash } : {},
1129
1133
  ...isRecord(value.observability) ? { observability: value.observability } : {},
1134
+ ...typeof value.logpush === "boolean" ? { logpush: value.logpush } : {},
1130
1135
  workers_dev: value.workers_dev,
1131
1136
  preview_urls: value.preview_urls,
1132
1137
  routes: value.routes,
@@ -1144,6 +1149,7 @@ function triggerWranglerConfig(base, triggerConfig, manageRoutes = true) {
1144
1149
  const config = {
1145
1150
  ...base,
1146
1151
  ...triggerConfig.observability === void 0 ? {} : { observability: triggerConfig.observability },
1152
+ ...triggerConfig.logpush === void 0 ? {} : { logpush: triggerConfig.logpush },
1147
1153
  triggers,
1148
1154
  queues,
1149
1155
  workflows: [...triggerConfig.workflows],
@@ -1163,6 +1169,7 @@ function resolvePreservedTraffic(desired, previous, workerExists) {
1163
1169
  ...desired.preserve ? { preserve: true } : {},
1164
1170
  ...desired.settingsHash ? { settingsHash: desired.settingsHash } : {},
1165
1171
  ...desired.observability === void 0 ? {} : { observability: desired.observability },
1172
+ ...desired.logpush === void 0 ? {} : { logpush: desired.logpush },
1166
1173
  workers_dev: desired.preserveWorkersDev ? previous?.workers_dev ?? desired.workers_dev : desired.workers_dev,
1167
1174
  preview_urls: desired.preservePreviewUrls ? previous?.preview_urls ?? desired.preview_urls : desired.preview_urls,
1168
1175
  routes: desired.preserveRoutes ? previous?.routes ?? desired.routes : desired.routes,
@@ -1507,7 +1514,9 @@ async function activateCloudflareVersionWithSecretsFile(options) {
1507
1514
  if (stagingFailure) return stagingFailure;
1508
1515
  stagedVersionOverride = true;
1509
1516
  }
1510
- const probe = (url) => probeReadiness(`${url.replace(/\/$/, "")}/__void/ready`, options.workerName, readinessUsesCustomRoute ? void 0 : options.readinessHeaders, authenticatedWorkersDevSubdomain, stagedVersionOverride ? versionId : void 0, options.fetch ?? globalThis.fetch, options.sleep ?? setTimeout, options.readinessAttempts ?? 6, Number.POSITIVE_INFINITY, options.requireVersionMetadata ? versionId : void 0);
1517
+ const trustedReadinessOrigin = normalizeReadinessAccessOrigin(options.readinessHeadersOrigin);
1518
+ const withholdsCustomRouteHeaders = (url) => readinessUsesCustomRoute && !isTrustedReadinessOrigin(url, trustedReadinessOrigin);
1519
+ const probe = (url) => probeReadiness(`${url.replace(/\/$/, "")}/__void/ready`, options.workerName, withholdsCustomRouteHeaders(url) ? void 0 : options.readinessHeaders, authenticatedWorkersDevSubdomain, readinessUsesCustomRoute ? trustedReadinessOrigin : void 0, stagedVersionOverride ? versionId : void 0, options.fetch ?? globalThis.fetch, options.sleep ?? setTimeout, options.readinessAttempts ?? 6, Number.POSITIVE_INFINITY, options.requireVersionMetadata ? versionId : void 0);
1511
1520
  options.onProgress?.("Waiting for the Worker to become ready...");
1512
1521
  let ready = await probe(readinessUrl);
1513
1522
  if (ready === "access-denied" && !stagedVersionOverride && previous.versionId !== null && !options.requirePreviewForReadiness) {
@@ -1527,6 +1536,7 @@ async function activateCloudflareVersionWithSecretsFile(options) {
1527
1536
  reason: ready === "access-denied" ? "readiness-access-denied" : "readiness-failed",
1528
1537
  versionId,
1529
1538
  previousVersionId: previous.versionId,
1539
+ ...ready === "access-denied" && withholdsCustomRouteHeaders(readinessUrl) ? customRouteReadinessOriginField(readinessUrl) : {},
1530
1540
  ...stagedVersionOverride ? await restorePreviousVersion(options, previous.versionId, "readiness failed", [stagedVersionPercentages(previous.versionId, versionId)]) : { rollback: "not-needed" }
1531
1541
  };
1532
1542
  if (!options.verifyUploader()) return {
@@ -1895,7 +1905,33 @@ async function bootstrapFirstDeployment(options, previousVersionId, atomic = fal
1895
1905
  const published = readUploadResult(bootstrap);
1896
1906
  const versionId = published?.versionId;
1897
1907
  const desiredTriggerConfig = desiredTriggerConfigFor(parseCloudflareVersionMessage(options.message), options.configPath);
1898
- const reportedOrConfiguredUrl = published?.previewUrl ?? published?.workersDevUrl ?? (desiredTriggerConfig.workers_dev ? workersDevReadinessUrl(options.workerName, options.workersDevSubdomain) : customRouteReadinessUrl(desiredTriggerConfig.routes));
1908
+ let reportedOrConfiguredUrl = published?.previewUrl ?? published?.workersDevUrl ?? (desiredTriggerConfig.workers_dev ? workersDevReadinessUrl(options.workerName, options.workersDevSubdomain) : customRouteReadinessUrl(desiredTriggerConfig.routes));
1909
+ if (versionId && !reportedOrConfiguredUrl && desiredTriggerConfig.workers_dev && !desiredTriggerConfig.preserve && !desiredTriggerConfig.preserveWorkersDev && !options.preserveTriggers && options.resolveWorkersDevSubdomain) {
1910
+ if (!options.verifyUploader()) return {
1911
+ ok: false,
1912
+ reason: "uploader-changed",
1913
+ versionId,
1914
+ previousVersionId,
1915
+ rollback: "unsafe"
1916
+ };
1917
+ let lookup;
1918
+ try {
1919
+ lookup = await options.resolveWorkersDevSubdomain();
1920
+ } catch {
1921
+ lookup = {
1922
+ ok: false,
1923
+ reason: "unavailable"
1924
+ };
1925
+ }
1926
+ if (!lookup.ok && lookup.reason === "uploader-changed") return {
1927
+ ok: false,
1928
+ reason: "uploader-changed",
1929
+ versionId,
1930
+ previousVersionId,
1931
+ rollback: "unsafe"
1932
+ };
1933
+ reportedOrConfiguredUrl = lookup.ok ? workersDevReadinessUrl(options.workerName, lookup.subdomain) : void 0;
1934
+ }
1899
1935
  if (!versionId || !reportedOrConfiguredUrl) return {
1900
1936
  ok: false,
1901
1937
  reason: atomic ? "atomic-output-invalid" : "bootstrap-output-invalid",
@@ -2000,14 +2036,18 @@ async function bootstrapFirstDeployment(options, previousVersionId, atomic = fal
2000
2036
  const usesCustomDomain = !desiredTriggerConfig.workers_dev && desiredTriggerConfig.routes.some((route) => isRecord(route) && route.custom_domain === true);
2001
2037
  const customDomainBootstrap = !atomic && usesCustomDomain;
2002
2038
  const readinessTimeoutMs = customDomainBootstrap ? 3e5 : 6e4;
2039
+ const previewSubdomain = extractWorkersDevSubdomain(previewUrl);
2040
+ const trustedReadinessOrigin = previewSubdomain ? void 0 : normalizeReadinessAccessOrigin(options.readinessHeadersOrigin);
2041
+ const withholdsCustomRouteHeaders = !previewSubdomain && !isTrustedReadinessOrigin(previewUrl, trustedReadinessOrigin);
2003
2042
  options.onProgress?.("Waiting for the Worker to become ready...");
2004
- const ready = await probeReadiness(`${previewUrl.replace(/\/$/, "")}/__void/ready`, options.workerName, extractWorkersDevSubdomain(previewUrl) ? options.readinessHeaders : void 0, extractWorkersDevSubdomain(previewUrl), void 0, options.fetch ?? globalThis.fetch, options.sleep ?? setTimeout, options.readinessAttempts ?? (customDomainBootstrap ? 150 : 30), readinessTimeoutMs, options.requireVersionMetadata ? versionId : void 0);
2043
+ const ready = await probeReadiness(`${previewUrl.replace(/\/$/, "")}/__void/ready`, options.workerName, withholdsCustomRouteHeaders ? void 0 : options.readinessHeaders, previewSubdomain, trustedReadinessOrigin, void 0, options.fetch ?? globalThis.fetch, options.sleep ?? setTimeout, options.readinessAttempts ?? (customDomainBootstrap ? 150 : 30), readinessTimeoutMs, options.requireVersionMetadata ? versionId : void 0);
2005
2044
  if (ready !== "ready") return {
2006
2045
  ok: false,
2007
2046
  reason: ready === "access-denied" ? atomic ? "atomic-readiness-access-denied" : "bootstrap-readiness-access-denied" : atomic ? "atomic-readiness-failed" : "bootstrap-readiness-failed",
2008
2047
  versionId,
2009
2048
  previousVersionId,
2010
2049
  rollback: "unavailable",
2050
+ ...ready === "access-denied" && withholdsCustomRouteHeaders ? customRouteReadinessOriginField(previewUrl) : {},
2011
2051
  ...ready === "failed" && usesCustomDomain ? { diagnostic: "The Custom Domain may still be propagating DNS or its TLS certificate. Check the configured domain in Cloudflare, then retry `void deploy --platform cloudflare` once its /__void/ready endpoint is reachable." } : {}
2012
2052
  };
2013
2053
  if (!options.verifyUploader()) return {
@@ -2183,8 +2223,8 @@ async function verifyReadinessStagingOwner(options, previousVersionId, versionId
2183
2223
  };
2184
2224
  return null;
2185
2225
  }
2186
- async function probeReadiness(url, workerName, readinessHeaders, authenticatedWorkersDevSubdomain, versionOverride, fetcher, sleep, attempts, timeoutMs = Number.POSITIVE_INFINITY, expectedVersionId) {
2187
- const headers = guardedReadinessHeaders(url, workerName, readinessHeaders, authenticatedWorkersDevSubdomain);
2226
+ async function probeReadiness(url, workerName, readinessHeaders, authenticatedWorkersDevSubdomain, trustedReadinessOrigin, versionOverride, fetcher, sleep, attempts, timeoutMs = Number.POSITIVE_INFINITY, expectedVersionId) {
2227
+ const headers = guardedReadinessHeaders(url, workerName, readinessHeaders, authenticatedWorkersDevSubdomain, trustedReadinessOrigin);
2188
2228
  if (headers === null) return "failed";
2189
2229
  const deadline = Date.now() + timeoutMs;
2190
2230
  for (let attempt = 0; attempt < Math.max(1, attempts); attempt++) {
@@ -2215,9 +2255,13 @@ async function probeReadiness(url, workerName, readinessHeaders, authenticatedWo
2215
2255
  }
2216
2256
  return "failed";
2217
2257
  }
2218
- /** Never forward Access headers to a hostname that cannot be this Worker. */
2219
- function guardedReadinessHeaders(url, workerName, headers, authenticatedWorkersDevSubdomain) {
2258
+ /**
2259
+ * Never forward Access headers to a hostname that cannot be this Worker, unless the operator
2260
+ * named that exact origin.
2261
+ */
2262
+ function guardedReadinessHeaders(url, workerName, headers, authenticatedWorkersDevSubdomain, trustedReadinessOrigin) {
2220
2263
  if (!headers || Object.keys(headers).length === 0) return {};
2264
+ if (isTrustedReadinessOrigin(url, trustedReadinessOrigin)) return headers;
2221
2265
  try {
2222
2266
  const parsed = new URL(url);
2223
2267
  const firstLabel = parsed.hostname.toLowerCase().split(".")[0] ?? "";
@@ -2229,6 +2273,36 @@ function guardedReadinessHeaders(url, workerName, headers, authenticatedWorkersD
2229
2273
  return null;
2230
2274
  }
2231
2275
  }
2276
+ /**
2277
+ * Normalize an operator-selected readiness origin. Returns `undefined` unless the value is one
2278
+ * exact `https:` origin without a wildcard, credentials, a path, a query, or a fragment. A probe
2279
+ * URL never has a wildcard host, so a wildcard value could never match.
2280
+ */
2281
+ function normalizeReadinessAccessOrigin(value) {
2282
+ if (!value) return;
2283
+ try {
2284
+ const url = new URL(value);
2285
+ return url.protocol === "https:" && !url.hostname.includes("*") && !url.username && !url.password && url.pathname === "/" && !url.search && !url.hash ? url.origin : void 0;
2286
+ } catch {
2287
+ return;
2288
+ }
2289
+ }
2290
+ function isTrustedReadinessOrigin(url, trustedOrigin) {
2291
+ if (trustedOrigin === void 0) return false;
2292
+ try {
2293
+ const parsed = new URL(url);
2294
+ return parsed.protocol === "https:" && !parsed.username && !parsed.password && parsed.origin === trustedOrigin;
2295
+ } catch {
2296
+ return false;
2297
+ }
2298
+ }
2299
+ function customRouteReadinessOriginField(url) {
2300
+ try {
2301
+ return { customRouteReadinessOrigin: new URL(url).origin };
2302
+ } catch {
2303
+ return {};
2304
+ }
2305
+ }
2232
2306
  async function isCloudflareAccessDenial(response) {
2233
2307
  if (response.status >= 300 && response.status < 400 && response.headers.get("location")?.includes("/cdn-cgi/access/")) return true;
2234
2308
  if (response.status !== 403) return false;
@@ -2424,4 +2498,4 @@ function createCloudflareMetadataRunner(options) {
2424
2498
  };
2425
2499
  }
2426
2500
  //#endregion
2427
- export { CloudflareWorkerInspectionError, VOID_SECRET_DRAFT_SOURCE, activateCloudflareVersion, assertCloudflareBindingsPreserved, assertCloudflareDurableObjectLifecycleSupported, assertExistingCloudflareConfig, cloudflareCommandDiagnostic, createCloudflareMetadataRunner, deployCloudflareVersionTraffic, deployCloudflareVersionTriggers, encodeCloudflareVersionMessage, executeCloudflareDeploy, extractWorkersDevSubdomain, normalizeWorkersDevSubdomain, parseCloudflareVersionMessage, parseRootWranglerConfig, readBindingFieldPresence, readCloudflareTriggerConfig, readCloudflareVersionMigrationTag, readCloudflareWorkerMigrationTag, readConfigEntryString, readExistingCloudflareWorker, readStoredResourceName, readWranglerTopLevelString, renderCloudflareStaticEntry, resolveD1MigrateTarget, stabilizeCloudflareVersionTriggers, stageCloudflareStaticAssets, writeCloudflareFrameworkDeployConfig, writeCloudflareStaticDeployConfig };
2501
+ export { CloudflareWorkerInspectionError, VOID_SECRET_DRAFT_SOURCE, activateCloudflareVersion, assertCloudflareBindingsPreserved, assertCloudflareDurableObjectLifecycleSupported, assertExistingCloudflareConfig, cloudflareCommandDiagnostic, createCloudflareMetadataRunner, deployCloudflareVersionTraffic, deployCloudflareVersionTriggers, encodeCloudflareVersionMessage, executeCloudflareDeploy, extractWorkersDevSubdomain, normalizeReadinessAccessOrigin, normalizeWorkersDevSubdomain, parseCloudflareVersionMessage, parseRootWranglerConfig, readBindingFieldPresence, readCloudflareTriggerConfig, readCloudflareVersionMigrationTag, readCloudflareWorkerMigrationTag, readConfigEntryString, readExistingCloudflareWorker, readStoredResourceName, readWranglerTopLevelString, renderCloudflareStaticEntry, resolveD1MigrateTarget, stabilizeCloudflareVersionTriggers, stageCloudflareStaticAssets, writeCloudflareFrameworkDeployConfig, writeCloudflareStaticDeployConfig };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@void/deploy-cloudflare",
3
- "version": "1.3.0",
3
+ "version": "1.4.0",
4
4
  "description": "Cloudflare deployment primitives for Void runtimes and deployment adapters.",
5
5
  "homepage": "https://void.cloud",
6
6
  "bugs": {
@@ -26,7 +26,7 @@
26
26
  "access": "public"
27
27
  },
28
28
  "dependencies": {
29
- "@void/deploy-core": "1.3.0",
29
+ "@void/deploy-core": "1.4.0",
30
30
  "jsonc-parser": "^3.3.1"
31
31
  },
32
32
  "devDependencies": {