Skip to content
This repository has been archived by the owner on Oct 9, 2020. It is now read-only.

Make this transform independent of @@global-helpers #1

Open
guybedford opened this issue Feb 1, 2017 · 5 comments
Open

Make this transform independent of @@global-helpers #1

guybedford opened this issue Feb 1, 2017 · 5 comments

Comments

@guybedford
Copy link
Member

Currently we output by using the @@global-helpers.prepareGlobal method for reading the global as defined in https://github.com/systemjs/systemjs/blob/master/src/format-helpers.js#L284.

This method does global detection as used by SystemJS based on detecting the diff of the global object and making the new globals the resultant module value if there is only one, or an object with the global names as exports if there are multiple, with this behaviour being overridden by the exports metadata.

Ideally this transformer can gain the ability to do this detection as much as possible statically, and while never completely perfect we should be able to get a 99% accuracy for this to get equal behaviour.

@guybedford
Copy link
Member Author

(this would be necessary to support the production loader use case)

@asapach
Copy link
Member

asapach commented Feb 1, 2017

I don't think this can be done statically reliably, since there are so many ways to define a global variable, and most of them are dynamic.
Inlining @@global-helpers seems more realistic, but that would bloat the output.

@guybedford
Copy link
Member Author

@asapach certainly not with the tools we have today... it's a hard problem. But hard problems are fun :P

@asapach
Copy link
Member

asapach commented Feb 1, 2017

Another option is to get rid of automatic detection and rely explicitly on exports metadata. That would make it simpler and more reliable.

@guybedford
Copy link
Member Author

@asapach that would be a good way to start certainly - when the exportName is explicitly provided, the helper shouldn't need to be used at all.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants