angular/packages/core/test
Alex Rickabaugh 38c9f08c8d refactor(core): decouple effects from change detection (#51049)
Previously effects were queued as they became dirty, and this queue was
flushed at various checkpoints during the change detection cycle. The result
was that change detection _was_ the effect runner, and without executing CD,
effects would not execute. This leads a particular tradeoff:

* effects are subject to unidirectional data flow (bad for dx)
* effects don't cause a new round of CD (good/bad depending on use case)
* effects can be used to implement control flow efficiently (desirable)

This commit changes the scheduling mechanism. Effects are now scheduled via
the microtask queue. This changes the tradeoffs:

* effects are no longer limited by unidirectional data flow (easy dx)
* effects registered in the Angular zone will trigger CD after they run
  (same as `Promise.resolve` really)
* the public `effect()` type of effect probably isn't a good building block
  for our built-in control flow, and we'll need a new internal abstraction.

As `effect()` is in developer preview, changing the execution timing is not
considered breaking even though it may impact current users.

PR Close #51049
2023-09-12 08:12:56 -07:00
..
acceptance refactor(core): delegate afterRender errors to an ErrorHandler (#51662) 2023-09-08 10:29:33 -07:00
animation refactor(core): handle #24571 todos. (#49221) 2023-06-14 12:33:44 +02:00
bundling refactor(core): decouple effects from change detection (#51049) 2023-09-12 08:12:56 -07:00
change_detection refactor(core): Cleanup for Iterable differs test. (#49598) 2023-04-04 15:13:01 -07:00
compiler build: ensure bootstrap transitive runfiles are made available (#48521) 2022-12-19 19:50:41 +00:00
debug refactor(core): handle #24571 todos. (#49221) 2023-06-14 12:33:44 +02:00
di refactor(core): remove unnecessary import for custom expect. (#51216) 2023-08-07 09:22:17 -07:00
dom refactor(core): cleanup type any (#48623) 2023-01-04 12:15:16 -08:00
hydration refactor(core): adding hydration for content projection (#49454) 2023-03-21 17:42:53 +01:00
i18n build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
linker refactor(core): decouple effects from change detection (#51049) 2023-09-12 08:12:56 -07:00
metadata refactor(core): handle #24571 todos. (#49221) 2023-06-14 12:33:44 +02:00
reflection refactor(core): remove unused logic from reflection capabilities (#45335) 2022-03-24 11:02:39 -07:00
render3 refactor(core): decouple effects from change detection (#51049) 2023-09-12 08:12:56 -07:00
sanitization refactor(core): Better use of Object.keys() (#51153) 2023-07-25 09:17:46 -07:00
signals refactor(core): switch signals to a refcounting algorithm (#51226) 2023-09-01 14:18:41 +00:00
strict_types refactor(core): rename ...WithMeta types to ...Declaration and alias to unknown (#41119) 2021-03-22 08:57:18 -07:00
testability refactor: use queueMicrotask to schedule micro tasks instead of various helpers (#50485) 2023-06-15 16:38:21 +02:00
util feat(core): add ability to transform input values (#50420) 2023-05-30 13:01:13 -07:00
zone refactor: use queueMicrotask to schedule micro tasks instead of various helpers (#50485) 2023-06-15 16:38:21 +02:00
application_config_spec.ts feat(core): add mergeApplicationConfig method (#49253) 2023-03-01 11:20:31 -08:00
application_init_spec.ts refactor(core): throw an error when APP_INITIALIZER token is not an array. (#49860) 2023-04-23 18:31:24 -07:00
application_module_spec.ts test(core): fix a crosstalk issue with locale ids (#45626) 2022-04-18 09:28:42 -07:00
application_ref_integration_spec.ts refactor(platform-browser): update renderer to be able to remove ServerRendererFactory2 and EmulatedEncapsulationServerRenderer2 (#49630) 2023-04-05 11:42:57 -07:00
application_ref_spec.ts refactor(core): handle #24571 todos. (#49221) 2023-06-14 12:33:44 +02:00
BUILD.bazel build: bundle tests for karma web test suites (#48521) 2022-12-19 19:50:42 +00:00
component_fixture_spec.ts feat(core): update reference and doc to change async to waitAsync. (#37583) 2020-08-03 12:54:13 -07:00
dev_mode_spec.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
directive_lifecycle_integration_spec.ts refactor(core): cleanup type any (#48623) 2023-01-04 12:15:16 -08:00
error_handler_spec.ts refactor(core): remove unused error handler logic (#46216) 2022-06-02 13:40:16 -07:00
event_emitter_spec.ts refactor(core): cleanup type any (#48623) 2023-01-04 12:15:16 -08:00
fake_async_spec.ts refactor(core): remove unnecessary import for custom expect. (#51216) 2023-08-07 09:22:17 -07:00
forward_ref_integration_spec.ts refactor(core): handle #24571 todos. (#49221) 2023-06-14 12:33:44 +02:00
runtime_error_spec.ts refactor(core): improve error message when dom node is not found (#49977) 2023-04-25 09:29:47 -07:00
test_bed_effect_spec.ts refactor(core): decouple effects from change detection (#51049) 2023-09-12 08:12:56 -07:00
test_bed_spec.ts refactor(core): update TestBed to handle async component metadata (#51182) 2023-08-15 11:32:09 -07:00
transfer_state_spec.ts refactor(core): simplify state transfer escaping (#50201) 2023-05-10 11:31:34 -07:00
util_spec.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00