next.js/packages/next/src/build/templates/edge-wrapper.js
edge-wrapper.js24 lines1.0 KB
// The wrapped module could be an async module, we handle that with the proxy
// here. The comma expression makes sure we don't call the function with the
// module as the "this" arg.
// Turn exports into functions that are also a thenable. This way you can await the whole object
// or  exports (e.g. for Components) or call them directly as though they are async functions
// (e.g. edge functions/middleware, this is what the Edge Runtime does).
// Catch promise to prevent UnhandledPromiseRejectionWarning, this will be propagated through
// the awaited export(s) anyway.
self._ENTRIES ||= {}
const modProm = import('MODULE')
modProm.catch(() => {})
self._ENTRIES['VAR_ENTRY_NAME'] = new Proxy(modProm, {
  get(innerModProm, name) {
    if (name === 'then') {
      return (res, rej) => innerModProm.then(res, rej)
    }
    let result = (...args) =>
      innerModProm.then((mod) => (0, mod[name])(...args))
    result.then = (res, rej) =>
      innerModProm.then((mod) => mod[name]).then(res, rej)
    return result
  },
})
Quest for Codev2.0.0
/
SIGN IN