Skip to content

Releases: cloudflare/workers-sdk

[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.)

[email protected]

21 Dec 19:50
2696329
Compare
Choose a tag to compare

Patch Changes

  • 421f2e4: Update base version to 0.0.5, copy the README to packages/wrangler

[email protected]

21 Dec 22:49
096197d
Compare
Choose a tag to compare

0.0.5

Patch Changes

  • cea27fe: don't log file contents when writing via kv:key put <key> --path <path>

  • b53cbc8: CI/CD

    • Release flow triggered on PR's closed
  • 43e7a82: When using wrangler pages dev, enable source maps and log unhandled rejections

  • c716abc: Error and exit if the --type option is used for the init command.

    The --type option is no longer needed, nor supported.

    The type of a project is implicitly javascript, even if it includes a wasm (e.g. built from rust).

    Projects that would have had the webpack type need to be configured separately to have a custom build.

  • 3752acf: Add support for websockets in dev, i.e. when developing workers. This replaces the proxy layer that we use to connect to the 'edge' during preview mode, using the faye-wesocket library.

  • c7bee70: Patches typing mismatches between us, undici and miniflare when proxying requests in pages dev, and also adds fallback 404 behavior which was missed

  • 8b6c2d1: Add more fields to the tsconfig.json generated by wrangler init

  • 78cd080: Custom builds for dev and publish

  • cd05d20: import text file types into workers

  • 1216fc9: Export regular functions from dialog.ts, pass tests (followup from #124)

  • 6fc4c50: Display error message when unknown command is provided to the wrangler CLI.

  • 23543fe: Allow the developer to exit init if there is already a toml file

  • 1df6b0c: enable @typescript-eslint/no-floating-promises, pass lint+type check

  • 3c5725f: CI/CD Cleanup

    • Removed the build step from tests, which should speed up the "Tests" Workflow.
    • Added a branch specific trigger for "Release", now the Workflow for "Release" should only work on PRs closed to main
    • Removed the "Changeset PR" Workflow. Now the "Release" Workflow will handle everything needed for Changesets.
  • fb0eae7: support importing .wasm files / workers-rs support

  • e928f94: Improve support for package exports conditionals, including "worker" condition

  • 43e7a82: Upgrade miniflare to 2.0.0-rc.4

  • f473942: Replaces the static asset server with a more faithful simulation of what happens with a production Pages project.

    Also improves error handling and automatically opens the browser when running wrangler pages dev.