08:33
<Luca Casonato>

Kris Kowal: I'd like to see a proposal / document that outlines the minimum shared Module interface between expressions, instance imports, and virtualisation. I think this is:

class Module {
  get source(): %AbstractModuleSource%;
}

const mod: Module; // could come from expression, instance import, or constructor

await import(mod); // these modules are importable
new Worker(mod); // or usable as the entrypoint to a Worker
self.postMessage(mod); // and structuredClonable (transferrable) to other contexts
08:34
<Luca Casonato>
In essence, all the Module semantics minus actually getting ahold of a Module object
08:34
<Luca Casonato>

From there, we can pursue all three ways of getting ahold of a Module in parallel:

  • expressions
  • instance imports
  • constructor (this one also introduces ModuleSource)
12:52
<nicolo-ribaudo>
guybedford Luca Casonato fyi https://github.com/babel/babel/pull/15829