5.0.6 • Published 7 months ago

@stricjs/router v5.0.6

Weekly downloads
-
License
-
Repository
github
Last release
7 months ago

A router middleware for StricJS.

import { Router } from "@stricjs/router";

new Router()
    // Add a handler to route "/home"
    .static("GET", "/home", () => 
        new Response("Hello!"))
    // Return a 404 for all other routes
    .dynamic("", "/(.*)", () => 
        new Response("Not Found"))
    // Serve directly
    .serve();

Benchmark

You can see the latest benchmark result here.

I recommend benchmarking this on your machine.

Algorithm

The routing algorithm.

Storing handlers

Router handlers are saved into a static map for static routes and an array for dynamic routes.

class Router {
    private statics: Record<string, HandlerFunction>;
    private regexs: [RegExp, HandlerFunction][];
}

Adding handlers

The static(method, path, handler) set the key method + path in Router.statics object to the handler.

The dynamic(method, path, handler) push an array with the RegExp path from method + path as the first element and the handler as the second element to Router.regexs.

Finding routes

Slice the pathname from the full URL using /(?:\w+:)?\/\/[^\/]+([^?]+)/.

Search for method-specific static handler and all-method static handler of the path.

If found returns an array with the handler as the only element.

If there are no static handler of the path loop through the RegExp list and test the path with each RegExp.

If match then returns an array with the handler as the first element and the RegExpExecArray as the second element.

If nothing matches returns an empty array.

4.1.8

8 months ago

4.1.7

8 months ago

4.1.9

8 months ago

4.0.0-alpha.3

9 months ago

4.0.0-alpha.1

9 months ago

4.0.0-alpha.2

9 months ago

3.2.2

10 months ago

3.2.1

10 months ago

3.2.0-alpha

10 months ago

3.2.0

10 months ago

3.2.6

10 months ago

3.2.5

10 months ago

3.2.4

10 months ago

3.2.3

10 months ago

4.0.5

9 months ago

4.0.4

9 months ago

4.0.7

9 months ago

4.0.6

9 months ago

4.0.1

9 months ago

4.0.0

9 months ago

4.0.3

9 months ago

4.0.2

9 months ago

5.0.6

7 months ago

5.0.5

7 months ago

5.0.4

7 months ago

5.0.3

7 months ago

5.0.2

7 months ago

5.0.1

7 months ago

5.0.0

7 months ago

4.0.9

9 months ago

4.0.8

9 months ago

3.2.7

10 months ago

3.1.9

11 months ago

3.1.8

11 months ago

4.0.10

9 months ago

4.0.12

9 months ago

4.0.11

9 months ago

4.0.13

9 months ago

3.2.0-beta.6

10 months ago

3.2.7-alpha.2

10 months ago

3.2.0-beta.4

10 months ago

3.2.7-alpha.1

10 months ago

3.2.0-beta.5

10 months ago

3.2.0-beta.2

10 months ago

3.2.7-alpha.3

10 months ago

3.2.0-beta.3

10 months ago

3.2.0-beta.1

10 months ago

3.1.11-test.1

11 months ago

3.1.11-test.2

11 months ago

4.3.0-beta

7 months ago

5.0.0-alpha.7

7 months ago

5.0.0-alpha.6

7 months ago

5.0.0-alpha.4

7 months ago

5.0.0-alpha.9

7 months ago

5.0.0-alpha.8

7 months ago

5.0.0-alpha.3

7 months ago

5.0.0-alpha.2

7 months ago

5.0.0-alpha.1

7 months ago

4.3.0-beta.3

7 months ago

4.3.0-beta.2

7 months ago

4.3.0-beta.1

7 months ago

4.3.0-beta.4

7 months ago

3.1.11

11 months ago

3.1.10

11 months ago

4.2.3

8 months ago

4.2.2

8 months ago

4.2.5

8 months ago

4.2.4

8 months ago

4.2.1

8 months ago

4.2.0

8 months ago

3.2.0-alpha.4

10 months ago

3.2.0-alpha.6

10 months ago

4.2.7

7 months ago

6.0.0-alpha

7 months ago

4.2.6

8 months ago

4.2.9

7 months ago

4.2.8

7 months ago

3.2.0-alpha.1

10 months ago

3.2.0-alpha.2

10 months ago

3.2.0-alpha.3

10 months ago

3.3.1

10 months ago

3.3.0

10 months ago

3.3.4

10 months ago

3.3.3

10 months ago

3.3.2

10 months ago

4.1.4

8 months ago

4.1.3

9 months ago

4.1.6

8 months ago

4.1.5

8 months ago

4.1.0

9 months ago

4.1.2

9 months ago

4.1.1

9 months ago

3.1.7

11 months ago

3.1.6

11 months ago

3.0.10

11 months ago

3.0.11

11 months ago

3.0.11-test.3

11 months ago

3.0.11-test.2

11 months ago

3.0.11-test.1

11 months ago

3.0.11-test.6

11 months ago

3.0.11-test.5

11 months ago

3.0.11-test.4

11 months ago

3.1.3

11 months ago

3.1.2

11 months ago

3.1.1

11 months ago

3.1.0

11 months ago

3.1.5

11 months ago

3.1.4

11 months ago

3.0.4

11 months ago

3.0.3

11 months ago

3.0.2

11 months ago

3.0.1

11 months ago

3.0.8

11 months ago

3.0.7

11 months ago

3.0.6

11 months ago

3.0.5

11 months ago

3.0.0

11 months ago

2.1.7

11 months ago

3.0.9

11 months ago

2.0.6-alpha.20

12 months ago

2.0.6-alpha.3

12 months ago

2.0.3

1 year ago

2.0.6-alpha.4

12 months ago

2.0.2

1 year ago

2.0.6-alpha.1

12 months ago

2.0.5

12 months ago

2.0.6-alpha.2

12 months ago

2.0.4

1 year ago

2.0.7

12 months ago

2.0.6-alpha.7

12 months ago

2.0.6

12 months ago

2.0.6-beta.10

12 months ago

2.0.6-alpha.8

12 months ago

2.0.9

12 months ago

2.0.6-alpha.18

12 months ago

2.0.6-alpha.5

12 months ago

2.0.0-alpha.1

1 year ago

2.0.8

12 months ago

2.0.6-alpha.19

12 months ago

2.0.6-alpha.6

12 months ago

2.0.0-alpha.2

1 year ago

2.0.6-alpha.16

12 months ago

2.0.6-alpha.17

12 months ago

2.0.6-alpha.14

12 months ago

2.0.6-alpha.9

12 months ago

2.0.6-alpha.15

12 months ago

2.0.6-alpha.12

12 months ago

2.0.6-alpha.13

12 months ago

2.0.6-alpha.10

12 months ago

2.0.1

1 year ago

2.0.6-alpha.11

12 months ago

2.0.0

1 year ago

2.1.6-alpha

12 months ago

2.1.0-pre

12 months ago

2.1.1-alpha.1

12 months ago

2.0.6-beta.9

12 months ago

2.0.6-beta.5

12 months ago

2.1.6-alpha.8

12 months ago

2.0.6-beta.6

12 months ago

2.0.6-beta.7

12 months ago

2.0.6-beta.8

12 months ago

2.1.6-alpha.5

12 months ago

2.0.6-beta.1

12 months ago

2.1.6-alpha.4

12 months ago

2.0.6-beta.2

12 months ago

2.1.6-alpha.7

12 months ago

2.0.6-beta.3

12 months ago

2.1.6-alpha.6

12 months ago

2.0.6-beta.4

12 months ago

2.1.6-alpha.1

12 months ago

2.1.6-alpha.3

12 months ago

2.1.6-alpha.2

12 months ago

2.1.2

12 months ago

2.1.1

12 months ago

2.1.4

12 months ago

2.1.3

12 months ago

2.1.6

11 months ago

2.1.5

12 months ago

2.0.10

12 months ago

2.1.0

12 months ago

2.0.0-alpha

1 year ago

2.1.1-alpha

12 months ago

2.1.0-pre.3

12 months ago

2.1.0-pre.4

12 months ago

2.1.0-pre.2

12 months ago

2.0.6-alpha.29

12 months ago

2.0.6-alpha.27

12 months ago

2.0.6-alpha.28

12 months ago

1.0.10

1 year ago

2.0.6-alpha.25

12 months ago

2.0.6-alpha.26

12 months ago

2.0.6-alpha.23

12 months ago

2.0.6-alpha.24

12 months ago

2.0.6-alpha.21

12 months ago

2.0.6-alpha.22

12 months ago

1.0.9

1 year ago

1.0.10-alpha.7

1 year ago

1.0.8

1 year ago

1.0.10-alpha.5

1 year ago

1.0.10-alpha.6

1 year ago

1.0.10-alpha.3

1 year ago

1.0.10-alpha.4

1 year ago

1.0.10-alpha.1

1 year ago

1.0.10-alpha.2

1 year ago

1.0.10-alpha

1 year ago

1.0.7

1 year ago

1.0.2

1 year ago

1.0.6

1 year ago

1.0.5

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago