Releases: cloudflare/workers-sdk
[email protected]
Patch Changes
-
#752
6d43e94
Thanks @petebacondarwin! - fix: add a warning ifdev
is defaulting to the latest compatibility-dateFixes #741
-
#767
836ad59
Thanks @threepointone! - fix: use cwd for--experiment-enable-local-persistence
This sets up
--experiment-enable-local-persistence
to explicitly useprocess.cwd() + wrangler-local-state
as a path to store values. Without it, local mode uses the temp dir that we use to bundle the worker, which gets wiped out on ending wrangler dev. In the future, based on usage, we may want to make the path configurable as well.Fixes #766
-
#723
7942936
Thanks @threepointone! - fix: spread tail messages when loggingLogged messages (via console, etc) would previously be logged as an array of values. This spreads it when logging to match what is expected.
-
#756
8e38442
Thanks @threepointone! - fix: resolve raw file bindings correctly inwrangler dev
local modeFor
wasm_modules
/text_blobs
/data_blobs
in local mode, we need to rewrite the paths as absolute so that they're resolved correctly by miniflare. This also expands some coverage for local modewrangler dev
. -
#699
ea8e701
Thanks @JacobMGEvans! - polish: added logout and login to helpstring message. -
#728
0873049
Thanks @threepointone! - fix: only send durable object migrations when requiredWe had a bug where even if you'd published a script with migrations, we would still send a blank set of migrations on the next round. The api doesn't accept this, so the fix is to not do so. I also expanded test coverage for migrations.
Fixes #705
-
#763
f72c943
Thanks @JacobMGEvans! - feat: Added the update check that will check the package once a day against the beta release,distTag
can be changed later, then prints the latestbeta version to the user.resolves #762
-
#695
48fa89b
Thanks @caass! - fix: stop wrangler spamming console after loginIf a user hasn't logged in and then they run a command that needs a login they'll get bounced to the login flow.
The login flow (if completed) would write their shiny new OAuth2 credentials to disk, but wouldn't reload the
in-memory state. This led to issues like #693, where even though the user was logged in on-disk, wrangler
wouldn't be aware of it.We now update the in-memory login state each time new credentials are written to disk.
-
#734
a1dadac
Thanks @threepointone! - fix: exit dev if build fails on first runBecause of evanw/esbuild#1037, we can't recover dev if esbuild fails on first run. The workaround is to end the process if it does so, until we have a better fix.
Reported in #731
-
#757
13e57cd
Thanks @sidharthachatterjee! - feature: Add wrangler pages project listAdds a new command to list your projects in Cloudflare Pages.
-
#745
6bc3e85
Thanks @petebacondarwin! - feat: add hotkey to clear the console inwrangler dev
Closes #388
-
#747
db6b830
Thanks @petebacondarwin! - refactor: removeprocess.exit()
from the pages codeThis enables simpler testing, as we do not have to spawn new child processes
to avoid theprocess.exit()
from killing the jest process.As part of the refactor, some of the
Error
classes have been moved to a
sharederrors.ts
file. -
#726
c4e5dc3
Thanks @threepointone! - fix: assume a worker is a module worker only if it has adefault
exportThis tweaks the logic that guesses worker formats to check whether a
default
export is defined on an entry point before assuming it's a module worker. -
#735
c38ae3d
Thanks @threepointone! -text_blobs
/Text module support for service worker format in local modeThis adds support for
text_blobs
/Text module support in local mode. Now that cloudflare/miniflare#228 has landed in miniflare (thanks @caass!), we can use that in wrangler as well. -
#743
ac5c48b
Thanks @threepointone! - feat: implement[data_blobs]
This implements
[data_blobs]
support for service-worker workers, as well as enabling Data module support for service-worker workers.data_blob
is a supported binding type, but we never implemented support for it in v1. This implements support, and utilises it for supporting Data modules in service worker format. Implementation wise, it's incredibly similar to how we implementedtext_blobs
, with relevant changes.Partial fix for #740 pending local mode support.
-
#753
cf432ac
Thanks @petebacondarwin! - fix: distinguish the command hotkeys in wrangler devCloses #354
-
#746
3e25dcb
Thanks @petebacondarwin! - fix: remove superfluous debugger log messages from local devCloses #387
-
#758
9bd95ce
Thanks @sidharthachatterjee! - feature: Add wrangler pages deployment listRenders a list of deployments in a Cloudflare Pages project
-
#733
91873e4
Thanks @JacobMGEvans! - polish: improved visualization of the deprecation messages between serious and warnings with emojis. This also improves the delineation between messages. -
#738
c04791c
Thanks @petebacondarwin! - fix: add support for cron triggers indev --local
modeCurrently, I don't know if there is support for doing this in "remote" dev mode.
Resolves #737
-
#732
c63ea3d
Thanks @JacobMGEvans! - fix: abort async operations in theRemote
component to avoid unwanted side-effects
When theRemote
component is unmounted, we now signal outstand...
[email protected]
Patch Changes
[email protected]
Patch Changes
-
#719
6503ace
Thanks @petebacondarwin! - fix: ensure the correct worker name is published in legacy environmentsWhen a developer uses
--env
to specify an environment name, the Worker name should
be computed from the top-level Worker name and the environment name.When the given environment name does not match those in the wrangler.toml, we error.
But if no environments have been specified in the wrangler.toml, at all, then we only
log a warning and continue.In this second case, we were reusing the top-level environment, which did not have the
correct legacy environment fields set, such as the name. Now we ensure that such an
environment is created as needed.See #680 (comment)
-
#708
763dcb6
Thanks @threepointone! - fix: unexpected commands and arguments should throwThis enables strict mode in our command line parser (yargs), so that unexpected commands and options uniformly throw errors.
Fixes #706
-
#713
18d09c7
Thanks @threepointone! - fix: don't fetch zone id forwrangler dev --local
We shouldn't try to resolve a domain/route to a zone id when starting in local mode (since there may not even be network).
-
#692
52ea60f
Thanks @threepointone! - fix: do not deploy to workers.dev when routes are defined in an environmentWhen
workers_dev
is not configured, we had a bug where it would default to true inside an environment even when there were routes defined, thus publishing both to aworkers.dev
subdomain as well as the defined routes. The fix is to defaultworkers_dev
toundefined
, and check when publishing whether or not to publish toworkers.dev
/defined routes.Fixes #690
-
#687
8f7ac7b
Thanks @petebacondarwin! - fix: add warning aboutwrangler dev
with remote Durable ObjectsDurable Objects that are being bound by
script_name
will not be isolated from the
live data during development withwrangler dev
.
This change simply warns the developer about this, so that they can back out before
accidentally changing live data.Fixes #319
-
#661
6967086
Thanks @JacobMGEvans! - polish: add "Beta" messaging around the CLI command for Pages. Explicitly specifying the command is Beta, not to be confused with Pages itself which is production ready. -
#709
7e8ec9a
Thanks @threepointone! - fix: trigger login flow if refreshtoken isn't validIf the auth refresh token isn't valid, then we should trigger the login flow. Reported in #316
-
#702
241000f
Thanks @threepointone! - fix: setup jsx loaders when guessing worker format- We consider jsx to be regular js, and have setup our esbuild process to process js/mjs/cjs files as jsx.
- We use a separate esbuild run on an entry point file when trying to guess the worker format, but hadn't setup the loaders there.
- So if just the entrypoint file has any jsx in it, then we error because it can't parse the code.
The fix is to add the same loaders to the esbuild run that guesses the worker format.
Reported in #701
-
#711
3dac1da
Thanks @threepointone! - fix: defaultwrangler tail
to pretty printFixes #707
-
#712
fb53fda
Thanks @threepointone! - feat: Non-interactive modeContinuing the work from #325, this detects when wrangler is running inside an environment where "raw" mode is not available on stdin, and disables the features for hot keys and the shortcut bar. This also adds stubs for testing local mode functionality in
local-mode-tests
, and deletes the previous hackydev2.test.tsx
.Fixes #322
-
#716
6987cf3
Thanks @threepointone! - feat: path to a customtsconfig
This adds a config field and a command line arg
tsconfig
for passing a path to a custom typescript configuration file. We don't do any typechecking, but we do pass it along to our build process so things likecompilerOptions.paths
get resolved correctly. -
#665
62a89c6
Thanks @caass! - fix: validate that bindings have unique namesWe don't want to have, for example, a KV namespace named "DATA"
and a Durable Object also named "DATA". Then it would be ambiguous
what exactly would live atenv.DATA
(or in the case of service workers,
theDATA
global) which could lead to unexpected behavior -- and errors.Similarly, we don't want to have multiple resources of the same type
bound to the same name. If you've been working with some KV namespace
called "DATA", and you add a second namespace but don't change the binding
to something else (maybe you're copying-and-pasting and just changed out theid
),
you could be reading entirely the wrong stuff out of your KV store.So now we check for those sorts of situations and throw an error if
we find that we've encountered one. -
#698
e3e3243
Thanks @threepointone! - feat: injectprocess.env.NODE_ENV
into scriptsAn extremely common pattern in the js ecosystem is to add additional behaviour gated by the value of
process.env.NODE_ENV
. For example, React leverages it heavily to add dev-time checks and warnings/errors, and to load dev/production versions of code. By doing this substitution ourselves, we can get a significant runtime boost in libraries/code that leverage this.This does NOT tackle the additional features of either minification, or proper node compatibility, or injecting wrangler's own environment name, which we will tackle in future PRs.
-
#680
8e2cbaf
Thanks @JacobMGEvans! - refactor: support backwards compatibility with environment names and related CLI flags- When in Legacy environment mode we should not compute name field if specified in an environment.
- Throw an Error when
--env
and--name
are used together in Legacy Environment, except for Secrets & Tail which are using a special casegetLegacyScriptName
for parity with Wrangler1 - Started the refactor for args being utilized at the Config level, currently checking for Legacy Environment only.
Fixes #672
-
#684
82ec7c2
Thanks @GregBrimble! - fix: Fix--binding
option forwrangler pages dev
.We'd broken this with #581. This reverts that PR, and fixes it slightly differently. Also added an integration test to ensure we don't regress in the future.
-
#678
82e4143
Thanks @threepointone! - fix: cleanup afterpages dev
testsWe weren't killing the process started by wrangler whenever its parent was killed. This fix is to listen on SIGINT/SIGTERM and kill that process. I also did some minor configuration cleanups.
Fixes #397
Fixes <http...
[email protected]
Patch Changes
-
#675
e88a54e
Thanks @threepointone! - fix: resolve non-js modules correctly in local modeIn #633, we missed passing a cwd to the process that runs the miniflare cli. This broke how miniflare resolves modules, and led back to the dreaded "path should be a
path.relative()
d string" error. The fix is to simply pass the cwd to thespawn
call.Test plan:
cd packages/wrangler npm run build cd ../workers-chat-demo npx wrangler dev --local
-
#668
3dcdb0d
Thanks @petebacondarwin! - fix: tighten up the named environment configurationNow, when we normalize and validate the raw config, we pass in the currently
active environment name, and the config that is returned contains all the
environment fields correctly normalized (including inheritance) at the top
level of the config object. This avoids other commands from having to check
both the current named environment and the top-level config for such fields.Also, now, handle the case where the active environment name passed in via the
--env
command line argument does not match any of the named environments
in the configuration:- This is an error if there are named environments configured;
- or only a warning if there are no named environments configured.
-
#633
003f3c4
Thanks @JacobMGEvans! - refactor: create a custom CLI wrapper around Miniflare APIThis allows us to tightly control the options that are passed to Miniflare.
The current CLI is setup to be more compatible with how Wrangler 1 works, which is not optimal for Wrangler 2. -
#633
84c857e
Thanks @JacobMGEvans! - fix: ensure asset keys are relative to the project rootPreviously, asset file paths were computed relative to the current working
directory, even if we had used-c
to run Wrangler on a project in a different
directory to the current one.Now, assets file paths are computed relative to the "project root", which is
either the directory containing the wrangler.toml or the current working directory
if there is no config specified. -
#673
456e1da
Thanks @petebacondarwin! - fix: allow thebuild
field to be inherited/overridden in a named environment"Now the
build
field can be specified within a named environment, overriding whatever
may appear at the top level.Resolves #588
-
#650
d3d1ff8
Thanks @petebacondarwin! - feat: makemain
an inheritable environment fieldSee #588
-
#650
f0eed7f
Thanks @petebacondarwin! - fix: make validation error messages more consistent -
#662
612952b
Thanks @JacobMGEvans! - bugfix: use alias-e
for--env
to prevent scripts using Wrangler 1 from breaking when switching to Wrangler 2. -
#671
ef0aaad
Thanks @GregBrimble! - fix: don't exit on initial Pages Functions compilation failurePreviously, we'd exit the
wrangler pages dev
process if we couldn't immediately compile a Worker from thefunctions
directory. We now log the error, but don't exit the process. This means that proxy processes can be cleaned up cleanly on SIGINT and SIGTERM, and it matches the behavior of if a compilation error is introduced once already running (we don't exit then either). -
#667
e29a241
Thanks @threepointone! - fix: delete unused[site]
assetsWe discovered critical issues with the way we expire unused assets with
[site]
(see #666, cloudflare/wrangler-legacy#2224), that we're going back to the legacy manner of handling unused assets, i.e- deleting unused assets.Fixes #666
-
#640
2a2d50c
Thanks @caass! - Error if the user is trying to implement DO's in a service workerDurable Objects can only be implemented in Module Workers, so we should throw if we detect that
the user is trying to implement a Durable Object but their worker is in Service Worker format.
[email protected]
Patch Changes
-
#656
aeb0fe0
Thanks @threepointone! - fix: resolve npm modules correctlyWhen implementing legacy module specifiers, we didn't throughly test the interaction when there weren't any other files next to the entry worker, and importing npm modules. It would create a Regex that matched every import, and fail because a file of that name wasn't present in the source directory. This fix constructs a better regex, applies it only when there are more files next to the worker, and increases test coverage for that scenario.
Fixes #655
[email protected]
Patch Changes
-
#647
f3f3907
Thanks @petebacondarwin! - feat: add support for--ip
andconfig.dev.ip
in the dev commandNote that this change modifies the default listening address to
localhost
, which is different to127.0.0.1
, which is what Wrangler 1 does.
For most developers this will make no observable difference, since the default host mapping in most OSes fromlocalhost
to127.0.0.1
.Resolves #584
[email protected]
Patch Changes
-
#557
835c3ae
Thanks @threepointone! - fix: wrangler dev on unnamed workers in remote modeWith unnamed workers, we use the filename as the name of the worker, which isn't a valid name for workers because of the
.
(This break was introduced in #545). The preview service accepts unnamed workers and generates a hash anyway, so the fix is to simply not send it, and use the host that the service provides.
[email protected]
Patch Changes
-
#523
8c99449
Thanks @threepointone! - feat: secrets + environmentsThis implements environment support for
wrangler secret
(both legacy and services). We now consistently generate the right script name across commands with thegetScriptName()
helper.Based on the work by @mitchelvanbever in #95.
-
#554
18ac439
Thanks @petebacondarwin! - fix: limit bulk put API requests to batches of 5,000The
kv:bulk put
command now batches up put requests in groups of 5,000,
displaying progress for each request. -
#437
2805205
Thanks @jacobbednarz! - feat: useCLOUDFLARE_...
environment variables deprecatingCF_...
Now one should use
CLOUDFLARE_API_TOKEN
,CLOUDFLARE_ACCOUNT_ID
andCLOUDFLARE_API_BASE_URL
rather thanCF_API_TOKEN
,CF_ACCOUNT_ID
andCF_API_BASE_URL
, which have been deprecated.If you use the deprecated variables they will still work but you will see a warning message.
Within the Cloudflare tooling ecosystem, we have a mix of
CF_
andCLOUDFLARE_
for prefixing environment variables. Until recently, many of the tools
were fine withCF_
however, there started to be conflicts with
external tools (such as Cloudfoundary CLI), which also usesCF_
as a
prefix, and would potentially be reading and writing the same value the
Cloudflare tooling.The Go SDK1, Terraform2 and cf-terraforming3 have made the jump to
theCLOUDFLARE_
prefix for environment variable prefix.In future, all SDKs will use this prefix for consistency and to allow all the tooling to reuse the same environment variables in the scenario where they are present.
-
#530
fdb4afd
Thanks @threepointone! - feat: implementrules
config fieldThis implements the top level
rules
configuration field. It lets you specify transport rules for non-js modules. For example, you can specify*.md
files to be included as a text file with -[[rules]] {type = "Text", globs = ["**/*.md"]}
We also include a default ruleset -
{ type: "Text", globs: ["**/*.txt", "**/*.html"] }, { type: "Data", globs: ["**/*.bin"] }, { type: "CompiledWasm", globs: ["**/*.wasm"] },
More info at https://developers.cloudflare.com/workers/cli-wrangler/configuration/#build.
Known issues -
- non-wasm module types do not work in
--local
mode Data
type does not work in service worker format, in either mode
- non-wasm module types do not work in
-
#517
201a6bb
Thanks @threepointone! - fix: publish environment specific routesThis adds some tests for publishing routes, and fixes a couple of bugs with the flow.
- fixes publishing environment specific routes, closes #513
- default
workers_dev
tofalse
if there are any routes specified - catches a hanging promise when we were toggling off a
workers.dev
subdomain (which should have been caught by theno-floating-promises
lint rule, so that's concerning) - this also fixes publishing environment specific crons, but I'll write tests for that when I'm doing that feature in depth
-
#528
26f5ad2
Thanks @threepointone! - feat: top levelmain
config fieldThis implements a top level
main
field forwrangler.toml
to define an entry point for the worker , and adds a deprecation warning forbuild.upload.main
. The deprecation warning is detailed enough to give the exact line to copy-paste into your config file. Example -The `build.upload` field is deprecated. Delete the `build.upload` field, and add this to your configuration file: main = "src/chat.mjs"
This also makes
./dist
a default forbuild.upload.dir
, to match wrangler 1's behaviour.Closes #488
-
#521
5947bfe
Thanks @threepointone! - chore: update esbuild from 0.14.18 to 0.14.23 -
#480
10cb789
Thanks @caass! - Refactored tail functionality in preparation for adding pretty printing.- Moved the
debug
toggle from a build-time constant to a (hidden) CLI flag - Implemented pretty-printing logs, togglable via
--format pretty
CLI option - Added stronger typing for tail event messages
- Moved the
-
#525
9d5c14d
Thanks @threepointone! - feat: tail+envsThis implements service environment support for
wrangler tail
. Fairly simple, we just generate the right URLs. wrangler tail already works for legacy envs, so there's nothing to do there. -
#553
bc85682
Thanks @threepointone! - feat: disable tunnel inwrangler dev
Disables sharing local development server on the internet. We will bring this back after it's more polished/ready.
Fixes #550
-
#522
a283836
Thanks @threepointone! - fix: websocketsThis fixes websockets in
wrangler dev
. It looks like we broke it in #503. I've reverted the specific changes made toproxy.ts
.Test plan -
cd packages/wrangler npm run build cd ../workers-chat-demo npx wrangler dev
-
#481
8874548
Thanks @threepointone! - fix: replace the word "deploy" with "publish" everywhere.We should be consistent with the word that describes how we get a worker to the edge. The command is
publish
, so let's use that everywhere. -
#537
b978db4
Thanks @threepointone! - feat:--local
mode only applies inwrangler dev
We'd originally planned for
--local
mode to be a thing across all wrangler commands. In hindsight, that didn't make much sense, since every command other thanwrangler dev
assumes some interaction with cloudflare and their API. The only command other than dev where this "worked" waskv
, but even that didn't make sense because wrangler dev wouldn't even read from it. We also have--experimental-enable-local-persistence
there anyway.So this moves the
--local
flag to only apply forwrangler dev
and removes any trace from other commands. -
#518
72f035e
Thanks @threepointone! - feat: implement[text_blobs]
This implements support for
[text_blobs]
as defined by cloudflare/wrangler-legacy#1677.Text blobs can be defined in service-worker format with configuration in
wrangler.toml
as -[text_blobs] MYTEXT = "./path/to/my-text.file"
The content of the file will then be available as the global
MYTEXT
inside your code. Note that this ONLY makes sense in service-worker format workers (for now).Workers Sites now uses
[text_blobs]
internally. Previously, we were inlining the asset manifest into the worker itself, but we now attach the asset manifest to the uploaded worker. I also added an additional example of Workers Sites with a modules format worker. -
#532
046b17d
Thanks @threepointone! - feat: dev+envsThis implements service environments +
wrangler dev
. Fairly simple, it just needed the right url when creating the edge preview token.I tested ...
[email protected]
Patch Changes
-
#414
f30426f
Thanks @petebacondarwin! - fix: supportbuild.upload.dir
when usingbuild.upload.main
Although,
build.upload.dir
is deprecated, we should still support using it when the entry-point is being defined by thebuild.upload.main
and the format ismodules
.Fixes #413
-
#447
2c5c934
Thanks @threepointone! - fix: Config should be resolved relative to the entrypointDuring
dev
andpublish
, we should resolvewrangler.toml
starting from the entrypoint, and then working up from there. Currently, we start from the directory from which we callwrangler
, this changes that behaviour to start from the entrypoint instead.(To implement this, I made one big change: Inside commands, we now have to explicitly read configuration from a path, instead of expecting it to 'arrive' coerced into a configuration object.)
-
#472
804523a
Thanks @JacobMGEvans! - bugfix: Replace.destroy()
onfaye-websockets
with.close()
added: Interface to give faye same types as compliantws
with additional.pipe()
implementation;.on("message" => fn)
-
#462
a173c80
Thanks @caass! - Add filtering to wrangler tail, so you can nowwrangler tail <name> --status ok
, for example. Supported options:--status cancelled --status error
--> you can filter onok
,error
, andcancelled
to only tail logs that have that status--header X-CUSTOM-HEADER:somevalue
--> you can filter on headers, including ones that have specific values ("somevalue"
) or just that contain any header (e.g.--header X-CUSTOM-HEADER
with no colon)--method POST --method PUT
--> filter on the HTTP method used to trigger the worker--search catch-this
--> only shows messages that contain the phrase"catch-this"
. Does not (yet!) support regular expressions--ip self --ip 192.0.2.232
--> only show logs from requests that originate from the given IP addresses."self"
will be replaced with the IP address of the computer that sent the tail request.
-
#471
21cde50
Thanks @caass! - Add tests for wrangler tail:- ensure the correct API calls are made
- ensure that filters are sent
- ensure that the correct filters are sent
- ensure that JSON gets spat out into the terminal
-
#398
40d9553
Thanks @threepointone! - feat: guess-worker-formatThis formalises the logic we use to "guess"/infer what a worker's format is - either "modules" or "service worker". Previously we were using the output of the esbuild process metafile to infer this, we now explicitly do so in a separate step (esbuild's so fast that it doesn't have any apparent performance hit, but we also do a simpler form of the build to get this information).
This also adds
--format
as a command line arg forpublish
. -
#438
64d62be
Thanks @Electroid! - feat: Add support for "json" bindingsDid you know? We have support for "json" bindings! Here are a few examples:
[vars]
text = "plain ol' string"
count = 1
complex = { enabled = true, id = 123 } -
#422
ef13735
Thanks @threepointone! - chore: renameopen-in-brower.ts
toopen-in-browser.ts
-
#411
a52f0e0
Thanks @ObsidianMinor! - feat: unsafe-bindingsAdds support for "unsafe bindings", that is, bindings that aren't supported by wrangler, but are
desired when uploading a Worker to Cloudflare. This allows you to use beta features before
official support is added to wrangler, while also letting you migrate to proper support for the
feature when desired. Note: these bindings may not work everywhere, and may break at any time. -
#415
d826f5a
Thanks @threepointone! - fix: don't crash when browser windows don't openWe open browser windows for a few things; during
wrangler dev
, and logging in. There are environments where this doesn't work as expected (like codespaces, stackblitz, etc). This fix simply logs an error instead of breaking the flow. This is the same fix as #263, now applied to the rest of wrangler. -
91d8994
Thanks @Mexican-Man! - fix: do not merge routes with different methods when computing pages routesFixes #92
-
#474
bfedc58
Thanks @JacobMGEvans! - bugfix: createreporting.toml
file in "wrangler/config" and move error reporting user decisions to newreporting.toml
-
#445
d5935e7
Thanks @threepointone! - chore: removeexperimental_services
from configurationNow that we have
[[unsafe.bindings]]
(as of #411), we should use that for experimental features. This removes support for[experimental_services]
, and adds a helpful message for how to rewrite their configuration.This error is temporary, until the internal teams that were using this rewrite their configs. We'll remove it before GA.
What the error looks like -
Error: The "experimental_services" field is no longer supported. Instead, use [[unsafe.bindings]] to enable experimental features. Add this to your wrangler.toml: [[unsafe.bindings]] name = "SomeService" type = "service" service = "some-service" environment = "staging" [[unsafe.bindings]] name = "SomeOtherService" type = "service" service = "some-other-service" environment = "qa"
-
#456
b5f42c5
Thanks @threepointone! - chore: enablestrict
intsconfig.json
In the march towards full strictness, this enables
strict
intsconfig.json
and fixes the errors it pops up. A changeset is included because there are some subtle code changes, and we should leave a trail for them. -
#448
b72a111
Thanks @JacobMGEvans! - feat: add--yes
with alias--y
flag as automatic answer to all prompts and runwrangler init
non-interactively.
generated during setup:- package.json
- TypeScript, which includes tsconfig.json &
@cloudflare/workers-types
- Template "hello world" Worker at src/index.ts
-
#403
f9fef8f
Thanks @JacobMGEvans! - feat: add scripts to package.json & autogenerate name value when initializing a project
To get wrangler init projects up and running with good ergonomics for deploying and development,
added default scripts "start" & "deploy" with assumed TS or JS files in generated ./src/index.
The name property is now derived from user input oninit <name>
or parent directory if no input is provided. -
#452
1cf6701
Thanks @petebacondarwin! - feat: add support for publishing workers with r2 bucket bindingsThis change adds the ability to define bindings in your
wrangler.toml
...
[email protected]
Patch Changes
-
#364
3575892
Thanks @threepointone! - enhance: small tweaks towrangler init
- A slightly better
package.json
- A slightly better
tsconfig.json
- installing
typescript
as a dev dependency
- A slightly better
-
#380
aacd1c2
Thanks @GregBrimble! - fix: ensure pages routes are defined correctlyIn e151223 we introduced a bug where the RouteKey was now an array rather than a simple URL string. When it got stringified into the routing object these were invalid.
E.g.[':page*', undefined]
got stringified to":page*,"
rather than":page*"
.Fixes #379
-
#329
27a1f3b
Thanks @petebacondarwin! - ci: run PR jobs on both Ubuntu, MacOS and Windows- update .gitattributes to be consistent on Windows
- update Prettier command to ignore unknown files
Windows seems to be more brittle here. - tighten up eslint config
Windows seems to be more brittle here as well. - use the matrix.os value in the cache key
Previously we were usingrunning.os
but this appeared not to be working.
-
#347
ede5b22
Thanks @threepointone! - fix: hidewrangler pages functions
in the main help menuThis hides
wrangler pages functions
in the main help menu, since it's only intended for internal usage right now. It still "works", so nothing changes in that regard. We'll bring this back when we have a broader story in wrangler for functions. -
#360
f590943
Thanks @threepointone! - fix:kv:key get
The api for fetching a kv value, unlike every other cloudflare api, returns just the raw value as a string (as opposed to the
FetchResult
-style json). However, our fetch utility tries to convert every api response to json before parsing it further. This leads to bugs like #359. The fix is to special case forkv:key get
.Fixes #359.
-
#373
6e7baf2
Thanks @petebacondarwin! - fix: use the appropriate package manager when initializing a wrangler projectPreviously, when we initialized a project using
wrangler init
, we always used npm as the package manager.Now we check to see whether npm and yarn are actually installed, and also whether there is already a lock file in place before choosing which package manager to use.
Fixes #353
-
#363
0add2a6
Thanks @threepointone! - fix: support uppercase hotkeys inwrangler dev
Just a quick fix to accept uppercase hotkeys during
dev
. -
#331
e151223
Thanks @petebacondarwin! - fix: generate valid URL route paths for pages on WindowsPreviously route paths were manipulated by file-system path utilities.
On Windows this resulted in URLs that had backslashes, which are invalid for such URLs. -
#338
e0d2f35
Thanks @threepointone! - feat: environments for Worker SitesThis adds environments support for Workers Sites. Very simply, it uses a separate kv namespace that's indexed by the environment name. This PR also changes the name of the kv namespace generated to match wrangler 1's implementation.
-
#329
e1d2198
Thanks @petebacondarwin! - test: support testing in CI on Windows-
Don't rely on bash variables to configure tests
The use of bash variables in thenpm test
script is not supported in Windows Powershell, causing CI on Windows to fail.
These bash variables are used to override the API token and the Account ID.This change moves the control of mocking these two concepts into the test code, by adding
mockAccountId()
andmockApiToken()
helpers.- The result is slightly more boilerplate in tests that need to avoid hitting the auth APIs.
- But there are other tests that had to revert these environment variables. So the boilerplate is reduced there.
-
Sanitize command line for snapshot tests
This change appliesnormalizeSlashes()
andtrimTimings()
to command line outputs and error messages to avoid inconsistencies in snapshots.
The benefit here is that authors do not need to keep adding them to all their snapshot tests. -
Move all the helper functions into their own directory to keep the test directory cleaner.
-
-
#380
aacd1c2
Thanks @GregBrimble! - refactor: clean up pages routing -
#343
cfd8ba5
Thanks @threepointone! - chore: update esbuildUpdate esbuild to 0.14.14. Also had to change
import esbuild from "esbuild";
toimport * as esbuild from "esbuild";
indev.tsx
. -
#371
85ceb84
Thanks @nrgnrg! - fix: pages advanced mode usagePreviously in pages projects using advanced mode (a single
_worker.js
or--script-path
file rather than a./functions
folder), callingpages dev
would quit without an error and not launch miniflare.This change fixes that and enables
pages dev
to be used with pages projects in advanced mode. -
#383
969c887
Thanks @threepointone! - fix: remove redundant process.cwd() calls inwrangler init
Followup from #372 (comment), just removing some unnecessary calls to
process.cwd()
/path.join()
, since they're already relative to where they're called from. -
#329
ac168f4
Thanks @petebacondarwin! - refactor: use helpers to manage npm commandsThis change speeds up tests and avoids us checking that npm did what it is supposed to do.
-
#348
b8e3b01
Thanks @threepointone! - chore: replacenode-fetch
withundici
There are several reasons to replace
node-fetch
withundici
:undici
'sfetch()
implementation is set to become node's standardfetch()
implementation, which means we can just remove the dependency in the future (or optionally load it depending on which version of node is being used)node-fetch
pollutes the global type space with a number of standard types- we already bundle
undici
viaminiflare
/pages, so this means our bundle size could ostensibly become smaller.
This replaces
node-fetch
withundici
.- All instances of
import fetch from "node-fetch"
are replaced withimport {fetch} from "undici"
undici
also comes with spec compliant forms ofFormData
andFile
, so we could also removeformdata-node
inform_data.ts
- All the global types that were injected by
node-fetch
are now imported fromundici
(as well as some mistaken ones fromnode:url
) - NOTE: this also turns on
skipLibCheck
intsconfig.json
. Some dependencies oddly depend on browser globals likeRequest
,Response
(like@miniflare/core
,jest-fetch-mock
, etc), which now fail becausenode-fetch
isn't injecting those globals anymore. So we enableskipLibCheck
to bypass them. (I'd thoughtskipLibCheck
completely ignores 'third party' types, but that's not true - it still uses the module graph to scan types. So we're still typesafe. We should enablestrict
sometime to avoidany
s, but that's for later.) - The bundle size isn't s...