joebobmiles / zustand-middleware-yjs

Zustand middleware that enables sharing of state between clients via Yjs.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[BUG] types found but incorrect when using moduleResolution: "Bundler"

fredericrous opened this issue · comments

Describe the bug

typings for zustand-middleware-yjs cannot be imported, see the error message


⚠ Error (TS7016)  | 

Could not find a declaration file for module 
"zustand-middleware-yjs"
 . /project/node_modules/.pnpm/zustand-middleware-yjs@1.3.1_@types+react@18.2.64_react@18.2.0/node_modules/zustand-middleware-yjs/dist/yjs.mjs implicitly has an 
any
 type.

  | There are types at /project/node_modules/zustand-middleware-yjs/dist/index.d.ts', but this result could not be resolved when respecting package.json "exports". The zustand-middleware-yjs' library may need to update its package.json or typings. -- | --


To Reproduce
Steps to reproduce the behavior:

  • configure your tsconfig with compilerOptions.moduleResolution: "Bundler"
  • import zustand-middleware-yjs

Expected behavior
typings are expected to be imported correctly like when I set moduleResolution to node

Versions (please complete the following information):
yjs v1.3.1

solution seems to be to change how the exports are referenced in package.json, see microsoft/TypeScript#52363 (comment)

running into the same issue

Workaround is to create "zustand-middleware-yjs.d.ts" and have it in the "include" section of you ts config.

declare module 'zustand-middleware-yjs' {
  import { StateCreator, StoreMutatorIdentifier } from 'zustand';
  import * as Y from 'yjs';

  type Yjs = <
    T extends unknown,
    Mps extends [StoreMutatorIdentifier, unknown][] = [],
    Mcs extends [StoreMutatorIdentifier, unknown][] = [],
  >(
    doc: Y.Doc,
    name: string,
    f: StateCreator<T, Mps, Mcs>,
  ) => StateCreator<T, Mps, Mcs>;

  const _default: Yjs;
  export default _default;
}