patractlabs / redspot

Redspot is an Substrate pallet-contracts (ink!) development environment. Compile your contracts and run them on a different networks. Redspot's core forks from Hardhat but changed a lot to suit substrate.
https://redspot.patract.io/
Other
67 stars 22 forks source link

TS2322: Type 'WsProvider' is not assignable to type 'ProviderInterface'. #158

Closed forgetso closed 2 years ago

forgetso commented 2 years ago

Redspot Version - master The build is failing:

git checkout fc6a0992e33ca7503a071876db029da27e0b6e7d

$ polkadot-dev-clean-build 
Build typescript
packages/redspot-core/src/provider/construction.ts(26,5): error TS2322: Type 'WsProvider' is not assignable to type 'ProviderInterface'.
packages/redspot-core/src/provider/construction.ts(73,5): error TS2322: Type 'import("/home/chris/dev/redspot/packages/redspot-core/src/provider/ws-provider").WsProvider' is not assignable to type 'import("/home/chris/dev/redspot/packages/redspot-core/src/types/provider").WsProvider'.
  Types of property 'clone' are incompatible.
    Type '() => WsProvider' is not assignable to type '() => ProviderInterface'.
packages/redspot-core/src/provider/ws-provider.ts(149,10): error TS2416: Property 'clone' in type 'WsProvider' is not assignable to the same property in base type 'WsProvider'.
  Type '() => WsProvider' is not assignable to type '() => ProviderInterface'.
    Call signature return types 'WsProvider' and 'ProviderInterface' are incompatible.
      The types of 'send' are incompatible between these types.
        Type '(method: string, params: any[], subscription?: SubscriptionHandler) => Promise<any>' is not assignable to type '<T = any>(method: string, params: unknown[], isCacheable?: boolean) => Promise<T>'.
          Types of parameters 'subscription' and 'isCacheable' are incompatible.
            Type 'boolean' is not assignable to type 'SubscriptionHandler'.
packages/redspot-core/src/provider/ws-provider.ts(289,10): error TS2416: Property 'send' in type 'WsProvider' is not assignable to the same property in base type 'WsProvider'.
  Type '(method: string, params: any[], subscription?: SubscriptionHandler) => Promise<any>' is not assignable to type '<T = any>(method: string, params: unknown[], isCacheable?: boolean) => Promise<T>'.
TypeScript: 4 semantic errors
TypeScript: emit failed
events.js:352
      throw er; // Unhandled 'error' event
      ^

Error: TypeScript: Compilation failed
    at Output.mightFinish (/home/chris/dev/redspot/node_modules/gulp-typescript/release/output.js:131:43)
    at Output.finish (/home/chris/dev/redspot/node_modules/gulp-typescript/release/output.js:123:14)
    at ProjectCompiler.inputDone (/home/chris/dev/redspot/node_modules/gulp-typescript/release/compiler.js:97:29)
    at CompileStream.end (/home/chris/dev/redspot/node_modules/gulp-typescript/release/project.js:125:31)
    at DestroyableTransform.onend (/home/chris/dev/redspot/node_modules/readable-stream/lib/_stream_readable.js:577:10)
    at Object.onceWrapper (events.js:481:28)
    at DestroyableTransform.emit (events.js:387:35)
    at DestroyableTransform.emit (domain.js:470:12)
    at endReadableNT (/home/chris/dev/redspot/node_modules/readable-stream/lib/_stream_readable.js:1010:12)
    at processTicksAndRejections (internal/process/task_queues.js:82:21)
Emitted 'error' event on CompileStream instance at:
    at CompileStream.onerror (/home/chris/dev/redspot/node_modules/readable-stream/lib/_stream_readable.js:640:52)
    at CompileStream.emit (events.js:375:28)
    at CompileStream.emit (domain.js:470:12)
    at Output.mightFinish (/home/chris/dev/redspot/node_modules/gulp-typescript/release/output.js:131:29)
    at Output.finish (/home/chris/dev/redspot/node_modules/gulp-typescript/release/output.js:123:14)
    [... lines matching original stack trace ...]
    at DestroyableTransform.emit (events.js:387:35)

I have managed to fix (https://github.com/prosopo-io/redspot/commit/5710fa18f0a7ac34e55c924c33ab3035fd267182) this in my fork.

ii-ii-ii commented 2 years ago
$ yarn polkadot-dev-clean-build
Debugger listening on ws://127.0.0.1:54020/e0a9c065-b361-438f-bf7a-0cae5b78e1eb
For help, see: https://nodejs.org/en/docs/inspector
Debugger attached.
$ polkadot-dev-clean-build 
Waiting for the debugger to disconnect...
Build typescript
Copy template
Copy explorer
Copy files
Build complete

I can't reproduce the problem. I guess it's because you deleted yarn.lock?

This is most likely due to a type incompatibility caused by the polkadot js upgrade.

Feel free to submit a pull request to fix it.

forgetso commented 2 years ago

Yes, you're right I'm using polkadotjs upgrade.

    "@polkadot/api": "^6.8.1",
    "@polkadot/api-contract": "^6.8.1",
    "@polkadot/types": "^6.8.1",
    "@polkadot/util": "^7.8.2",
    "@polkadot/keyring": "^7.8.2",
    "@polkadot/util-crypto": "^7.8.2",

Will submit a pull request