Skip to content

fix(@angular/build): minimize reliance on esbuild inject to prevent code reordering #28953

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

Merged
merged 1 commit into from
Nov 25, 2024

Conversation

alan-agius4
Copy link
Collaborator

Resolved an issue where the use of esbuild's inject feature caused incorrect reordering of class structures during bundling. This reordering affected extended classes, as illustrated below:

class e extends Ur {
  constructor(n, r, i) {
    super(n, r, i);
  }
  ngOnDestroy() {
    this.flush();
  }
  static ɵfac = function (r) {
    return new (r || e)(pe(Xe), pe(Ti), pe(Di));
  };
  static ɵprov = oe({ token: e, factory: e.ɵfac });
}

var Ur = class {
  // Class properties and methods omitted for brevity
};

By reducing the reliance on inject, we ensure that the ordering of class properties and methods remains consistent, preserving the expected behavior.

Closes #28941

@alan-agius4 alan-agius4 added action: review The PR is still awaiting reviews from at least one requested reviewer target: patch This PR is targeted for the next patch release labels Nov 25, 2024
@alan-agius4 alan-agius4 requested a review from clydin November 25, 2024 09:57
@alan-agius4 alan-agius4 force-pushed the inject-removal branch 2 times, most recently from 2c41d48 to ed26df5 Compare November 25, 2024 10:10
… code reordering

Resolved an issue where the use of `esbuild`'s `inject` feature caused incorrect reordering of class structures during bundling. This reordering affected extended classes, as illustrated below:

```js
class e extends Ur {
  constructor(n, r, i) {
    super(n, r, i);
  }
  ngOnDestroy() {
    this.flush();
  }
  static ɵfac = function (r) {
    return new (r || e)(pe(Xe), pe(Ti), pe(Di));
  };
  static ɵprov = oe({ token: e, factory: e.ɵfac });
}

var Ur = class {
  // Class properties and methods omitted for brevity
};
```

By reducing the reliance on `inject`, we ensure that the ordering of class properties and methods remains consistent, preserving the expected behavior.

Closes angular#28941
@alan-agius4 alan-agius4 added action: merge The PR is ready for merge by the caretaker and removed action: review The PR is still awaiting reviews from at least one requested reviewer labels Nov 25, 2024
@clydin clydin merged commit 8f9fc59 into angular:main Nov 25, 2024
31 checks passed
@clydin
Copy link
Member

clydin commented Nov 25, 2024

The changes were merged into the following branches: main, 19.0.x

@alan-agius4 alan-agius4 deleted the inject-removal branch November 25, 2024 20:04
@angular-automatic-lock-bot
Copy link

This issue has been automatically locked due to inactivity.
Please file a new issue if you are encountering a similar or related problem.

Read more about our automatic conversation locking policy.

This action has been performed automatically by a bot.

@angular-automatic-lock-bot angular-automatic-lock-bot bot locked and limited conversation to collaborators Dec 26, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
action: merge The PR is ready for merge by the caretaker area: @angular/build target: patch This PR is targeted for the next patch release
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Error using experimentalPlatform neutral with provideAnimationsAsync
2 participants