Skip to content

Commit

Permalink
Create funny-meals-speak.md
Browse files Browse the repository at this point in the history
  • Loading branch information
JounQin committed Dec 26, 2023
1 parent cbd284d commit e9e0095
Showing 1 changed file with 55 additions and 0 deletions.
55 changes: 55 additions & 0 deletions .changeset/funny-meals-speak.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
---
"synckit": patch
---

feat: add new `globalShims` option, what means you can env `SYNCKIT_GLOBAL_SHIMS=1` to enable auto polyfilling for some modules, for example: `fetch` from `node-fetch`, `performance` from `node:perf_hooks`.

You can also pass a custom `globalShims` option as `GlobalShim` `Array` to custom your own shims:

````ts
export interface GlobalShim {
moduleName: string
/**
* `undefined` means side effect only
*/
globalName?: string
/**
* 1. `undefined` or empty string means `default`, for example:
* ```js
* import globalName from 'module-name'
* ```
*
* 2. `null` means namespaced, for example:
* ```js
* import * as globalName from 'module-name'
* ```
*
*/
named?: string | null
/**
* If not `false`, the shim will only be applied when the original `globalName` unavailable,
* for example you may only want polyfill `globalThis.fetch` when it's unavailable natively:
* ```js
* import fetch from 'node-fetch'
*
* if (!globalThis.fetch) {
* globalThis.fetch = fetch
* }
* ```
*/
conditional?: boolean
}
````

You can aslo reuse the exported `DEFAULT_GLOBAL_SHIMS_PRESET` for extanding:

```js
import { DEFAULT_GLOBAL_SHIMS_PRESET, createSyncFn } from 'synckit'

const syncFn = createSyncFn(require.resolve('./worker'), {
globalShims: [
...DEFAULT_GLOBAL_SHIMS_PRESET,
// your own shim here
]
})
```

0 comments on commit e9e0095

Please sign in to comment.