INNER CODE UNIT · TypeScript
getPluginEntries
cloudflare/miniflare · packages/core/src/index.ts:111
function getPluginEntries<Plugins extends PluginSignatures>(
plugins: Plugins
): PluginEntries<Plugins> {
// Split plugins into entries so they're easier to iterate later on.
// Also make sure CorePlugin is always first (so other plugins can override
// built-ins, e.g. WebSocketPlugin overriding fetch to handle WebSocket
// upgrades), and BindingsPlugin (if included) is always last (so user can
// override any binding/global).
const entries = Object.entries(plugins) as PluginEntries<Plugins>;
let coreIndex = -1;
let bindingsIndex = -1;
for (let i = 0; i < entries.length; i++) {
const [, plugin] = entries[i];
// @ts-expect-error plugin has type `typeof Plugin`
if (plugin === CorePlugin) coreIndex = i;
// @ts-expect-error plugin has type `typeof Plugin`
else if (plugin === BindingsPlugin) bindingsIndex = i;
}