Skip to content

Commit ea60a52

Browse files
authored
fix: upload compat date for static-asset only projects (#6705)
1 parent 76ece75 commit ea60a52

File tree

4 files changed

+94
-17
lines changed

4 files changed

+94
-17
lines changed

.changeset/tame-ties-smash.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"wrangler": patch
3+
---
4+
5+
feat: include compatability date in static-asset only uploads (experimental feature)

packages/wrangler/src/__tests__/deploy.test.ts

Lines changed: 76 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4315,7 +4315,10 @@ addEventListener('fetch', event => {});`
43154315
await mockAUSRequest(bodies);
43164316
mockSubDomainRequest();
43174317
mockUploadWorkerRequest({
4318-
expectedExperimentalAssets: true,
4318+
expectedExperimentalAssets: {
4319+
jwt: "<<aus-completion-token>>",
4320+
config: {},
4321+
},
43194322
expectedType: "none",
43204323
});
43214324
await runWrangler("deploy --experimental-assets cli-assets");
@@ -4414,7 +4417,10 @@ addEventListener('fetch', event => {});`
44144417
);
44154418
mockSubDomainRequest();
44164419
mockUploadWorkerRequest({
4417-
expectedExperimentalAssets: true,
4420+
expectedExperimentalAssets: {
4421+
jwt: "<<aus-completion-token>>",
4422+
config: {},
4423+
},
44184424
expectedType: "none",
44194425
});
44204426
await runWrangler("deploy");
@@ -4487,7 +4493,10 @@ addEventListener('fetch', event => {});`
44874493
await mockAUSRequest(bodies);
44884494
mockSubDomainRequest();
44894495
mockUploadWorkerRequest({
4490-
expectedExperimentalAssets: true,
4496+
expectedExperimentalAssets: {
4497+
jwt: "<<aus-completion-token>>",
4498+
config: {},
4499+
},
44914500
expectedType: "none",
44924501
});
44934502
await runWrangler("deploy --config some/path/wrangler.toml");
@@ -4522,7 +4531,10 @@ addEventListener('fetch', event => {});`
45224531
await mockAUSRequest(bodies);
45234532
mockSubDomainRequest();
45244533
mockUploadWorkerRequest({
4525-
expectedExperimentalAssets: true,
4534+
expectedExperimentalAssets: {
4535+
jwt: "<<aus-completion-token>>",
4536+
config: {},
4537+
},
45264538
expectedType: "none",
45274539
});
45284540
await runWrangler("deploy --config some/path/wrangler.toml");
@@ -4550,7 +4562,10 @@ addEventListener('fetch', event => {});`
45504562
await mockAUSRequest(bodies);
45514563
mockSubDomainRequest();
45524564
mockUploadWorkerRequest({
4553-
expectedExperimentalAssets: true,
4565+
expectedExperimentalAssets: {
4566+
jwt: "<<aus-completion-token>>",
4567+
config: {},
4568+
},
45544569
expectedType: "none",
45554570
});
45564571
process.chdir("some/path");
@@ -4579,7 +4594,10 @@ addEventListener('fetch', event => {});`
45794594
// skips asset uploading since empty buckets returned
45804595
mockSubDomainRequest();
45814596
mockUploadWorkerRequest({
4582-
expectedExperimentalAssets: true,
4597+
expectedExperimentalAssets: {
4598+
jwt: "<<aus-completion-token>>",
4599+
config: {},
4600+
},
45834601
expectedType: "none",
45844602
});
45854603
await runWrangler(
@@ -4614,7 +4632,10 @@ addEventListener('fetch', event => {});`
46144632
// skips asset uploading since empty buckets returned
46154633
mockSubDomainRequest();
46164634
mockUploadWorkerRequest({
4617-
expectedExperimentalAssets: true,
4635+
expectedExperimentalAssets: {
4636+
jwt: "<<aus-completion-token>>",
4637+
config: {},
4638+
},
46184639
expectedType: "none",
46194640
});
46204641
await runWrangler("deploy");
@@ -4670,7 +4691,10 @@ addEventListener('fetch', event => {});`
46704691
);
46714692
mockSubDomainRequest();
46724693
mockUploadWorkerRequest({
4673-
expectedExperimentalAssets: true,
4694+
expectedExperimentalAssets: {
4695+
jwt: "<<aus-completion-token>>",
4696+
config: {},
4697+
},
46744698
expectedType: "none",
46754699
});
46764700
await runWrangler("deploy");
@@ -4741,7 +4765,7 @@ addEventListener('fetch', event => {});`
47414765
);
47424766
});
47434767

4744-
it("should be able to upload a user worker with ASSETS binding", async () => {
4768+
it("should be able to upload a user worker with ASSETS binding and config", async () => {
47454769
const assets = [
47464770
{ filePath: "file-1.txt", content: "Content of file-1" },
47474771
{ filePath: "boop/file-2.txt", content: "Content of file-2" },
@@ -4750,14 +4774,55 @@ addEventListener('fetch', event => {});`
47504774
writeWorkerSource({ format: "js" });
47514775
writeWranglerToml({
47524776
main: "index.js",
4753-
experimental_assets: { directory: "assets", binding: "ASSETS" },
4777+
compatibility_date: "2024-09-27",
4778+
compatibility_flags: ["nodejs_compat"],
4779+
experimental_assets: {
4780+
directory: "assets",
4781+
binding: "ASSETS",
4782+
html_handling: "none",
4783+
not_found_handling: "404-page",
4784+
},
47544785
});
47554786
await mockAUSRequest();
47564787
mockSubDomainRequest();
47574788
mockUploadWorkerRequest({
4758-
expectedExperimentalAssets: true,
4789+
expectedExperimentalAssets: {
4790+
jwt: "<<aus-completion-token>>",
4791+
config: { html_handling: "none", not_found_handling: "404-page" },
4792+
},
47594793
expectedBindings: [{ name: "ASSETS", type: "assets" }],
47604794
expectedMainModule: "index.js",
4795+
expectedCompatibilityDate: "2024-09-27",
4796+
expectedCompatibilityFlags: ["nodejs_compat"],
4797+
});
4798+
await runWrangler("deploy");
4799+
});
4800+
4801+
it("should be able to upload an asset-only project", async () => {
4802+
const assets = [
4803+
{ filePath: "file-1.txt", content: "Content of file-1" },
4804+
{ filePath: "boop/file-2.txt", content: "Content of file-2" },
4805+
];
4806+
writeAssets(assets);
4807+
writeWorkerSource({ format: "js" });
4808+
writeWranglerToml({
4809+
compatibility_date: "2024-09-27",
4810+
compatibility_flags: ["nodejs_compat"],
4811+
experimental_assets: {
4812+
directory: "assets",
4813+
html_handling: "none",
4814+
},
4815+
});
4816+
await mockAUSRequest();
4817+
mockSubDomainRequest();
4818+
mockUploadWorkerRequest({
4819+
expectedExperimentalAssets: {
4820+
jwt: "<<aus-completion-token>>",
4821+
config: { html_handling: "none" },
4822+
},
4823+
expectedCompatibilityDate: "2024-09-27",
4824+
expectedCompatibilityFlags: ["nodejs_compat"],
4825+
expectedMainModule: undefined,
47614826
});
47624827
await runWrangler("deploy");
47634828
});

packages/wrangler/src/__tests__/helpers/mock-upload-worker.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { createFetchResult, msw } from "./msw";
33
import { serialize, toString } from "./serialize-form-data-entry";
44
import type { WorkerMetadata } from "../../deployment-bundle/create-worker-upload-form";
55
import type { CfWorkerInit } from "../../deployment-bundle/worker";
6+
import type { AssetConfig } from "@cloudflare/workers-shared";
67
import type { HttpResponseResolver } from "msw";
78

89
/** Create a mock handler for the request to upload a worker script. */
@@ -28,7 +29,10 @@ export function mockUploadWorkerRequest(
2829
tag?: string;
2930
expectedDispatchNamespace?: string;
3031
expectedScriptName?: string;
31-
expectedExperimentalAssets?: boolean;
32+
expectedExperimentalAssets?: {
33+
jwt: string;
34+
config: AssetConfig;
35+
};
3236
useOldUploadApi?: boolean;
3337
expectedObservability?: CfWorkerInit["observability"];
3438
} = {}
@@ -107,10 +111,7 @@ export function mockUploadWorkerRequest(
107111
expect(metadata.limits).toEqual(expectedLimits);
108112
}
109113
if ("expectedExperimentalAssets" in options) {
110-
expect(metadata.assets).toEqual({
111-
jwt: "<<aus-completion-token>>",
112-
config: {},
113-
});
114+
expect(metadata.assets).toEqual(expectedExperimentalAssets);
114115
}
115116
if ("expectedObservability" in options) {
116117
expect(metadata.observability).toEqual(expectedObservability);
@@ -155,7 +156,11 @@ export function mockUploadWorkerRequest(
155156
const {
156157
available_on_subdomain = true,
157158
expectedEntry,
158-
expectedMainModule = "index.js",
159+
expectedExperimentalAssets,
160+
// Allow setting expectedMainModule to undefined to test static-asset only uploads
161+
expectedMainModule = expectedExperimentalAssets
162+
? options.expectedMainModule
163+
: "index.js",
159164
expectedType = "esm",
160165
expectedBindings,
161166
expectedModules = {},

packages/wrangler/src/deployment-bundle/create-worker-upload-form.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,8 @@ export function createWorkerUploadForm(worker: CfWorkerInit): FormData {
201201
jwt: experimental_assets.jwt,
202202
config: assetConfig,
203203
},
204+
...(compatibility_date && { compatibility_date }),
205+
...(compatibility_flags && { compatibility_flags }),
204206
})
205207
);
206208
return formData;

0 commit comments

Comments
 (0)