@visulima/connect 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## @visulima/connect [1.1.0](https://github.com/visulima/visulima/compare/@visulima/connect@1.0.1...@visulima/connect@1.1.0) (2022-11-07)
2
+
3
+
4
+ ### Features
5
+
6
+ * **connect:** renamed createRouter to createNodeRouter ([92f6d3f](https://github.com/visulima/visulima/commit/92f6d3f4d3430c281ae7106f7d09bb5b744df341))
7
+
1
8
  ## @visulima/connect [1.0.1](https://github.com/visulima/visulima/compare/@visulima/connect@1.0.0...@visulima/connect@1.0.1) (2022-10-27)
2
9
 
3
10
 
package/README.md CHANGED
@@ -66,12 +66,12 @@ Below are some use cases.
66
66
  ```typescript
67
67
  // pages/api/hello.js
68
68
  import type { NextApiRequest, NextApiResponse } from "next";
69
- import { createRouter, expressWrapper } from "@visulima/connect";
69
+ import { createNodeRouter, expressWrapper } from "@visulima/connect";
70
70
  import cors from "cors";
71
71
 
72
72
  // Default Req and Res are IncomingMessage and ServerResponse
73
73
  // You may want to pass in NextApiRequest and NextApiResponse
74
- const router = createRouter<NextApiRequest, NextApiResponse>({
74
+ const router = createNodeRouter<NextApiRequest, NextApiResponse>({
75
75
  onError: (err, req, res) => {
76
76
  console.error(err.stack);
77
77
  res.status(500).end("Something broke!");
@@ -100,7 +100,7 @@ router
100
100
  .put(
101
101
  async (req, res, next) => {
102
102
  // You may want to pass in NextApiRequest & { isLoggedIn: true }
103
- // in createRouter generics to define this extra property
103
+ // in createNodeRouter generics to define this extra property
104
104
  if (!req.isLoggedIn) throw new Error("thrown stuff will be caught");
105
105
  // go to the next in chain
106
106
  return next();
@@ -111,8 +111,6 @@ router
111
111
  }
112
112
  );
113
113
 
114
- // create a handler from router with custom
115
- // onError and onNoMatch
116
114
  export default router.handler();
117
115
  ```
118
116
 
@@ -120,7 +118,7 @@ export default router.handler();
120
118
 
121
119
  ```jsx
122
120
  // page/users/[id].js
123
- import { createRouter } from "@visulima/connect";
121
+ import { createNodeRouter } from "@visulima/connect";
124
122
 
125
123
  export default function Page({ user, updated }) {
126
124
  return (
@@ -132,7 +130,7 @@ export default function Page({ user, updated }) {
132
130
  );
133
131
  }
134
132
 
135
- const router = createRouter()
133
+ const router = createNodeRouter()
136
134
  .use(async (req, res, next) => {
137
135
  // this serve as the error handling middleware
138
136
  try {
@@ -267,9 +265,9 @@ export function middleware(request: NextRequest) {
267
265
 
268
266
  ## API
269
267
 
270
- The following APIs are rewritten in terms of `NodeRouter` (`createRouter`), but they apply to `EdgeRouter` (`createEdgeRouter`) as well.
268
+ The following APIs are rewritten in terms of `NodeRouter` (`createNodeRouter`), but they apply to `EdgeRouter` (`createEdgeRouter`) as well.
271
269
 
272
- ### router = createRouter()
270
+ ### router = createNodeRouter()
273
271
 
274
272
  Create an instance Node.js router.
275
273
 
@@ -285,31 +283,31 @@ Create an instance Node.js router.
285
283
  ```javascript
286
284
  // Mount a middleware function
287
285
  router1.use(async (req, res, next) => {
288
- req.hello = "world";
289
- await next(); // call to proceed to the next in chain
290
- console.log("request is done"); // call after all downstream handler has run
286
+ req.hello = "world";
287
+ await next(); // call to proceed to the next in chain
288
+ console.log("request is done"); // call after all downstream handler has run
291
289
  });
292
290
 
293
291
  // Or include a base
294
292
  router2.use("/foo", fn); // Only run in /foo/**
295
293
 
296
294
  // mount an instance of router
297
- const sub1 = createRouter().use(fn1, fn2);
298
- const sub2 = createRouter().use("/dashboard", auth);
299
- const sub3 = createRouter()
300
- .use("/waldo", subby)
301
- .get(getty)
302
- .post("/baz", posty)
303
- .put("/", putty);
295
+ const sub1 = createNodeRouter().use(fn1, fn2);
296
+ const sub2 = createNodeRouter().use("/dashboard", auth);
297
+ const sub3 = createNodeRouter()
298
+ .use("/waldo", subby)
299
+ .get(getty)
300
+ .post("/baz", posty)
301
+ .put("/", putty);
304
302
  router3
305
- // - fn1 and fn2 always run
306
- // - auth runs only on /dashboard
307
- .use(sub1, sub2)
308
- // `subby` runs on ANY /foo/waldo?/*
309
- // `getty` runs on GET /foo/*
310
- // `posty` runs on POST /foo/baz
311
- // `putty` runs on PUT /foo
312
- .use("/foo", sub3);
303
+ // - fn1 and fn2 always run
304
+ // - auth runs only on /dashboard
305
+ .use(sub1, sub2)
306
+ // `subby` runs on ANY /foo/waldo?/*
307
+ // `getty` runs on GET /foo/*
308
+ // `posty` runs on POST /foo/baz
309
+ // `putty` runs on PUT /foo
310
+ .use("/foo", sub3);
313
311
  ```
314
312
 
315
313
  ### router.METHOD(pattern, ...fns)
@@ -357,13 +355,13 @@ By default, it responds with a generic `500 Internal Server Error` while logging
357
355
 
358
356
  ```javascript
359
357
  function onError(err, req, res) {
360
- logger.log(err);
361
- // OR: console.error(err);
358
+ logger.log(err);
359
+ // OR: console.error(err);
362
360
 
363
- res.status(500).end("Internal server error");
361
+ res.status(500).end("Internal server error");
364
362
  }
365
363
 
366
- const router = createRouter({ onError });
364
+ const router = createNodeRouter({onError});
367
365
 
368
366
  export default router.handler();
369
367
  ```
@@ -375,10 +373,10 @@ By default, it responds with a `404` status and a `Route [Method] [Url] not foun
375
373
 
376
374
  ```javascript
377
375
  function onNoMatch(req, res) {
378
- res.status(404).end("page is not found... or is it!?");
376
+ res.status(404).end("page is not found... or is it!?");
379
377
  }
380
378
 
381
- const router = createRouter({ onNoMatch });
379
+ const router = createNodeRouter({onNoMatch});
382
380
 
383
381
  export default router.handler();
384
382
  ```
@@ -489,14 +487,16 @@ console.log("finally"); // this will run before the get layer gets to finish
489
487
 
490
488
  ```javascript
491
489
  // api-libs/base.js
492
- export default createRouter().use(a).use(b);
490
+ export default createNodeRouter().use(a).use(b);
493
491
 
494
492
  // api/foo.js
495
493
  import router from "api-libs/base";
494
+
496
495
  export default router.get(x).handler();
497
496
 
498
497
  // api/bar.js
499
498
  import router from "api-libs/base";
499
+
500
500
  export default router.get(y).handler();
501
501
  ```
502
502
 
@@ -505,14 +505,16 @@ If you want to achieve something like that, you can use `router.clone` to return
505
505
 
506
506
  ```javascript
507
507
  // api-libs/base.js
508
- export default createRouter().use(a).use(b);
508
+ export default createNodeRouter().use(a).use(b);
509
509
 
510
510
  // api/foo.js
511
511
  import router from "api-libs/base";
512
+
512
513
  export default router.clone().get(x).handler();
513
514
 
514
515
  // api/bar.js
515
516
  import router from "api-libs/base";
517
+
516
518
  export default router.clone().get(y).handler();
517
519
  ```
518
520
 
@@ -520,22 +522,22 @@ export default router.clone().get(y).handler();
520
522
 
521
523
  ```javascript
522
524
  // page/index.js
523
- const handler = createRouter()
524
- .use((req, res) => {
525
- // BAD: res.redirect is not a function (not defined in `getServerSideProps`)
526
- // See https://github.com/hoangvvo/@visulima/connect/issues/194#issuecomment-1172961741 for a solution
527
- res.redirect("foo");
528
- })
529
- .use((req, res) => {
530
- // BAD: `getServerSideProps` gives undefined behavior if we try to send a response
531
- res.end("bar");
532
- });
525
+ const handler = createNodeRouter()
526
+ .use((req, res) => {
527
+ // BAD: res.redirect is not a function (not defined in `getServerSideProps`)
528
+ // See https://github.com/hoangvvo/@visulima/connect/issues/194#issuecomment-1172961741 for a solution
529
+ res.redirect("foo");
530
+ })
531
+ .use((req, res) => {
532
+ // BAD: `getServerSideProps` gives undefined behavior if we try to send a response
533
+ res.end("bar");
534
+ });
533
535
 
534
- export async function getServerSideProps({ req, res }) {
535
- await router.run(req, res);
536
- return {
537
- props: {},
538
- };
536
+ export async function getServerSideProps({req, res}) {
537
+ await router.run(req, res);
538
+ return {
539
+ props: {},
540
+ };
539
541
  }
540
542
  ```
541
543
 
@@ -543,14 +545,14 @@ export async function getServerSideProps({ req, res }) {
543
545
 
544
546
  ```javascript
545
547
  // page/index.js
546
- const router = createRouter().use(foo).use(bar);
548
+ const router = createNodeRouter().use(foo).use(bar);
547
549
  const handler = router.handler();
548
550
 
549
- export async function getServerSideProps({ req, res }) {
550
- await handler(req, res); // BAD: You should call router.run(req, res);
551
- return {
552
- props: {},
553
- };
551
+ export async function getServerSideProps({req, res}) {
552
+ await handler(req, res); // BAD: You should call router.run(req, res);
553
+ return {
554
+ props: {},
555
+ };
554
556
  }
555
557
  ```
556
558
 
@@ -567,9 +569,9 @@ If you need to create all handlers for all routes in one file (similar to `Expre
567
569
 
568
570
  ```javascript
569
571
  // pages/api/[[...slug]].js
570
- import { createRouter } from "@visulima/connect";
572
+ import { createNodeRouter } from "@visulima/connect";
571
573
 
572
- const router = createRouter()
574
+ const router = createNodeRouter()
573
575
  .use("/api/hello", someMiddleware())
574
576
  .get("/api/user/:userId", (req, res) => {
575
577
  res.send(`Hello ${req.params.userId}`);
package/dist/index.d.ts CHANGED
@@ -138,4 +138,4 @@ declare const withZod: <Request_1 extends object, Response_1 extends unknown, Ha
138
138
 
139
139
  declare const sendJson: (response: ServerResponse, statusCode: number, jsonBody: any) => void;
140
140
 
141
- export { RequestHandler$1 as EdgeRequestHandler, EdgeRouter, ExpressRequestHandler, FindResult, FunctionLike, HandlerOptions, HttpMethod, NextHandler, Nextable, NodeRouter, RequestHandler, Route, RouteShortcutMethod, Router, ValueOrPromise, createEdgeRouter, createRouter, expressWrapper, sendJson, withZod };
141
+ export { RequestHandler$1 as EdgeRequestHandler, EdgeRouter, ExpressRequestHandler, FindResult, FunctionLike, HandlerOptions, HttpMethod, NextHandler, Nextable, RequestHandler as NodeRequestHandler, NodeRouter, Route, RouteShortcutMethod, Router, ValueOrPromise, createEdgeRouter, createRouter as createNodeRouter, createRouter, expressWrapper, sendJson, withZod };
package/dist/index.js CHANGED
@@ -331,5 +331,6 @@ var send_json_default = sendJson;
331
331
 
332
332
 
333
333
 
334
- exports.EdgeRouter = EdgeRouter; exports.NodeRouter = NodeRouter; exports.Router = Router; exports.createEdgeRouter = createEdgeRouter; exports.createRouter = createRouter; exports.expressWrapper = express_default; exports.sendJson = send_json_default; exports.withZod = with_zod_default;
334
+
335
+ exports.EdgeRouter = EdgeRouter; exports.NodeRouter = NodeRouter; exports.Router = Router; exports.createEdgeRouter = createEdgeRouter; exports.createNodeRouter = createRouter; exports.createRouter = createRouter; exports.expressWrapper = express_default; exports.sendJson = send_json_default; exports.withZod = with_zod_default;
335
336
  //# sourceMappingURL=index.js.map
package/dist/index.mjs CHANGED
@@ -327,6 +327,7 @@ export {
327
327
  NodeRouter,
328
328
  Router,
329
329
  createEdgeRouter,
330
+ createRouter as createNodeRouter,
330
331
  createRouter,
331
332
  express_default as expressWrapper,
332
333
  send_json_default as sendJson,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visulima/connect",
3
- "version": "1.0.1",
3
+ "version": "1.1.0",
4
4
  "description": "The minimal router and middleware layer for Next.js, Micro, Vercel, or Node.js http/http2 with support for zod validation.",
5
5
  "keywords": [
6
6
  "javascript",
package/src/index.ts CHANGED
@@ -1,10 +1,14 @@
1
1
  export type { RequestHandler as EdgeRequestHandler } from "./edge";
2
2
  export { createEdgeRouter, EdgeRouter } from "./edge";
3
+
3
4
  export type { ExpressRequestHandler } from "./adapter/express";
4
5
  export { default as expressWrapper } from "./adapter/express";
5
6
 
6
- export type { RequestHandler } from "./node";
7
- export { createRouter, NodeRouter } from "./node";
7
+ export type { RequestHandler as NodeRequestHandler } from "./node";
8
+ export { createRouter as createNodeRouter, NodeRouter } from "./node";
9
+
10
+ // @deprecated Use `createNodeRouter` instead
11
+ export { createRouter } from "./node";
8
12
 
9
13
  export type { Route } from "./router";
10
14
  export { Router } from "./router";