denoland / deno_kv_oauth

High-level OAuth 2.0 powered by Deno KV.
https://jsr.io/@deno/kv-oauth
MIT License
263 stars 28 forks source link

feat: `KvOAuth` class #312

Closed iuioiua closed 8 months ago

iuioiua commented 8 months ago

Previously, there were two ways to use this module, each with its issues:

  1. Using helpers. I.e. signIn(), handleCallback(), getSessionId() and signOut(). The various helpers made it possible to misuse the module. E.g. using cookie options in one helper but forgetting to use them in another would lead to unexpected behaviour and might be difficult to troubleshoot.
  2. Using createHelpers() to create the helpers with consistent behaviour, such as cookie settings. It aimed to be a pure function and used the helpers under the hood. The logic of the function is difficult to read immediately, and so is the documentation, specifically the type signature.

This PR introduces the KvOAuth class. It combines the helpers into a single class, letting the module ensure consistent behaviour across the board. It is also easier to understand from a holistic point of view and is easy to document.

This will be the only way to use this module going forward. The individual helpers and createHelpers() are deprecated in this version for removal in v0.12.0.

iuioiua commented 8 months ago

Superseded by #313.