Skip to content

Releases: cloudflare/workers-sdk

wrangler@0.0.18

08 Mar 08:55
Compare
Choose a tag to compare

Patch Changes

  • #523 8c99449 Thanks @threepointone! - feat: secrets + environments

    This implements environment support for wrangler secret (both legacy and services). We now consistently generate the right script name across commands with the getScriptName() helper.

    Based on the work by @mitchelvanbever in #95.

  • #554 18ac439 Thanks @petebacondarwin! - fix: limit bulk put API requests to batches of 5,000

    The kv:bulk put command now batches up put requests in groups of 5,000,
    displaying progress for each request.

  • #437 2805205 Thanks @jacobbednarz! - feat: use CLOUDFLARE_... environment variables deprecating CF_...

    Now one should use CLOUDFLARE_API_TOKEN, CLOUDFLARE_ACCOUNT_ID and CLOUDFLARE_API_BASE_URL rather than CF_API_TOKEN, CF_ACCOUNT_ID and CF_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_ and CLOUDFLARE_
    for prefixing environment variables. Until recently, many of the tools
    were fine with CF_ however, there started to be conflicts with
    external tools (such as Cloudfoundary CLI), which also uses CF_ 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
    the CLOUDFLARE_ 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: implement rules config field

    This 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
  • #517 201a6bb Thanks @threepointone! - fix: publish environment specific routes

    This 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 to false 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 the no-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 level main config field

    This implements a top level main field for wrangler.toml to define an entry point for the worker , and adds a deprecation warning for build.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 for build.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
  • #525 9d5c14d Thanks @threepointone! - feat: tail+envs

    This 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 in wrangler 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: websockets

    This fixes websockets in wrangler dev. It looks like we broke it in #503. I've reverted the specific changes made to proxy.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 in wrangler 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 than wrangler dev assumes some interaction with cloudflare and their API. The only command other than dev where this "worked" was kv, 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 for wrangler 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+envs

    This implements service environments + wrangler dev. Fairly simple, it just needed the right url when creating the edge preview token.

    I tested ...

Read more

wrangler@0.0.17

16 Feb 16:50
3789b16
Compare
Choose a tag to compare

Patch Changes

  • #414 f30426f Thanks @petebacondarwin! - fix: support build.upload.dir when using build.upload.main

    Although, build.upload.dir is deprecated, we should still support using it when the entry-point is being defined by the build.upload.main and the format is modules.

    Fixes #413

  • #447 2c5c934 Thanks @threepointone! - fix: Config should be resolved relative to the entrypoint

    During dev and publish, we should resolve wrangler.toml starting from the entrypoint, and then working up from there. Currently, we start from the directory from which we call wrangler, 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() on faye-websockets with .close()
    added: Interface to give faye same types as compliant ws with additional .pipe() implementation; .on("message" => fn)

  • #462 a173c80 Thanks @caass! - Add filtering to wrangler tail, so you can now wrangler tail <name> --status ok, for example. Supported options:

    • --status cancelled --status error --> you can filter on ok, error, and cancelled 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-format

    This 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 for publish.

  • #438 64d62be Thanks @Electroid! - feat: Add support for "json" bindings

    Did 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: rename open-in-brower.ts to open-in-browser.ts

  • #411 a52f0e0 Thanks @ObsidianMinor! - feat: unsafe-bindings

    Adds 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 open

    We 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 routes

    Fixes #92

  • #474 bfedc58 Thanks @JacobMGEvans! - bugfix: create reporting.toml file in "wrangler/config" and move error reporting user decisions to new reporting.toml

  • #445 d5935e7 Thanks @threepointone! - chore: remove experimental_services from configuration

    Now 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: enable strict in tsconfig.json

    In the march towards full strictness, this enables strict in tsconfig.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.

  • #408 14098af Thanks @mrbbot! - Upgrade miniflare to 2.3.0

  • #448 b72a111 Thanks @JacobMGEvans! - feat: add --yes with alias --y flag as automatic answer to all prompts and run wrangler 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 on init <name> or parent directory if no input is provided.

  • #452 1cf6701 Thanks @petebacondarwin! - feat: add support for publishing workers with r2 bucket bindings

    This change adds the ability to define bindings in your wrangler.toml...

Read more

wrangler@0.0.16

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

wrangler@0.0.15

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.

wrangler@0.0.14

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.

wrangler@0.0.13

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.

wrangler@0.0.12

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.

wrangler@0.0.11

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.

wrangler@0.0.9

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)

wrangler@0.0.10

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

Patch Changes