Skip to content

Commit

Permalink
Only show compatibility date fallback warning if new version available
Browse files Browse the repository at this point in the history
  • Loading branch information
mrbbot committed Oct 17, 2023
1 parent c2457cb commit f6ae8ce
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 9 deletions.
5 changes: 4 additions & 1 deletion packages/wrangler/src/dev.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,7 @@ export async function startDev(args: StartDevOptions) {
if (args.logLevel) {
logger.loggerLevel = args.logLevel;
}
await printWranglerBanner();
const maybeNewVersion = await printWranglerBanner();
if (args.local) {
logger.warn(
"--local is no longer required and will be removed in a future version.\n`wrangler dev` now uses the local Cloudflare Workers runtime by default. 🎉"
Expand Down Expand Up @@ -471,6 +471,7 @@ export async function startDev(args: StartDevOptions) {
firstPartyWorker={configParam.first_party_worker}
sendMetrics={configParam.send_metrics}
testScheduled={args.testScheduled}
newVersion={maybeNewVersion}
/>
);
}
Expand Down Expand Up @@ -611,6 +612,8 @@ export async function startApiDev(args: StartDevOptions) {
sendMetrics: configParam.send_metrics,
testScheduled: args.testScheduled,
disableDevRegistry: args.disableDevRegistry ?? false,
// `unstable_dev()` doesn't perform an update check
newVersion: undefined,
});
}

Expand Down
2 changes: 2 additions & 0 deletions packages/wrangler/src/dev/dev.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,7 @@ export type DevProps = {
firstPartyWorker: boolean | undefined;
sendMetrics: boolean | undefined;
testScheduled: boolean | undefined;
newVersion: string | undefined;
};

export function DevImplementation(props: DevProps): JSX.Element {
Expand Down Expand Up @@ -344,6 +345,7 @@ function DevSession(props: DevSessionProps) {
onReady={announceAndOnReady}
enablePagesAssetsServiceBinding={props.enablePagesAssetsServiceBinding}
sourceMapPath={bundle?.sourceMapPath}
newVersion={props.newVersion}
/>
) : (
<Remote
Expand Down
3 changes: 2 additions & 1 deletion packages/wrangler/src/dev/local.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ export interface LocalProps {
enablePagesAssetsServiceBinding?: EnablePagesAssetsServiceBindingOptions;
testScheduled?: boolean;
sourceMapPath: string | undefined;
newVersion: string | undefined;
}

// TODO(soon): we should be able to remove this function when we fully migrate
Expand Down Expand Up @@ -173,7 +174,7 @@ function useLocalWorker(props: LocalProps) {
let server = miniflareServerRef.current;
if (server === undefined) {
logger.log(chalk.dim("⎔ Starting local server..."));
const newServer = new MiniflareServer();
const newServer = new MiniflareServer(props.newVersion);
miniflareServerRef.current = server = newServer;
server.addEventListener("reloaded", async (event) => {
await maybeRegisterLocalWorker(event, props.name);
Expand Down
29 changes: 24 additions & 5 deletions packages/wrangler/src/dev/miniflare.ts
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,10 @@ export interface ConfigBundle {
}

class WranglerLog extends Log {
constructor(logLevel: LogLevel, private readonly newVersion?: string) {
super(logLevel);
}

#warnedCompatibilityDateFallback = false;

info(message: string) {
Expand All @@ -122,10 +126,18 @@ class WranglerLog extends Log {

warn(message: string) {
// Only log warning about requesting a compatibility date after the workerd
// binary's version once
if (message.startsWith("The latest compatibility date supported by")) {
// binary's version once, and only if there's an update available.
if (
this.newVersion !== undefined &&
message.startsWith("The latest compatibility date supported by")
) {
if (this.#warnedCompatibilityDateFallback) return;
this.#warnedCompatibilityDateFallback = true;
message += [
"",
"Features enabled by your requested compatibility date may not be available.",
`Upgrade to \`wrangler@${this.newVersion}\` to remove this warning.`,
].join("\n");
}
super.warn(message);
}
Expand All @@ -139,11 +151,13 @@ function getIdentifier(name: string) {
return name.replace(IDENTIFIER_UNSAFE_REGEXP, "_");
}

function buildLog(): Log {
function buildLog(newVersion: string | undefined): Log {
let level = logger.loggerLevel.toUpperCase() as Uppercase<LoggerLevel>;
if (level === "LOG") level = "INFO";
const logLevel = LogLevel[level];
return logLevel === LogLevel.NONE ? new NoOpLog() : new WranglerLog(logLevel);
return logLevel === LogLevel.NONE
? new NoOpLog()
: new WranglerLog(logLevel, newVersion);
}

async function buildSourceOptions(
Expand Down Expand Up @@ -459,9 +473,14 @@ export type MiniflareServerEventMap = {
error: ErrorEvent;
};
export class MiniflareServer extends TypedEventTarget<MiniflareServerEventMap> {
#log = buildLog();
readonly #log: Log;
#mf?: Miniflare;

constructor(newVersion: string | undefined) {
super();
this.#log = buildLog(newVersion);
}

// `buildMiniflareOptions()` is asynchronous, meaning if multiple bundle
// updates were submitted, the second may apply before the first. Therefore,
// wrap updates in a mutex, so they're always applied in invocation order.
Expand Down
3 changes: 2 additions & 1 deletion packages/wrangler/src/dev/start-server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@ export async function startDevServer(
usageModel: props.usageModel,
workerDefinitions,
sourceMapPath: bundle?.sourceMapPath,
newVersion: props.newVersion,
});

return {
Expand Down Expand Up @@ -318,7 +319,7 @@ export async function startLocalServer(props: LocalProps) {

const config = await localPropsToConfigBundle(props);
return new Promise<{ stop: () => void }>((resolve, reject) => {
const server = new MiniflareServer();
const server = new MiniflareServer(props.newVersion);
server.addEventListener("reloaded", async (event) => {
await maybeRegisterLocalWorker(event, props.name);
props.onReady?.(event.url.hostname, parseInt(event.url.port));
Expand Down
9 changes: 8 additions & 1 deletion packages/wrangler/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,12 @@ ${TOML.stringify({ rules: config.build.upload.rules })}`
return rules;
}

export async function printWranglerBanner() {
/**
* Prints the current version of Wrangler, checking for updates and printing
* the new version if available. Returns the new version number if an update
* is available, or `undefined` otherwise.
*/
export async function printWranglerBanner(): Promise<string | undefined> {
// Let's not print this in tests
if (typeof jest !== "undefined") {
return;
Expand Down Expand Up @@ -129,6 +134,8 @@ After installation, run Wrangler with \`npx wrangler\`.`
);
}
}

return maybeNewVersion;
}

export function isLegacyEnv(config: Config): boolean {
Expand Down

0 comments on commit f6ae8ce

Please sign in to comment.