This package has been deprecated

Author message:

Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

dts-for-context-bridge

0.7.1 • Public • Published

dts-cb

This utility is designed to analyze context bridges in Electron application and create .d.ts files.

Problem

In one part of your application, you describe some API and expose it into the global context of the renderer.

contextBridge.exposeInMainWorld(
  'electron',
  {
    doThing: () => ipcRenderer.send('do-a-thing')
  }
)

However, for the TypeScript in the renderer knows nothing about the new global api.

// Property 'electron' does not exist on type 'Window & typeof globalThis'.
window.electron.doThing()

Therefore, you must somehow register these apps.

Decision

This utility scans the source code and finds all exposeInMainWorld calls. Then it generates a .d.ts file with an interface that can later be connected in the renderer.

contextBridge.exposeInMainWorld(
  'electron',
  {
    doThing: () => ipcRenderer.send('do-a-thing')
  }
)
// generated.d.ts
interface Window {
    readonly electron: {doThing: () => void}
}

See more examples.

Installation

# global
npm i -g dts-for-context-bridge

# for project 
npm i dts-for-context-bridge

Usage

# You can use glob pattern as input
dts-cb --input="preload/src/**/*.ts" --output="preload/exposed.d.ts"

# You can use tsconfig.json as input
dts-cb --input="preload/tsconfig.json" --output="preload/exposed.d.ts"

See all options by

dts-cb --help

Programmatic usage

import {generate} from 'dts-for-context-bridge'

generate({
    input: 'preload/src/**/*.ts', // Or path to tsconfig.json
    output: 'preload/exposed.d.ts',
})

Is it stable?

The utility relies on AST analysis and currently does not cover all cases. Feel free to create PR.

Readme

Keywords

Package Sidebar

Install

npm i dts-for-context-bridge

Weekly Downloads

1,800

Version

0.7.1

License

MIT

Unpacked Size

11.7 kB

Total Files

6

Last publish

Collaborators

  • kozack