Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor response create function outside of promise handler #132

Open
wants to merge 6 commits into
base: main
Choose a base branch
from

Conversation

kalisjoshua
Copy link

not sure that this is favorable or not but thought that it might be and it allows
for easier testing of the creation of responses and their properties.

@developit
Copy link
Owner

This will depend on the size impact - I've updated the repo to include a size check, we'll see what it nets.

@developit
Copy link
Owner

Ah - it looks like this adds a named export to the actual unfetch package, which means it won't work - folks using CommonJS will have to do import('unfetch').default which is a breaking change.

Instead, if we could retrofit your work here into proper support for the Response interface, that would definitely be a justifiable export! It would be a nice step towards supporting Headers, Request and Response, something that's been on my todo list for ages.

@kalisjoshua
Copy link
Author

Filename Size Change
dist/unfetch.es.js 553 B +47 B (8%) 🔍
dist/unfetch.js 548 B +43 B (7%) 🔍
dist/unfetch.umd.js 627 B +49 B (7%) 🔍

@developit
Copy link
Owner

@kalisjoshua that'll be the added export. One quick solution to check this would be to move the response function into a separate file (src/lib/response.mjs) that is imported by src/index.mjs and tests, that way it's not exported as unfetch.response.

not sure that this is favorable or not but thought that it might be and it allows
for easier testing of the creation of responses and their properties.
@kalisjoshua
Copy link
Author

This is done now.

@kalisjoshua that'll be the added export. One quick solution to check this would be to move the response function into a separate file (src/lib/response.mjs) that is imported by src/index.mjs and tests, that way it's not exported as unfetch.response.

I will look into the Response interface compatibility.

@kalisjoshua
Copy link
Author

Filename Size Change
dist/unfetch.es.js 544 B +38 B (6%) 🔍
dist/unfetch.js 543 B +38 B (6%) 🔍
dist/unfetch.umd.js 617 B +39 B (6%) 🔍

@developit
Copy link
Owner

Interesting that the numbers are still so increased. My guess is that's because we're ending up with a closure around the two top-level functions, whereas currently there is no closure required since all functionality exists within the single unfetch(){} function (as a sort of wrapper + implementation). Perhaps that's just something that we'll be giving up.

@kalisjoshua
Copy link
Author

It's interesting to look at the compiled output diff of dist/unfetch.js between the master branch and my branch. On the master branch the for loop is expanded a little but on my branch the loop is most of the body of the function. I'm still examining it to see if there is anything that can be done to bring the output sizes closer because there isn't an extra closure.

@kalisjoshua
Copy link
Author

I think the biggest contributor to the bloat that I created is because of the lifting of the response function out of the scope necessitating that arguments be passed in and that also results in a more complicated clone attribute on the response object. I am able to slim the output size a slight bit; encapsulated in the most recent commit.

@kalisjoshua
Copy link
Author

Filename Size Change
dist/unfetch.es.js 534 B +23 B (4%)
dist/unfetch.js 534 B +24 B (4%)
dist/unfetch.umd.js 605 B +23 B (3%)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants