<div dir="ltr">export ** has been suggested before, and it does seem like it would be a useful proposal to me.<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Mar 3, 2019 at 8:17 AM Jordan Harband <<a href="mailto:ljharb@gmail.com">ljharb@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><a href="https://github.com/tc39/ecma262/pull/1174" target="_blank">https://github.com/tc39/ecma262/pull/1174</a> adds `export * as someName from 'path'`; <a href="https://github.com/tc39/proposal-export-default-from" target="_blank">https://github.com/tc39/proposal-export-default-from</a> is the proposal that you're looking for.</div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Mar 1, 2019 at 6:48 AM Mike Samuel <<a href="mailto:mikesamuel@gmail.com" target="_blank">mikesamuel@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Mar 1, 2019 at 1:35 AM Cyril Auburtin <<a href="mailto:cyril.auburtin@gmail.com" target="_blank">cyril.auburtin@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr">Sometimes, (particularly in React codebases) you have to write many lines like:<div>```js</div><div>export { default as FooBar } from './FooBar';<br></div><div>```</div><div>It could be automated of course</div><div><br></div><div>It could also be tuned into </div><div>```js</div><div>export * from './FooBar';<br></div><div>```</div><div>only if FooBar is also a named export in that file, but usually files with one export just use a default export</div><div><br></div><div>------</div><div>This proposed syntax:</div><div><div>```js</div><div>export ** from './FooBar';<br></div><div>```</div></div><div>Would do:</div><div><div>```js</div><div>export * from './FooBar';<br></div><div>export { default as FooBar } from './FooBar';<br></div><div>```</div></div><div>the filename is used as default export name.</div><div><br></div><div>If the filename isn't a valid JS identifier, like 'foo-bar' for example, it would throw</div></div></div></div></blockquote><div><br></div><div>ES doesn't impose many constraints on the string content of a module specifier but in practice it maps fairly directly to a URL per <a href="https://html.spec.whatwg.org/multipage/webappapis.html#hostgetimportmetaproperties" target="_blank">https://html.spec.whatwg.org/multipage/webappapis.html#hostgetimportmetaproperties</a> so filename is probably broadly available.</div><div><br></div><div>Would this use the filename from the module specifier or from the URL (assuming import.meta.url)?</div><div>IIRC, only the module specifier is available within ES currently.</div><div>The translation between specifiers and URLs (if that happens) is up to a host callback (HostResolveImportedModule) and does not surface inside the ES engine.</div><div>That import.meta.url exists is up to another host callback so assuming it's existence might require constraining host implementations of HostGetMetaProperties(?).</div><div><br></div><div>What would this do when import.meta.url/specifier has a query part, or that look like a non-hierarchical URL?</div><div>    export ** from "path?foo=bar";</div><div>    export ** from "?foo=bar";</div><div>    export ** from "data:application/javascript+module,export default null;"</div><div><br></div><div>Does anyone know if existing CDNs use the path component for something other than the path contributed by the uploader and expect the original filename in the query, like host.cdn/path/to/tarball?p=path/within/tarball.js ?</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
</blockquote></div></div></div>
_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
</blockquote></div>
_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
</blockquote></div>