Commit Graph

2508 Commits

Author SHA1 Message Date
Ciro Spaciari
83863c27b4 fix(windows) fix some test failures (#9417)
* fix ReadFile and fix isEligible for sendfile on windows

* give it a little more time

* actually test tls property

* Update src/bun.js/webcore/blob/ReadFile.zig

Co-authored-by: John-David Dalton <john.david.dalton@gmail.com>

* getServers test on windows

* retry

* check comptime first on isEligible

* wip body-stream

* oopsie

* opsie 2

* revert this

* test

---------

Co-authored-by: John-David Dalton <john.david.dalton@gmail.com>
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2024-03-16 05:47:33 -07:00
Meghan Denny
b23eb60277 test: updated prisma schema (#9450)
* test: updated prisma schema

* test: fix prisma non-determinism

* fix postgres too
2024-03-15 22:55:42 -07:00
dave caruso
b1719f3a70 make import.meta behave better when query string is provided (#9399)
* make import.meta actually use a vali url

* a
2024-03-15 22:44:23 -07:00
Zack Radisic
bd3812df50 Shell fixes (#9402)
* wip

* Fix a bunch of stuff

* Fix cat

* Fix shell rm windows

* Fix glob scan test on windows

* Fix rm on windows

* stuff

* make it compile on windows

* [autofix.ci] apply automated fixes

* fix compile

* Wow

* Minor changes

* Ensure handle is closed

* Regular files are not pollable on linux

* dupe the blob son

* fix mem leak stuf

* dont use O_NONBLOCK

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2024-03-15 21:41:11 -07:00
Jarred Sumner
307cac5ecd await FileHandle functions (#9451)
* Await FileHandle functions

* Update fs.promises.ts

* use await using = await

* Make this more robust + fix tests

---------

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2024-03-15 21:05:43 -07:00
Brian Donovan
8c5ac06113 fix: return object from FileHandle#read and FileHandle#readv (#9444)
See the NodeJS docs for `read`: https://nodejs.org/api/fs.html#filehandlereadoptions
2024-03-15 14:56:02 -07:00
Jarred Sumner
924647f8b9 Fixes #9404 (#9408)
* Fixes #9404

* Fixup

* Test it on macOS and windows too why not

* fixup

* Fix test

* ignore

* seems to work?

* Update Dockerfile
2024-03-14 18:47:22 -07:00
Jarred Sumner
9573c6e2b7 Upgrade HTTPParser.h from uWS v20.6.0 to v20.62.0 (#9355)
* Upgrade HTTPParser.h from uWS v20.6.0 to v20.62.0

* Make MAX_FALLBACK_SIZE larger to allow for large redirect urls

---------

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2024-03-13 21:22:15 -07:00
Jarred Sumner
c5cc2a45a6 Speed up this test 2024-03-13 12:34:38 -07:00
Jarred Sumner
2d0cf1a78b [windows] Fix fetch.unix.test.ts (#9369)
* Fix fetch.unix.test

* Skip mmap
2024-03-11 18:01:57 -07:00
Jarred Sumner
574dec0919 Fix a couple windows test failures (#9361)
* Fix a couple test failures

* Another test

* Return a promise on flush
2024-03-11 16:27:08 -07:00
Jarred Sumner
c9fe57fa63 wip use wrapper for managing process (#8456)
* WIP sync close (shows ref count bug in stream)

* fix closing on PipeWriter and PipeReader

* remove old todos

* join

* Some shell changes

at least it compiles

* fix some compile errors

* fix ref/unref server on windows

* actually use the ref count in this places

* make windows compile again

* more tests passing

* Make shell compile again

* Slowly remove some `@panic("TODO SHELL")`

* Eliminate `@panic("TODO SHELL")` for BufferedWriter

* Holy cleansing of `@panic("TODO SHELL")`

at least it compiles now

* Okay now the shell compiles, but segfaults

* Fix compiler errors

* more stable stream and now Content-Range pass

* make windows compile again

* revert stuff until the fix is actually ready

* revert onDone thing

* Fix buffered writer for shell

* Fix buffered writer + shell/subproc.zig and windows build

* Fix for #8982 got lost in the merge

* Actually buffer subproc output

* Fix some stuff shell

* oops

* fix context deinit

* fix renderMissing

* shell: Fix array buffer

* more stable streams (#9053)

fix stream ref counting

* wip

* Remove `@panic("TODO")` on shell event loop tasks and Redirect  open flags got lost in merge

* Support redirects

* fixes

cc @cirospaciari

* Update ReadableStreamInternals.ts

* Fix spurious error

* Update stream.js

* leak

* Fix UAF

cc @cirospaciari

* Fix memory leaks

* HOLY FUCK big refactor

* misc cleanup

* shell: Fix a bunch of tests

* clean up

* gitignore: fix ending newline

* get windows compiling again

* tidy

* hide linker warn with icu

* closeIfPossible

* Better leak test

* Fix forgetting to decrement reference count

* Update stdio.zig

* Fix shell windows build

* Stupid unreachable

* Woops

* basic echo hi works on windows

* Fix flaky test on Windows

* Fix windows regression in Bun.main (#9156)

* Fix windows regression in Bun.main

* Handle invalid handles

* Fix flaky test

* Better launch config

* Fixup

* Make this test less flaky on Windows

* Fixup

* Cygwin

* Support signal codes in subprocess.kill(), resolve file path

* Treat null as ignore

* Ignore carriage returns

* Fixup

* shell: Fix IOWriter bug

* shell: Use custom `open()`/`openat()`

* windows shell subproc works

* zack commit

* I think I understand WindowsStreamingWriter

* fix thing

* why were we doing this in tests

* shell: Fix rm

* shell: Add rm -rf node_modules/ test

* shell: use `.runAsTest()` in some places to make it easier to determine which test failed

* [autofix.ci] apply automated fixes

* woopsie

* Various changes

* Fix

* shell: abstract output task logic

* shell: mkdir builtin

* fixup

* stuff

* shell: Make writing length of 0 in IOWriter immediately resolve

* shell: Implement `touch`

* shell: basic `cat` working

* Make it compile on windows

* shell: Fix IOReader bug

* [autofix.ci] apply automated fixes

* fix windows kill on subprocess/process

* fix dns tests to match behavior on windows (same as nodejs)

* fix windows ci

* again

* move `close_handle` to flags in `PipeWriter` and fix shell hanging

* Fix `ls` not giving non-zero exit code on error

* Handle edgecase in is_atty

* Fix writer.flush() when there's no data

* Fix some tests

* Disable uv_unref on uv_process_t on Windows, for now.

* fix writer.end

* fix stdout.write

* fix child-process on win32

* Make this test less flaky on Windows

* Add assertion

* Make these the same

* Make it pass on windows

* Don't commit

* Log the test name

* Make this test less flaky on windows

* Make this test less flaky on windows

* Print which test is taking awhile in the runner

* fixups

* Fixups

* Add some assertions

* Bring back test concurrency

* shell: bring back redirect stdin

* make it compile again cc @zackradisic

* initialize env map with capacity

* some fixes

* cleanup

* oops

* fix leak, fix done

* fix unconsumedPromises on events

* always run expect

* Update child_process.test.ts

* fix reading special files

* Fix a test

* Deflake this test

* Make these comparisons easier

* Won't really fix it but slightly cleaner

* Update serve.test.ts

* Make the checks for if the body is already used more resilient

* Move this to the harness

* Make this test not hang in development

* Fix this test

* Make the logs better

* zero init some things

* Make this test better

* Fix readSocket

* Parallelize this test

* Handle EPipe and avoid big data

* This was a mistake

* Fix a bunch of things

* Fix memory leak

* Avoid sigpipe + optimize + delete dead code

* Make this take less time

* Make it bigger

* Remove some redundant code

* Update process.zig

* Merge and hopefully don't breka things along teh way

* Silence build warning

* Uncomment on posix

* Skip test on windows

* windows

* Cleanup test

* Update

* Deflake

* always

* less flaky test

* [autofix.ci] apply automated fixes

* logs

* fix uaf on shell IOReader

* stuff to make it work with mini event loop

* fix 2 double free scenarios, support redirections on windows

* shell: Make `1>&2` and `2>&1` work with libuv

* yoops

* Partial fix

* Partial fix

* fix build

* fix build

* ok

* Make a couple shell tests pass

* More logging

* fix

* fix

* Fix build issue

* more tests pass

* Deflake

* Deflake

* Use Output.panic instead of garbled text

* Formatting

* Introduce `bun.sys.File`, use it for `Output.Source.StreamType`, fix nested Output.scoped() calls, use Win32 `ReadFile` API for reading when it's not a libuv file descriptor.

This lets us avoid the subtle usages of `unreachable` in std.os when writing to stdout/stderr.

Previously, we were initializing the libuv loop immediately at launch due to checking for the existence of a bun build --compile'd executable. When the file descriptor is not from libuv, it's just overhead to use libuv

cc @paperdave, please tell me if Iany of that is incorrect or if you think this is a bad idea.

* Fix closing undefined memory file descriptors in spawn

cc @zackradisic

* pause instead of close

* Fix poorly-written test

* We don't need big numbers for this test

* sad workaround

* fixup

* Clearer error handling for this test

* Fix incorrect test

@electroid when ReadableStream isn't closed, hanging is the correct behavior when consuming buffered data. We cannot know if the buffered data is finished if the stream never closes.

* Fix build

* Remove known failing on windows

* Deflake

* Mark no longer failing

* show all the failing tests

* Sort the list of tests

* fix argument handling

* dont show "posix_spawn" as an error code on windows

* make bun-upgrade.test.ts pass on windows

* fix bunx and bun create again sorry

* a

* fix invalidexe because we should not be running javascript files as if they were exes

* Concurrency in test runner + better logging

* Revert "fix invalidexe because we should not be running javascript files as if they were exes"

This reverts commit da47cf8247.

* WIP: Unix fixes (#9322)

* wip

* [autofix.ci] apply automated fixes

* wip 2

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>

* Update runner.node.mjs

* Update runner.node.mjs

* Document some environment variables

* shell: Make `Response` work with builtins

* Make it compile

* make pwd test pass

* [autofix.ci] apply automated fixes

* Fix printing garbage for source code previews

* Update javascript.zig

* Fix posix test failures

* Fix signal dispatch

cc @paperdave. Signals can be run from any thread. This causes an assertion failure when the receiving thread happens to not be the main thread. Easiest to reproduce on linux when you spawn 100 short-lived processes at once.

* windows

---------

Co-authored-by: cirospaciari <ciro.spaciari@gmail.com>
Co-authored-by: Zack Radisic <56137411+zackradisic@users.noreply.github.com>
Co-authored-by: Zack Radisic <zackradisic@Zacks-MBP-2.attlocal.net>
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Co-authored-by: Meghan Denny <meghan@bun.sh>
Co-authored-by: Zack Radisic <zack@theradisic.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: dave caruso <me@paperdave.net>
Co-authored-by: Dylan Conway <dylan.conway567@gmail.com>
2024-03-11 08:24:30 -07:00
Jarred Sumner
44959e6826 Make printing errors faster (#9328)
* Make printing errors faster

* Make Next.js tests less flaky

* Update dev-server.test.ts

* Copy over runner from process pr

* bump next version

* Update javascript.zig

* Set port to 0

* p-queue

* no dont use docker buildx

* Prevent runner from hanging

* Update dev-server.test.ts

* Really fix hanging this time

* Fix bounds check for unix domain socket, support abstract namespace sockets

* Various fixes

* [autofix.ci] apply automated fixes

* Update runner.node.mjs

* Update runner.node.mjs

* windows

* Only care about stdout

* increase concureency + clean up test

* Tweak puppeteer

* Update runner.node.mjs

---------

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-03-09 09:48:46 -08:00
Jarred Sumner
79e77f13ab Revert "Bun.serve: error: pass Request parameter when available (#9310)" (#9332)
This reverts commit b92d98556b.
2024-03-09 08:44:03 -08:00
Meghan Denny
b92d98556b Bun.serve: error: pass Request parameter when available (#9310)
* Bun.serve: error: pass Request parameter when available

* this will be null when not found not undefined

* add an assert here

* reorganize tests

* add another test

* add another test
2024-03-08 19:59:58 -08:00
Meghan Denny
702cae51f6 test: Bun.stringWidth is enabled by default (#9321) 2024-03-08 17:54:51 -08:00
dave caruso
a927340ce3 fix: bun.serve crash due to ExceptionRef (#9309)
* fix bun.serve crash due to ExceptionRef

* add test
2024-03-07 18:54:15 -08:00
dave caruso
e8374ebd82 feat: implement util.styleText (#9287)
* feat: implement util.styleText

* i forgot to test
2024-03-07 03:20:08 -08:00
Jarred Sumner
f6d5325daa Support socketPath in node:http request (#9284)
* Support `socketPath` in node:http request

* fix dashes

---------

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Co-authored-by: dave caruso <me@paperdave.net>
2024-03-06 15:28:35 -08:00
Jarred Sumner
a66926243d Support unix domain sockets in fetch() (#9097)
* Support unix domain sockets in fetch()

* rename to 'socket' to 'unix', add test

* enable keepalive on unix socket fetch

* make ownership of unix_socket_path clear, refactor http.zig a bit

* [autofix.ci] apply automated fixes

* add fetch unix redirect test, fix crash

* [autofix.ci] apply automated fixes

* fix fetch redirect from unix to non-unix

* disable keepalive for unix sockets (for now) so we don't leak them

* Update test/js/web/fetch/fetch.unix.test.ts

Co-authored-by: Ciro Spaciari <ciro.spaciari@gmail.com>

---------

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Co-authored-by: Georgijs Vilums <georgijs@bun.sh>
Co-authored-by: Georgijs <48869301+gvilums@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Ciro Spaciari <ciro.spaciari@gmail.com>
2024-03-06 14:12:03 -08:00
Meghan Denny
8fc08752e5 node:http: emit 'socket' event after calling http.request() (#9270)
* node:http: emit 'socket' event after calling http.request()

* add reference links for why this is how it is

* add guards to not waste time

* add a regression test

* use test harness port number
2024-03-05 23:01:32 -08:00
Meghan Denny
bb3295ba84 node:url implement domainToASCII and domainToUnicode (#9257)
* node:url implement domainToASCII and domainToUnicode

* fix arg checks

* remove unneeded use of WTF::Vector

* tidy

* throw a js error if icu fails

* add a ton more tests, fix ascii guard, upconvert latin1

* even more tests

* add a comment for this guard

* use ASSERT_NOT_REACHED() instead of raise(SIGABRT)
2024-03-05 19:46:38 -08:00
Ashcon Partovi
c837903e4e Fix new Request("/") not working with node-fetch (#9246)
* Fix `new Request("/")` not working with `node-fetch`

* Address review

* Address review 2

* Fix bad test
2024-03-05 16:51:52 -08:00
Jarred Sumner
edeeffc74c Fixes #9263 (#9266)
* Fixes #9283

* Update URLSearchParams.test.ts

---------

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2024-03-05 16:27:33 -08:00
Yash Singh
bd2176ffb0 fix: format specifier without characters in between (#9209)
* fix: format specifier without spaces in between, resolves #9208

* chore: test in console-log.test.ts
2024-03-04 17:46:19 -08:00
ErikOnBike
4f0a497660 Fix lost constructors in Node.js module classes (#9245) 2024-03-04 16:12:22 -08:00
Zack Radisic
05a7779880 shell: Improve ShellError stacktrace (#9233)
* Improve stacktrace

* woops
2024-03-03 21:46:42 -08:00
Jarred Sumner
30fdfdb295 Fixes #9222 (#9230)
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2024-03-03 19:26:27 -08:00
argosphil
4257457c6a Allow relative paths in cpAsync again (#9184)
* allow relative paths in cpAsync again

* test for #9024

---------

Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2024-03-03 16:30:34 -08:00
Cameron Haley
b5cea9a20c Avoid manually destroying stream when IncomingMessage stream is done reading (#9219)
* Avoid manually destroying stream when IncomingMessage stream is done reading

* Add test

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-03-03 16:29:13 -08:00
Jarred Sumner
49ccad9367 Finish jest.clearAllMocks() implementation (#9217)
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2024-03-03 03:48:13 -08:00
Jarred Sumner
71405ff4dc Fix regression from 648d5ae (#9215)
* Slightly reduce number of system calls on Linux

* Fix regression from 648d5aecf3

648d5aecf3 caused HTTP response bodies sent streamingly with a single chunk to include an extraneous 0\r\n\r\n chunk, leading valid clients to close the connection prematurely.

---------

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2024-03-03 00:02:44 -08:00
Jarred Sumner
0017dbec4e Fixes #9180 (#9212)
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2024-03-02 21:42:57 -08:00
Yash Singh
b2794ad7cf feat: implement expect.assertions and expect.hasAssertions (#9190)
* chore: merge oven-sh/bun

* chore: merge oven-sh/bun

* chore: merge oven-sh/bun

* fix: comptime for compiling

* fix: error reporting

* chore: revert runner.node.mjs

* fix: dont construct err b4

* chore: rm force throw test

* chore: rerun

* chore: reset unrelated changes

* fix: return undefined

* fix: dont return undefined on invalid args

---------

Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2024-03-01 20:17:44 -08:00
Igor Wessel
dcf6f244a4 feat: add support --conditions flag (#9106)
* feat(options): add possibility to append a custom esm condition

* feat(cli): parse --conditions flag

* test: add case for custom conditions

* fix(cli): not get short-hand --conditions flag

* test: add case using cjs with custom condition

* fix(options): address possible memory issues for esm conditions

* refactor(cli): remove -c alias for --conditions flag

* test: add cases for multiple --conditions specified

* test(bundler): add support to test --conditions

* chore(cli): fix grammar mistakes in --conditions

---------

Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2024-03-01 18:57:45 -08:00
Meghan Denny
4baad765ec windows: pass test/js/web/timers/setTimeout.test.js (#9176)
* windows: pass test/js/web/timers/setTimeout.test.js

* gotta go fast

* ci: windows: try reverting this line

reproducibly getting:
Error: Unable to download artifact(s): Artifact not found for name: bun-windows-x64-zig

* ci: switch back to namespace for zig build
2024-03-01 17:48:52 -08:00
Jarred Sumner
1e217ce78f Fix path bug (#9173) 2024-02-29 22:35:52 -08:00
Ashcon Partovi
536919e783 Use namespace.so for faster CI (#9160)
* Use namespace.so for faster CI

* arm64 runners arent working

* deflake

* more

* Update bun-mac-x64-baseline.yml

---------

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2024-02-29 16:14:12 -08:00
Meghan Denny
2fb6733eeb windows: pass test/js/node/process/process.test.js (#9161) 2024-02-28 20:25:05 -08:00
Cameron Haley
bfdad44460 Fix issue where process.stdin is ended too early (#9155)
* Fix issue wherein process.stdin is ended too early

* [autofix.ci] apply automated fixes

* test: Generate prisma client on 'big' schema

* Update test/js/third_party/prisma/helper.ts

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2024-02-28 19:03:08 -08:00
Jarred Sumner
27a0deab5f Make this test less flaky on Windows 2024-02-28 17:03:00 -08:00
Jarred Sumner
f34de31edb Fix windows regression in Bun.main (#9156)
* Fix windows regression in Bun.main

* Handle invalid handles

* Fix flaky test

* Better launch config

* Fixup
2024-02-28 16:49:37 -08:00
dave caruso
360bbb4dea fix(windows): fix directory cache regression "expected to end with a trailing slash" (#9144)
* okaaaaaaaay

* Revert "resolver: fix debug mode crash in test/bundler/bun-build-api.test.ts (#9140)"

This reverts commit 331d079dad.

* correctly fix the cache bust bug

this was introduced a couple of commits ago in my random fixes,
where i put the wrong fix to another directory caching bug.

i still stand by the assertion in place despite it causing many people
issues. it's precense will prevent subtle module resolutions failures.

* add an extra comment

* fix building a release build locally

* add a better test case for 3216

* staging

* fix mac issues

* ok

---------

Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2024-02-28 14:51:14 -08:00
Jarred Sumner
dc6af25b54 Fix ownKeys issue (#9154) 2024-02-28 14:22:25 -08:00
Dylan Conway
c9b5191fc2 fix(bun:test): fix toContainKeys with undefined and null (#9125)
* fix 9118

* update

* RELEASE_AND_RETURN

* cache and coerce

* test for toContainKey throwing in hasOwnProperty

* fix test

* [autofix.ci] apply automated fixes

* fix non-truthy and more test

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-02-27 15:10:26 -08:00
Jarred Sumner
fd6fd78f0f Fixes #9120 (#9128)
* Fixes #9120

* Update buffer.test.js

---------

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2024-02-26 19:15:28 -08:00
Jarred Sumner
57eb04f6f4 [internal] Switch back to prettier (#9109)
* Switch back to prettier

* wip

* Update .prettierignore

* Update .prettierignore

* ignores

* Update .prettierignore

* Rest

* [autofix.ci] apply automated fixes

---------

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-02-26 11:13:02 -08:00
Jarred Sumner
92dec0a871 Implement util.types.isKeyObject (#9091)
* Implement util.types.isKeyObject

* just use inherits

---------

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2024-02-25 14:30:05 -08:00
Jarred Sumner
72d57464b9 Make Bun.main the resolved filesystem path (#9105)
* Make `Bun.main` the resolved filesystem path, but only Bun.main

* Fix flaky test

---------

Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2024-02-25 13:05:34 -08:00
Cameron Haley
2333c94f8e Fix prisma generate by emitting readable event on EoF (#9101)
* Add test for ensuring the 'readable' event is emitted on end

* Run emitReadable on nextTick instead of as microtask

* perf: Store intermediate variables

Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>

---------

Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
2024-02-25 13:01:07 -08:00