Comments (4)
I prefer Option 3 or 4, for its context is explicit.
But a1ab931 also looks good to me. Since this issue can be handled internally.
Anyway, thank you for quick fix! 🙌🏻
from worktop.
Ahhh you're right, this is a bug 🙈
I'll put in a temporary fix for now, but this is going to have to be reworked.
What do you think about these options? It'd be for prepare
only:
// Option 1:
// Use `true` flag for `prepare` usage
// PRO: Not breaking. Same `compose` utility
// CON: Built-in secondary usage (kinda weird)
API.prepare = compose(
true, // isPrepare
CORS.preflight,
// ... others
);
// no change for route handlers
API.add('GET', '/demo', compose(foo, bar));
// Option 2:
// Change `compose` to (handlers: Handler[], isPrepare?: boolean) signature
// PRO: Clear, single method signature
// CON: Breaking & I find it kinda ugly, lol
API.prepare = compose([
CORS.preflight,
// ... others
], true); //< here
// route handler
API.add('GET', '/demo', compose([foo, bar]));
// Option 3:
// Add new `group` utility *only* for prepare usage
// PRO: Not breaking
// CON: Choosing between group vs compose may be confusing
API.prepare = group(
CORS.preflight,
// ... others
)
// no changes to route handlers
API.add('GET', '/demo', compose(foo, bar));
// Option 4:
// Make `prepare` accept Array of handler
// PRO: Not breaking, no `compose` confusion
// CON: Doesn't feel very nice (personal?)
API.prepare = [
CORS.preflight,
// ... others
]
// no changes to route handlers
API.add('GET', '/demo', compose(foo, bar));
from worktop.
I actually did this in a way that should be fine when subrouters (#29) land too.
It's not super-duper ideal, but it works 😅
from worktop.
Thanks for the feedback (and the report!)
It might not need to change at all going forward, luckily.
from worktop.
Related Issues (20)
- How to set multiple cookies? HOT 2
- Worktop Middlewares Example HOT 4
- Durable Objects example HOT 2
- The example of timing requests might be misleading HOT 1
- Using official Cloudflare types HOT 4
- Can I use Worktop with Fastly Compute@Edge? HOT 1
- Is it going to be official by cloudflare?
- Cache API and KV: Concerns/Questions/Usage HOT 1
- How to access `.env` with Wrangler 2 HOT 2
- Provide a "test" module HOT 4
- Serving HTML files HOT 6
- How to use with cron / scheduled event ? HOT 2
- Is `worktop@next` safe to use in production? HOT 2
- Add generic typing for Router.add handler
- The uploaded script has no registered event handlers. [API code: 10068] HOT 1
- Add sub-routers HOT 2
- Node 16+ ESM TypeScript error HOT 1
- `isCacheable` allowed cache by default if the `cache-control` header is empty may leading to a security flaw in ssg content HOT 2
- Router doesn't route when using service bindings HOT 7
- Cache `save(...)` does not correctly handle `no-cache` directive
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from worktop.