immer-yjs icon indicating copy to clipboard operation
immer-yjs copied to clipboard

test!: tests for util module

Open johannes-lindgren opened this issue 6 months ago • 0 comments

I am creating unit tests for the util module. In the process, I discovered a couple of descrepencies between the source code in util.ts and TypeScript. Fixing these are technically breaking changes:

  • isJSONObject should return false for null. This was easy to miss because 1) JavaScript returns object for typeof null, and 2) TypeScript does not check that the return value is consistent with the the type predicate. The new unit tests detects this.
  • There's no need for an else branch in toYDataType. If there are no type errors, it will never return undefined, so we can remove undefined from the return type. While this function is not exposed by the library (index.ts), it might be a breaking change.
  • Remove any from the argument type of toPlainValue.
  • Changing the return type of notImplemented to never; since it always throws an exception, it never returns.

I plan to release these under the next major version, where we also bump the peer dependency on immer to v10 (#13).

johannes-lindgren avatar Aug 23 '24 16:08 johannes-lindgren