saus icon indicating copy to clipboard operation
saus copied to clipboard

`parseRoutePattern` plugin hook

Open aleclarson opened this issue 3 years ago • 0 comments

We currently use the regexparam library to parse route patterns, but it would be cool if plugins can override this and even provide support for values other than strings (eg: RegExp or options object).

https://github.com/alloc/saus/blob/052b3cc847c131bde25a2c463c59f858ad67c7c4/src/core/routes.ts#L96

The plugin hooks would work a lot like resolveId does.

const plugin: import("saus").Plugin = {
  // The hook receives a route pattern and the route's config object,
  // which should also be customizable through the plugin API.
  parseRoutePattern(route, config) {
	if (route instanceof RegExp) {
	  return {
		// Match against a page path.
		test: path => route.test(path),
		// Render a page path for this route.
		render: params => {
		  // TODO: inject our `params` into the `route.source` somehow
		},
	  }
	}

	// Return falsy to defer to the next plugin hook.
	return null
  }
}

aleclarson avatar Apr 09 '22 23:04 aleclarson