Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(transformer): Support circular interface extensions #389

Open
wants to merge 15 commits into
base: master
Choose a base branch
from

Commits on Jun 27, 2020

  1. feat(transformer): Support circular interface extensions

    Utilize constructors to support circular generics for instantiable types.
    
    If the transformer experiences circular generics, the scope descriptor parameter
    is now used to preserve a nested state to avoid looping descriptors forever. The
    scope enables the generic descriptor to determine whether to emit a new instance
    of the extension or to reuse the parent's constructor (which would emit an
    instance of the same prototype), i.e.:
    
    ```
    getFactory("@factory")([{
      i: ["@parameterId"],
      w: function () { return new function () { Object.assign(this, ɵRepository.ɵRepository.instance.getFactory("@factory")([{
        i: ["@parameterId"],
        w: function () { return new this.constructor; }
      }])); }; }
    }])
    ```
    martinjlowm committed Jun 27, 2020
    Configuration menu
    Copy the full SHA
    da1750c View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    c35347b View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    3f0bd8c View commit details
    Browse the repository at this point in the history
  4. fix(transformer): Keep a bound-state regardless of declaration keys, …

    …since such keys may be cached and reused in parallel
    
    A bound state is an indicator whether a new function instance is emitted,
    binding this in the current scope. The scope's constructor can then be
    referenced with `this.constructor` enabling a reference to the parent
    constructor.
    martinjlowm committed Jun 27, 2020
    Configuration menu
    Copy the full SHA
    086b1da View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    aa5285f View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    0b80962 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    b1cab69 View commit details
    Browse the repository at this point in the history

Commits on Jun 28, 2020

  1. Configuration menu
    Copy the full SHA
    079c3f0 View commit details
    Browse the repository at this point in the history

Commits on Jul 27, 2020

  1. Configuration menu
    Copy the full SHA
    84762b8 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    454713f View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    b8fa5ce View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    e000ef9 View commit details
    Browse the repository at this point in the history

Commits on Jul 31, 2020

  1. Configuration menu
    Copy the full SHA
    b66779a View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    a9b5013 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    8d6341f View commit details
    Browse the repository at this point in the history