Skip to content

Releases: cloudflare/workers-sdk

[email protected]

07 Feb 12:26
1d40fbf
Compare
Choose a tag to compare

Patch Changes

  • #364 3575892 Thanks @threepointone! - enhance: small tweaks to wrangler init

    • A slightly better package.json
    • A slightly better tsconfig.json
    • installing typescript as a dev dependency
  • #380 aacd1c2 Thanks @GregBrimble! - fix: ensure pages routes are defined correctly

    In 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 using running.os but this appeared not to be working.
  • #347 ede5b22 Thanks @threepointone! - fix: hide wrangler pages functions in the main help menu

    This 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 for kv:key get.

    Fixes #359.

  • #373 6e7baf2 Thanks @petebacondarwin! - fix: use the appropriate package manager when initializing a wrangler project

    Previously, 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 in wrangler dev

    Just a quick fix to accept uppercase hotkeys during dev.

  • #331 e151223 Thanks @petebacondarwin! - fix: generate valid URL route paths for pages on Windows

    Previously route paths were manipulated by file-system path utilities.
    On Windows this resulted in URLs that had backslashes, which are invalid for such URLs.

    Fixes #51
    Closes #235
    Closes #330
    Closes #327

  • #338 e0d2f35 Thanks @threepointone! - feat: environments for Worker Sites

    This 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 the npm 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() and mockApiToken() 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 applies normalizeSlashes() and trimTimings() 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 esbuild

    Update esbuild to 0.14.14. Also had to change import esbuild from "esbuild"; to import * as esbuild from "esbuild"; in dev.tsx.

  • #371 85ceb84 Thanks @nrgnrg! - fix: pages advanced mode usage

    Previously in pages projects using advanced mode (a single _worker.js or --script-path file rather than a ./functions folder), calling pages 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 in wrangler 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 commands

    This change speeds up tests and avoids us checking that npm did what it is supposed to do.

  • #348 b8e3b01 Thanks @threepointone! - chore: replace node-fetch with undici

    There are several reasons to replace node-fetch with undici:

    • undici's fetch() implementation is set to become node's standard fetch() 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 via miniflare/pages, so this means our bundle size could ostensibly become smaller.

    This replaces node-fetch with undici.

    • All instances of import fetch from "node-fetch" are replaced with import {fetch} from "undici"
    • undici also comes with spec compliant forms of FormData and File, so we could also remove formdata-node in form_data.ts
    • All the global types that were injected by node-fetch are now imported from undici (as well as some mistaken ones from node:url)
    • NOTE: this also turns on skipLibCheck in tsconfig.json. Some dependencies oddly depend on browser globals like Request, Response (like @miniflare/core, jest-fetch-mock, etc), which now fail because node-fetch isn't injecting those globals anymore. So we enable skipLibCheck to bypass them. (I'd thought skipLibCheck 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 enable strict sometime to avoid anys, but that's for later.)
    • The bundle size isn't s...
Read more

[email protected]

30 Jan 17:52
f29d0cb
Compare
Choose a tag to compare

Patch Changes

  • #333 6320a32 Thanks @threepointone! - fix: pass worker name to syncAssets in dev

    This fix passes the correct worker name to syncAssets during wrangler dev. This function uses the name to create the backing kv store for a Workers Sites definition, so it's important we get the name right.

    I also fixed the lint warning introduced in #321, to pass props.enableLocalPersistence as a dependency in the useEffect call that starts the "local" mode dev server.

  • #335 a417cb0 Thanks @threepointone! - fix: prevent infinite loop when fetching a list of results

    When fetching a list of results from cloudflare APIs (e.g. when fetching a list of keys in a kv namespace), the api returns a cursor that a consumer should use to get the next 'page' of results. It appears this cursor can also be a blank string (while we'd only account for it to be undefined). By only accounting for it to be undefined, we were infinitely looping through the same page of results and never terminating. This PR fixes it by letting it be a blank string (and null, for good measure)

  • #332 a2155c1 Thanks @threepointone! - fix: wait for port to be available before creating a dev server

    When we run wrangler dev, we start a server on a port (defaulting to 8787). We do this separately for both local and edge modes. However, when switching between the two with the l hotkey, we don't 'wait' for the previous server to stop before starting the next one. This can crash the process, and we don't want that (of course). So we introduce a helper function waitForPortToBeAvailable() that waits for a port to be available before returning. This is used in both the local and edge modes, and prevents the bug right now, where switching between edge - local - edge crashes the process.

    (This isn't a complete fix, and we can still cause errors by very rapidly switching between the two modes. A proper long term fix for the future would probably be to hoist the proxy server hook above the <Remote/> and <Local/> components, and use a single instance throughout. But that requires a deeper refactor, and isn't critical at the moment.)

  • #336 ce61000 Thanks @threepointone! - feat: inline text-like files into the worker bundle

    We were adding text-like modules (i.e. .txt, .html and .pem files) as separate modules in the Worker definition, but this only really 'works' with the ES module Worker format. This commit changes that to inline the text-like files into the Worker bundle directly.

    We still have to do something similar with .wasm modules, but that requires a different fix, and we'll do so in a subsequent commit.

  • #336 ce61000 Thanks @threepointone! - feat: Sites support for local mode wrangler dev

    This adds support for Workers Sites in local mode when running wrangler dev. Further, it fixes a bug where we were sending the __STATIC_CONTENT_MANIFEST definition as a separate module even with service worker format, and a bug where we weren't uploading the namespace binding when other kv namespaces weren't present.

[email protected]

28 Jan 14:56
Compare
Choose a tag to compare

Patch Changes

  • #307 53c6318 Thanks @threepointone! - feat: wrangler secret * --local

    This PR implements wrangler secret for --local mode. The implementation is simply a no-op, since we don't want to actually write secret values to disk (I think?). I also got the messaging for remote mode right by copying from wrangler 1. Further, I added tests for all the wrangler secret commands.

  • #324 b816333 Thanks @GregBrimble! - Fixes wrangler pages dev failing to start for just a folder of static assets (no functions)

  • #317 d6ef61a Thanks @threepointone! - fix: restart the dev proxy server whenever it closes

    When we run wrangler dev, the session that we setup with the preview endpoint doesn't last forever, it dies after ignoring it for 5-15 minutes or so. The fix for this is to simply reconnect the server. So we use a state hook as a sigil, and add it to the dependency array of the effect that sets up the server, and simply change it every time the server closes.

    Fixes #197

    (In wrangler1, we used to restart the whole process, including uploading the worker again, making a new preview token, and so on. It looks like that they may not have been necessary.)

  • #312 77aa324 Thanks @threepointone! - fix: remove --prefer-offline when running npm install

    We were using --prefer-offline when running npm install during wrangler init. The behaviour is odd, it doesn't seem to fetch from the remote when the cache isn't hit, which is not what I'm expecting. So we remove --prefer-offline.

  • #311 a5537f1 Thanks @threepointone! - fix: custom builds should allow multiple commands

    We were running custom builds as a regular command with execa. This would fail whenever we tried to run compound commands like cargo install -q worker-build && worker-build --release (via #236). The fix is to use shell: true, so that the command is run in a shell and can thus use bash-y syntax like &&, and so on. I also switched to using execaCommand which splits a command string into parts correctly by itself.

  • #321 5b64a59 Thanks @geelen! - fix: disable local persistence by default & add --experimental-enable-local-persistence flag

    BREAKING CHANGE:

    When running dev locally any data stored in KV, Durable Objects or the cache are no longer persisted between sessions by default.

    To turn this back on add the --experimental-enable-local-persistence at the command line.

[email protected]

26 Jan 14:21
487afde
Compare
Choose a tag to compare

Patch Changes

  • #293 71b0fab Thanks @petebacondarwin! - fix: warn if the site.entry-point configuration is found during publishing

    Also updates the message and adds a test for the error when there is no entry-point specified.

    Fixes #282

  • #304 7477b52 Thanks @threepointone! - feat: enhance wrangler init

    This PR adds some enhancements/fixes to the wrangler init command.

    • doesn't overwrite wrangler.toml if it already exists
    • installs wrangler when creating package.json
    • offers to install wrangler into package.json even if package.json already exists
    • offers to install @cloudflare/workers-types even if tsconfig.json already exists
    • pipes stdio back to the terminal so there's feedback when it's installing npm packages

    This does have the side effect of making out tests slower. I added --prefer-offline to the npm install calls to make this a shade quicker, but I can't figure out a good way of mocking these. I'll think about it some more later. We should work on making the installs themselves quicker (re: #66)

    This PR also fixes a bug with our tests - runWrangler would catch thrown errors, and if we didn't manually verify the error, tests would pass. Instead, it now throws correctly, and I modified all the tests to assert on thrown errors. It seems like a lot, but it was just mechanical rewriting.

  • #294 7746fba Thanks @threepointone! - feature: add more types that get logged via console methods

    This PR adds more special logic for some data types that get logged via console methods. Types like Promise, Date, WeakMaps, and some more, now get logged correctly (or at least, better than they used to).

    This PR also fixes a sinister bug - the type of the ConsoleAPICalled events don't match 1:1 with actual console methods (eg: console.warn message type is warning). This PR adds a mapping between those types and method names. Some methods don't seem to have a message type, I'm not sure why, but we'll get to them later.

  • #310 52c99ee Thanks @threepointone! - feat: error if a site definition doesn't have a bucket field

    This adds an assertion error for making sure a [site] definition always has a bucket field.As a cleanup, I made some small fixes to the Config type definition, and modified the tests in publish.test.ts to use the config format when creating a wrangler.toml file.

[email protected]

24 Jan 22:41
5b7f46b
Compare
Choose a tag to compare

Patch Changes

  • #292 e5d3690 Thanks @threepointone! - fix: use entrypoint specified in esbuuild's metafile as source for building the worker

    When we pass a non-js file as entry to esbuild, it generates a .js file. (which, is the whole job of esbuild, haha). So, given <source>/index.ts, it'll generate <destination>/index.js. However, when we try to 'find' the matching file to pass on as an input to creating the actual worker, we try to use the original file name inside the destination directory. At this point, the extension has changed, so it doesn't find the file, and hence we get the error that looks like ENOENT: no such file or directory, open '/var/folders/3f/fwp6mt7n13bfnkd5vl3jmh1w0000gp/T/tmp-61545-4Y5kwyNI8DGU/src/worker.ts'

    The actual path to the destination file is actually the key of the block in metafile.outputs that matches the given output.entryPoint, so this PR simply rewrites the logic to use that instead.

  • #287 b63efe6 Thanks @threepointone! - fix: propagate api errors to the terminal correctly

    Any errors embedded in the response from the Cloudflare API were being lost, because fetchInternal() would throw on a non-200 response. This PR fixes that behaviour:

    • It doesn't throw on non-200 responses
    • It first gets the response text with .text() and converts it to an object with JSON.parse, so in case the api returns a non json response, we don't lose response we were sent.

    Unfortunately, because of the nature of this abstraction, we do lose the response status code and statusText, but maybe that's acceptable since we have richer error information in the payload. I considered logging the code and text to the terminal, but that may make it noisy.

[email protected]

24 Jan 17:56
Compare
Choose a tag to compare

Patch Changes

  • #242 014a731 Thanks @petebacondarwin! - Refactor pages code to pass strict-null checks

  • #267 e22f9d7 Thanks @petebacondarwin! - refactor: tidy up the typings of the build result in dev

    In #262 some of the strict null fixes were removed to resolve a regression.
    This refactor re-applies these fixes in a way that avoids that problem.

  • #284 20377e8 Thanks @petebacondarwin! - Add whoami command

  • #270 2453577 Thanks @petebacondarwin! - feat: add support for include and exclude when publishing site assets

  • #270 0289882 Thanks @petebacondarwin! - fix: ensure kv:key list matches the output from Wrangler 1

    The previous output was passing an array of objects to console.log, which ended up showing something like

    [Object object]
    [Object object]
    ...
    

    Now the result is JSON stringified before being sent to the console.
    The tests have been fixed to check this too.

  • #258 f9c1423 Thanks @petebacondarwin! - fix: correctly handle entry-point path when publishing

    The publish command was failing when the entry-point was specified in the wrangler.toml file and the entry-point imported another file.

    This was because we were using the metafile.inputs to guess the entry-point file path. But the order in which the source-files were added to this object was not well defined, and so we could end up failing to find a match.

    This fix avoids this by using the fact that the metadata.outputs object will only contain one element that has the entrypoint property - and then using that as the entry-point path. For runtime safety, we now assert that there cannot be zero or multiple such elements.

  • #275 e9ab55a Thanks @petebacondarwin! - feat: add a link to create a github issue when there is an error.

    When a (non-yargs) error surfaces to the top level,
    we know also show a link to Github to encourage the developer to report an issue.

  • #286 b661dd0 Thanks @dependabot! - chore: Update node-fetch to 3.1.1, run npm audit fix in root

    This commit addresses a secutity issue in node-fetch and updates it to 3.1.1. I also ran npm audit fix in the root directory to address a similar issue with @changesets/get-github-info.

  • #249 9769bc3 Thanks @petebacondarwin! - Do not crash when processing environment configuration.

    Previously there were corner cases where the configuration might just crash.
    These are now handled more cleanly with more appropriate warnings.

  • #272 5fcef05 Thanks @petebacondarwin! - refactor: enable TypeScript strict-null checks

    The codebase is now strict-null compliant and the CI checks will fail if a PR tries to introduce code that is not.

  • #277 6cc9dde Thanks @petebacondarwin! - fix: align publishing sites asset keys with Wrangler 1

    • Use the same hashing strategy for asset keys (xxhash64)
    • Include the full path (from cwd) in the asset key
    • Match include and exclude patterns against full path (from cwd)
    • Validate that the asset key is not over 512 bytes long
  • #270 522d1a6 Thanks @petebacondarwin! - fix: check actual asset file size, not base64 encoded size

    Previously we were checking whether the base64 encoded size of an asset was too large (>25MiB).
    But base64 takes up more space than a normal file, so this was too aggressive.

  • #263 402c77d Thanks @jkriss! - fix: appropriately fail silently when the open browser command doesn't work

  • #280 f19dde1 Thanks @petebacondarwin! - fix: skip unwanted files and directories when publishing site assets

    In keeping with Wrangler 1, we now skip node_modules and hidden files and directories.

    An exception is made for .well-known. See https://datatracker.ietf.org/doc/html/rfc8615.

    The tests also prove that the asset uploader will walk directories in general.

  • #258 ba6fc9c Thanks @petebacondarwin! - chore: add test-watch script to the wrangler workspace

    Watch the files in the wrangler workspace, and run the tests when anything changes:

    > npm run test-watch -w wrangler

    This will also run all the tests in a single process (rather than in parallel shards) and will increase the test-timeout to 50 seconds, which is helpful when debugging.

[email protected]

18 Jan 21:42
c05df0f
Compare
Choose a tag to compare

Patch Changes

  • #238 65f9904 Thanks @threepointone! - refactor: simplify and document config.ts

    This PR cleans up the type definition for the configuration object, as well as commenting the hell out of it. There are no duplicate definitions, and I annotated what I could.

    • @optional means providing a value isn't mandatory
    • @deprecated means the field itself isn't necessary anymore in wrangler.toml
    • @breaking means the deprecation/optionality is a breaking change from wrangler 1
    • @todo means there's more work to be done (with details attached)
    • @inherited means the field is copied to all environments
  • #257 00e51cd Thanks @threepointone! - fix: description for kv:bulk delete <filename>

    The description for the kv:bulk delete command was wrong, it was probably copied earlier from the kv:bulk put command. This PR fixes the mistake.

  • #262 7494cf7 Thanks @threepointone! - fix: fix dev and publish

    We introduced some bugs in recent PRs

    • In #196, we broke being able to pass an entrypoint directly to the cli. In this PR, I just reverted that fix. I'll reopen #78 and we'll tackle it again later. (cc @jgentes)
    • In #215, we broke being able to publish a script by just passing --latest or --compatibility-data in the cli. This PR fixes that by reading the correct argument when choosing whether to publish.
    • In #247, we broke how we made requests by passing headers to requests. This PR reverts the changes made in cfetch/internal.ts. (cc @petebacondarwin)
    • In #244, we broke dev and it would immediately crash. This PR fixes the reference in dev.tsx that was breaking. (cc @petebacondarwin)

[email protected]

18 Jan 22:11
2a89ee5
Compare
Choose a tag to compare

Patch Changes

[email protected]

14 Jan 19:28
f8a97de
Compare
Choose a tag to compare

Patch Changes

  • #231 18f8f65 Thanks @threepointone! - refactor: proxy/preview server

    This PR refactors how we setup the proxy server between the developer and the edge preview service during wrangler dev. Of note, we start the server immediately. We also buffer requests/streams and hold on to them, when starting/refreshing the token. This means a developer should never see ERR_CONNECTION_REFUSED error page, or have an older worker respond after making a change to the code. And when the token does get refreshed, we flush said streams/requests with the newer values, making the iteration process a lot smoother and predictable.

  • #239 0431093 Thanks @Warfields! - Added prompt for users to select an account.

  • #225 b901bf7 Thanks @GregBrimble! - Fix the --watch command for wrangler pages functions build.

  • #208 fe4b099 Thanks @petebacondarwin! - Remove explicit any types from the codebase

    This change removes all use of any from the code and updates the no-explicit-any eslint rule to be an error.

  • #223 a979d55 Thanks @GregBrimble! - Add ability to compile a directory other than functions for wrangler pages functions build.

  • #216 e1c615f Thanks @GregBrimble! - Ignore non-JS files when compiling Pages Functions

  • #217 777f4d5 Thanks @GregBrimble! - Reverse execution order of Pages Functions middlewares

  • #221 8ff5537 Thanks @mrbbot! - Upgrade miniflare to 2.0.0

  • #196 fc112d7 Thanks @jgentes! - allow specifying only "index" without extension or nothing at all for "wrangler dev" and "wrangler publish"

  • #211 3bbfd4f Thanks @GregBrimble! - Silently fail to auto-open the browser in wrangler pages dev command when that errors out.

  • #189 2f7e1b2 Thanks @petebacondarwin! - Refactor raw value extraction from Cloudflare APIs

    Most API responses are JSON of the form:

    { result, success, errors, messages, result_info }
    

    where the result contains the actual response value.

    But some API responses only contain the result value.

    This change refactors the client-side fetch API to allow callers to specify what kind of response they expect.

  • #202 e26781f Thanks @threepointone! - Disable @typescript-lint/no-explicit-any eslint rule in pages code

  • #214 79d0f2d Thanks @threepointone! - rename --public as --experimental-public

  • #215 41d4c3e Thanks @threepointone! - Add --compatibility-date, --compatibility-flags, --latest cli arguments to dev and publish.

    • A cli arg for adding a compatibility data, e.g --compatibility_date 2022-01-05
    • A shorthand --latest that sets compatibility_date to today's date. Usage of this flag logs a warning.
    • latest is NOT a config field in wrangler.toml.
    • In dev, when a compatibility date is not available in either wrangler.toml or as a cli arg, then we default to --latest.
    • In publish we error if a compatibility date is not available in either wrangler.toml or as a cli arg. Usage of --latest logs a warning.
    • We also accept compatibility flags via the cli, e.g: --compatibility-flags formdata_parser_supports_files
  • #210 d381fed Thanks @GregBrimble! - Expose wrangler pages functions build command, which takes the functions folder and compiles it into a single Worker.

    This was already done in wrangler pages dev, so this change just exposes this build command for use in our build image, or for people who want to do it themselves.

  • #213 5e1222a Thanks @GregBrimble! - Adds support for building a Worker from a folder of functions which isn't tied to the Pages platform.

    This lets developers use the same file-based routing system an simplified syntax when developing their own Workers!

  • #199 d9ecb70 Thanks @threepointone! - Refactor inspection/debugging code -

    • I've installed devtools-protocol, a convenient package that has the static types for the devtools protocol (duh) autogenerated from chrome's devtools codebase.
    • We now log messages and exceptions into the terminal directly, so you don't have to open devtools to see those messages.
    • Messages are now buffered until a devtools instance connects, so you won't lose any messages while devtools isn't connected.
    • We don't lose the connection on making changes to the worker, removing the need for the kludgy hack on the devtools side (where we refresh the whole page when there's a change)
  • #189 2f7e1b2 Thanks @petebacondarwin! - Fix pagination handling of list requests to the Cloudflare API

    When doing a list request to the API, the server may respond with only a single page of results.
    In this case, it will also provide a cursor value in the result_info part of the response, which can be used to request the next page.
    This change implements this on the client-side so that we get all the results by requesting further pages when there is a cursor.

  • #220 6fc2276 Thanks @GregBrimble! - Add --live-reload option to wrangler pages dev which automatically reloads HTML pages when a change is detected

  • #223 a979d55 Thanks @GregBrimble! - Add --output-config-path option to wrangler pages functions build which writes a config file describing the functions folder.

[email protected]

06 Jan 17:41
19d3833
Compare
Choose a tag to compare

Patch Changes

  • 1fdcfe3: Subfolder Relative Pathing Fix issue #147
    The filename from args didn't handle relative paths passed in from users with scripts in subfolders.
    To handle the subfolder pathing a path.relative using cwd() to user input filepath to the filepath variable passed into Dev

  • 0330ecf: Adds the Content-Type header when serving assets with wrangler pages dev. It guesses the mime-type based on the asset's file extension.

  • eaf40e8: Improve the error message for bad kv:namespace delete commands

  • 562d3ad: chore: enable eslint's no-shadow rule

  • 9cef492: Adds the logic of @cloudflare/pages-functions-compiler directly into wrangler. This generates a Worker from a folder of functions.

    Also adds support for sourcemaps and automatically watching dependents to trigger a re-build.

  • 3426c13: fix: prevent useWorker's inifinite restarts during dev

  • e9a1820: Upgrade miniflare to 2.0.0-rc.5

  • 7156e39: Pass bindings correctly to miniflare/child_process.spawn in dev, to prevent miniflare from erroring out on startup

  • ce2d7d1: Add experimental support for worker-to-worker service bindings. This introduces a new field in configuration experimental_services, and serialises it when creating and uploading a worker definition. This is highly experimental, and doesn't work with wrangler dev yet.

  • 072566f: Fixed KV getNamespaceId preview flag bug

  • 5856807: Improve validation message for kv:namespace create

    Previously, if the user passed multiple positional arguments (which is invalid)
    the error message would suggest that these should be grouped in quotes.
    But this is also wrong, since a namespace binding name must not contain spaces.

  • 34ad323: Refactor the way we convert configurations for bindings all the way through to the API where we upload a worker definition. This commit preserves the configuration structure (mostly) until the point we serialise it for the API. This prevents the way we use duck typing to detect a binding type when uploading, makes the types a bit simpler, and makes it easier to add other types of bindings in the future (notably, the upcoming service bindings.)